我正在尝试找到在python中播放声音而不下载任何声音文件的最佳方法(例如,使用带有tempfile的临时文件)。这用于使用speakgTTS函数;我已经想出了一种将语音文件保存到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()

09-20 12:31