首页 > 解决方案 > 如何使用 pyttsx3 库保存到文件?

问题描述

我想使用 pyttsx3 将文本离线转换为语音,并且我想将输出保存到音频文件中。

我已经看到了这个问题,第一个答案正是我所需要的。我只是无法让它发挥作用。

运行时:

import pyttsx3
tts = pyttsx3.init()
tts.setProperty('voice', tts.getProperty('voice')[1])
tts.save_to_file("What an amazing day today! I'm gonna go for a swim.", "./filename.mp3")
tts.runAndWait()

它不会给我一个错误,它只是不输出任何东西并且不创建文件。我的其余部分应该是正确的,因为如果我这样做:

import pyttsx3
tts = pyttsx3.init()
tts.setProperty('voice', tts.getProperty('voice')[1])
tts.say("What an amazing day today! I'm gonna go for a swim.")
tts.runAndWait()

一切正常。

我希望代码的最高位输出到文件,相反,它什么也不做。我正在运行 Windows 10,最新更新。Python 3.7.4 32-bit 和 pyttsx3 2.71 版本 感谢您的帮助!

哦,还有一件事,我知道 save_to_file 的输出很可能不是 mp3,但我不知道它会是什么,我下一步需要它在 mp3 中,所以这就是我所说的。如果我尝试将文件扩展名设置为其他内容,它的运行方式相同。

标签: pythonwindowspyttsx

解决方案


save_to_file 是 pyttsx3.engine.Engine 类中的函数之一,但是它尚未经过测试并且不提供输出。如果你从 python 命令行运行它,它会给你属性错误,说 str 对象没有属性代理。

这是由于 ivar self.proxy 中的 driverProxy 而我认为到目前为止没有任何 driverName 会解决它,因为这实际上是在调用 waekref.proxy,我认​​为这就是 save_to_file 在文档中从未像其他函数一样提及的原因。

我已将此错误发布到 github 并等待 answer.lets 等到那时:-)


推荐阅读