0

我正在使用 discord.py 在 Python 中制作一个 Discord 机器人,并且我正在实现一个 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 通常也需要一个文件来播放音频,但我使用的补丁允许我播放字节和类似字节的对象,所以这也得到了照顾。我只需要上面代码的帮助。感谢所有帮助。谢谢!

4

1 回答 1

0

pyttsx模块有一个save_to_file方法,我建议您改用它,并且关于您的代码........您是否将音频转换为字节?代码只是说出运行代码的主机中的文本,并将空字节写入文件。这就是文件为 0 字节的原因,它实际上从未将音频写入其中。

用法:

import pyttsx3
engine = pyttsx3.init()
engine.save_to_file('Hello World' , 'test.mp3')
engine.runAndWait()

在您使用的代码中,fileData = bytes() 但在字节内您没有传递任何内容,所以您如何期望 filedata 变量具有任何内容,并且作为回报,输出文件也是空的。

于 2021-01-13T16:46:16.460 回答