我正在用Python语言和discord.py制作一个不和谐的机器人,并且我正在实现一个tts命令。基本上,我有一个函数将我获得的音频数据保存到一个字节类型变量,然后(出于测试目的)将其写入一个文件。代码如下:
def speak(text):
engine.setProperty("rate", 150)
engine.say(text)
engine.runAndWait()
fileData = bytes()
filePath = './sound.mp3'
engine.save_to_file(text, fileData)
engine.runAndWait()
with open(filePath, 'w+b') as f:
f.write(fileData)
f.close()
print("Wrote to file")
return os.path.abspath(filePath)
但是,说到底,sound.mp3是0字节,Python解释器也不会抛出任何错误或警告。您可以说我可以直接写入文件,但这里的目标是将其存储在内存中,以便减少对我的Raspberry Pi的SD的消耗(这就是我托管机器人的地方)。Discord.py通常也需要一个文件来播放音频,但我使用的是一个补丁,它允许我播放字节和类似字节的对象,所以这也得到了解决。我只需要上述代码的帮助。感谢所有的帮助。谢谢!
发布于 2021-01-14 00:46:16
pyttsx
模块有一个save_to_file
方法,我建议你改用它,关于你的代码.你要把音频转换成字节吗?代码只是说出运行代码的主机中的文本,并向文件中写入空字节。这就是为什么文件是0字节的原因,它实际上从来没有将音频写入其中。
用法:
import pyttsx3
engine = pyttsx3.init()
engine.save_to_file('Hello World' , 'test.mp3')
engine.runAndWait()
在您的代码中,您使用了fileData = bytes()
,但是在字节中,您没有传递任何内容,那么如何期望filedata变量有任何内容,并且输出文件也是空的。
https://stackoverflow.com/questions/65705669
复制相似问题