我想用音频和文本进行聊天机器人的回复。
所有使用gTTS的示例代码似乎都需要“将文本保存到文件中然后播放文件”。
是否还有另一种方法来简化此过程,例如使用gTTS自动播放“来自聊天机器人的响应”?
答案 0 :(得分:1)
您也可以使用 playsound 库。
>>>import playsound
>>>playsound.playsound('sound.mp3')
有关 playsound 的更多信息。请访问 Playsound Docs。
答案 1 :(得分:0)
如果您简短地看一下the docs,您会发现,在三个示例中,只有其中一个要求您调用save
,而第三个示例专门称为“播放声音直接”。
因此,只需执行该示例中的操作,但用字符串代替文字'hello'
:
>>> from gtts import gTTS
>>> from io import BytesIO
>>>
>>> my_variable = 'hello' # your real code gets this from the chatbot
>>>
>>> mp3_fp = BytesIO()
>>> tts = gTTS(my_variable, 'en')
>>> tts.write_to_fp(mp3_fp)
但是请注意,gTTS并未配备MP3播放器;您需要一个单独的音频库来播放mp3_fp
缓冲区:
>>> # Load `audio_fp` as an mp3 file in
>>> # the audio library of your choice
正如文档所说,有很多这样的库,而Stack Overflow并不是获取库建议的好地方。我碰巧安装了一个名为musicplayer
的库,并在此处可以轻松地修改示例应用程序,但是从长远来看,它可能不是最简单的(它是为执行更强大的低级任务而设计的) :
>>> import musicplayer
>>> class Song:
... def __init__(self, f):
... self.f = f
... def readPacket(self, size):
... return self.f.read(size)
... def seekRaw(self, offset, whence):
... self.f.seek(offset, whence)
... return f.tell()
>>> player = musicplayer.createPlayer()
>>> player.queue = [Song(mp3_fp)]
>>> player.playing = True
答案 2 :(得分:0)
如果你想一次又一次地调用speak函数而没有任何错误。
基本上,这达到了目的。
from gtts import gTTS
import os
import playsound
def speak(text):
tts = gTTS(text=text, lang='en')
filename = "abc.mp3"
tts.save(filename)
playsound.playsound(filename)
os.remove(filename)