如何直接在python中播放声音?
How do you play sound directly in python?
我正在尝试寻找在 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()
这returns一个错误:
The specified device is not open or is not recognized by MCI.
注意:除了 gTTS 之外,该解决方案不必使用上述任何模块。只要speak
功能可以反复使用,不保存任何文件就可以了。
您应该使用 pyttsx3
而不是 gtts
。不需要保存语音片段,因为语音会在运行时直接播放。您可以在此处找到详细信息:https://pypi.org/project/pyttsx3/
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()
我正在尝试寻找在 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()
这returns一个错误:
The specified device is not open or is not recognized by MCI.
注意:除了 gTTS 之外,该解决方案不必使用上述任何模块。只要speak
功能可以反复使用,不保存任何文件就可以了。
您应该使用 pyttsx3
而不是 gtts
。不需要保存语音片段,因为语音会在运行时直接播放。您可以在此处找到详细信息:https://pypi.org/project/pyttsx3/
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()