我的问题从这里开始:
gTTS运行良好,从文本文件中获取文本,但首先创建mp3文件,然后如果我想听,我必须调用这个mp3,所以它很好,但如果我可以避免任何音频文件会更好,并得到只是从文本文件中读取。也许不知何故,我可以使用谷歌语音从文本文件中读取..?无论如何,现在的主要问题是其他如果我只能使用gTTS在Windows 10-64位上播放mp3的最佳方法是什么,Python 3.5
确定os:
import os
os.startfile("D:\my path/rec1.mp3")
很好,但我不想使用默认播放器,需要像simpleaudio这样的mp3 ...
与pygame我有安装问题,不确定,这样使用有多好:
from pygame import mixer
mixer.init()
mixer.music.load('D:/my path/rec1.mp3')
mixer.music.play()
vlc只是如何安装它? easy_install vlc
我收到了错误:could not find suitable distribution for requirement.parse ('vlc')
和pip install vlc
错误:could not find a version that satisfies the requirement vlc (from versions: ) no matching distribution found for vlc
import vlc
p = vlc.MediaPlayer("file:/my path/rec1.mp3")
p.play()
p.stop()
使用pyglet:
import pyglet
music=pyglet.media.load('D:/my path/rec1.mp3')
music.play()
pyglet.app.run()
我收到了这个错误:
'AVbin is required to decode compressed media')
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media
子进程也使用默认播放器:
import subprocess
sound_program = "path to player"
sound_file = "D:/my path/rec1.mp3"
subprocess.call([sound_program, sound_file])
使用mp3play,不知道如何使用它:
import mp3play
filename = (r'D:\my path/rec1.mp3')
clip = mp3play.load(filename)
clip.play()
我试过这种方式:
filename = ('D:\my path/rec1.mp3')
这样:
filename = r'D:\my path/rec1.mp3'
在所有情况下我都收到错误:
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py", line 18, in <module>
import mp3play
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\mp3play\__init__.py", line 4, in <module>
from .windows import AudioClip as _PlatformSpecificAudioClip
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\mp3play\windows.py", line 27
print 'Error %s for "%s": %s' % (str(err), txt, buf)
^
SyntaxError: invalid syntax
好的,使用pydub:
from pydub import AudioSegment
from gtts import gTTS
import simpleaudio as sa
blabla = ('my voice')
tts = gTTS(text=blabla, lang='en')
tts.save("D:/my path/rec.mp3")
rec = AudioSegment.from_mp3("D:\my path\rec.mp3")
rec.export("rec.wav", format="wav")
#rec = AudioSegment.ffmpeg ("D:\my path\rec.mp3")
#rec.export("rec.wav", format="wav")
#rec = AudioSegment.converter ("D:\my path\rec.mp3")
#rec.export("rec.wav", format="wav")
wave_obj = sa.WaveObject.from_wave_file('D:/my path/rec.wav'')
play_obj = wave_obj.play()
play_obj.wait_done()
序列中的错误首先使用AudioSegment.from_mp3
:
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File " D:/dt/PyCharm_project/0_ASK.py", line 9, in <module>
rec = AudioSegment.from_mp3("D:\my path\rec.mp3")
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\audio_segment.py", line 438, in from_mp3
return cls.from_file(file, 'mp3')
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\audio_segment.py", line 366, in from_file
file = _fd_or_path_or_tempfile(file, 'rb', tempfile=False)
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pydub\utils.py", line 59, in _fd_or_path_or_tempfile
fd = open(fd, mode=mode)
OSError: [Errno 22] Invalid argument: 'D:\my path\rec.mp3'
AudioSegment.ffmpeg
:
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py ", line 12, in <module>
rec = AudioSegment.ffmpeg ("D:\my path\rec.mp3")
TypeError: 'str' object is not callable
AudioSegment.converter
:
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "D:/dt/PyCharm_project/0_ASK.py", line 15, in <module>
rec = AudioSegment.converter ("D:\my path\rec.mp3")
TypeError: 'str' object is not callable
不确定webbrowser,但如何安装呢?
import webbrowser
webbrowser.open("D:/my path/rec1.mp3")
答案 0 :(得分:4)
这里的问题相同。它适用于playsound 1.2.1。
安装时:
$ pip install playsound
测试:
>>>from playsound import playsound
>>>playsound('/path/to/a/sound/file/you/want/to/play.mp3')
答案 1 :(得分:3)
您可以使用“子流程”。
from subprocess import call
from gtts import gTTS
import os
blabla = input('Type IN: ')
tts = gTTS(text=blabla, lang='en')
tts.save("test.mp3")
call(["vlc", "test.mp3"])
该程序要求用户键入任何内容,并且它会说trough vlc 我在Linux上使用它,但如果它适用于Windows,我现在不使用它。
答案 2 :(得分:2)
与pygame我有安装问题,不确定,这样使用有多好:
您能否提供有关 pygame 安装错误的更多详细信息?
我能够将 PYGAME 与此代码一起使用,其中&#34; hello.mp3&#34;是同一目录中的文件
from gtts import gTTS
tts = gTTS(text='Hello', lang='en')
tts.save("hello.mp3")
from Tkinter import *
root = Tk()
from pygame import mixer
mixer.init()
mixer.music.load('hello.mp3')
mixer.music.play()
root.mainloop()
vlc只是如何安装它?
我还使用了 VLC 。我用这些命令安装了它:
sudo pip install python-vlc
我收到了这个错误:
NameError: no function 'libvlc_new
所以,我尝试了命令:
sudo apt-get install vlc
它使用了这段代码:
from gtts import gTTS
tts = gTTS(text='Hello', lang='en')
tts.save("hello.mp3")
from Tkinter import *
root = Tk()
import vlc
p = vlc.MediaPlayer("hello.mp3")
p.play()
root.mainloop()
希望它能帮到你。
答案 3 :(得分:2)
这将完成工作,无需文件:
def say(text, lang='en'):
""" Speak the provided text.
"""
import pygame
from gtts import gTTS
import io
tts = gTTS(text=text, lang=lang, slow=False)
pygame.mixer.init()
pygame.init() # this is needed for pygame.event.* and needs to be called after mixer.init() otherwise no sound is played
with io.BytesIO() as f: # use a memory stream
tts.write_to_fp(f)
f.seek(0)
pygame.mixer.music.load(f)
pygame.mixer.music.set_endevent(pygame.USEREVENT)
pygame.event.set_allowed(pygame.USEREVENT)
pygame.mixer.music.play()
pygame.event.wait() # play() is asynchronous. This wait forces the speaking to be finished before closing f and returning
答案 4 :(得分:1)
我认为你在寻找:
它是一个与python3和python2兼容的离线跨平台TTS。
pip install pyttsx3
如果你想要一个与gTTS不同的python离线TTS,我认为pyttsx3是你最好的选择。
答案 5 :(得分:1)
您可以使用playound模块
from playsound import playsound
playsound(file.mp3)
热衷于它。它播放音频正确的方式就像魅力一样
答案 6 :(得分:0)
我不知道所有问题的解决方案,但您与pydub的问题在于您没有安装ffmpeg或avconv。 pydub github上有说明:
视窗:
- 从此处提供的Windows二进制文件中下载并解压缩libav。
- 将libav / bin文件夹添加到PATH envvar
- pip install pydub
醇>
答案 7 :(得分:0)
webbrowser
应该是标准python安装的一部分。
检查webbrowser.py
下是否有C:\Your_Python_Folder\Lib
。
下面的代码对我来说很好,因为webbrowser.py
出现在上面提到的文件夹中。
import webbrowser
webbrowser.open("rec.mp3")
答案 8 :(得分:0)
使用python -m pip install pyglet
下载安装在这里Link to AVbin setup (这是必须的)
32/64位
import pyglet
song = pyglet.media.load('file.mp3')
song.play()
pyglet.app.run()
就是这样。
答案 9 :(得分:0)
import os
os.system("music.mp3")
答案 10 :(得分:0)
如果你在Windows上,那么这应该可以胜任,
import winsound
winsound.PlaySound('your_file.mp3',winsound.SND_FILENAME)
请记住,这个包只出现在python for windows中。
答案 11 :(得分:0)
如果发生AVbin错误...
首先下载AVbin.exe并安装它 然后转到本地磁盘C-> Windows-> System32->搜索Avbin.dll并复制该文件 然后将该特定文件粘贴到您的根目录中
错误将消失