【发布时间】:2020-02-27 03:17:06
【问题描述】:
我正在尝试寻找在 Python 中播放声音而不下载任何声音文件的最佳方式(例如,使用带有tempfile 的临时文件)。这是针对使用gTTS 的speak 函数;我已经想出了将语音文件保存到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.
注意:除了 gTTS 之外,该解决方案不必使用上述任何模块。只要speak函数可以重复使用,不保存任何文件,就足够了。
【问题讨论】:
-
问题中发布的代码适用于 Python 3.9。 OP 在 Windows 中似乎存在 ENV 问题。
标签: python audio gtts python-playsound