对于我的程序,我需要一个由Google文字转语音转换的文字字段。
我找到了一个可以很好地做到这一点的API(gTTS
,docs),但是我确实需要找到一种播放音频而不将其保存为本地文件的方法。
此刻我的代码是这样的(我从AudioSegment
导入了pydub
):
FileToPlay = io.BytesIO()
tts = gTTS(SecondText, lang = SecondLanguageVoice)
tts.write_to_fp(FileToPlay)
FileToPlay.read()
SoundToPlay = AudioSegment.from_mp3(io.BytesIO(FileToPlay))
play(SoundToPlay)
但是,变量类型不是预期的类型,因为会带来以下错误:
TypeError: a bytes-like object is required, not '_io.BytesIO'
我试图查看是否可以将变量转换为类似字节的对象,但到目前为止我什么都没找到。有没有什么?
最佳答案
对于您有关转换为类似字节的对象的问题,我没有任何答案。但是直接播放可以通过使用pyglet完成
我写了以下几行,以便您自己进行测试!
from gtts import gTTS
from io import BytesIO
import pyglet
myMP3 = BytesIO()
tts = gTTS(text='Sound Check 1, 2, 3!', lang='en', slow=False)
tts.write_to_fp(myMP3)
myMP3.seek(0)
test = pyglet.media.load(None, file=myMP3, streaming=False)
test.play()
pyglet.app.run()