我正在尝试找到在python中播放声音而不下载任何声音文件的最佳方法(例如,使用带有tempfile
的临时文件)。这用于使用speak
的gTTS
函数;我已经想出了一种将语音文件保存到NamedTemporaryFile
对象的解决方案。我遇到的麻烦是尝试播放它。
from gtts import gTTS
from tempfile import TemporaryFile
def speak(text, lang = 'en'):
gTTS(text = text, lang = lang).write_to_fp(voice := TemporaryFile())
#Play voice
voice.close()
我只需要在这里替换
#Play voice
的东西,这就是我尝试的解决方案:from gtts import gTTS
from tempfile import NamedTemporaryFile
from playsound import playsound
def speak(text, lang = 'en'):
gTTS(text = text, lang = lang).write_to_fp(voice := NamedTemporaryFile())
playsound(voice.name)
voice.close()
这将返回错误:
The specified device is not open or is not recognized by MCI.
注意:该解决方案无需使用gTS以外的上述任何模块。只要speak
函数可以重复使用且不保存任何文件,就足够了。 最佳答案
您应该使用pyttsx3
而不是gtts
。无需保存语音剪辑,因为语音将在运行时直接播放。您可以在此处找到详细信息:https://pypi.org/project/pyttsx3/
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()