如何直接在python中播放声音?

How do you play sound directly in python?

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