【问题标题】:Python comtypes text-to-speech failing silentlyPython comtypes text-to-speech 静默失败
【发布时间】:2015-05-23 07:00:47
【问题描述】:

我正在使用以下代码将文本转语音音频保存到文件中:

from comtypes.client import CreateObject
from comtypes.gen import SpeechLib

engine = CreateObject("SAPI.SpVoice")
stream = CreateObject("SAPI.SpFileStream")
stream.Open('audio.mp3', SpeechLib.SSFMCreateForWrite)
engine.AudioOutputStream = stream
engine.speak(text)
stream.Close()

有时,创建的文件无法播放并且大小可能为零 - 尽管不会发生错误。我找到了一个在其中一次失败期间使用的输入文本示例(此处包含的时间太长),结果是可重现的,但它没有明显有问题的功能。

我无法找出如何检测上述代码中的错误或确定可能导致问题的原因。理想情况下,我想解决问题,但检测问题以使我能够处理它就足够了。我怎样才能做到这一点?

【问题讨论】:

  • 好吧,text 没有定义。我假设它在您的代码中?
  • 是的,text 是在我的代码中定义的 - 这是一个 sn-p。

标签: python python-2.7 text-to-speech comtypes


【解决方案1】:

嗯,我不知道为什么它默默地失败了,但是当我运行它时,它提出了: ImportError: Cannot import name SpeechLib.

然后我去了值得信赖的 ole Google,发现了这个 SO 问题:

Can't save to wav from python, can't import SpeechLib from comtypes.gen, what next?

所以你的代码应该是这样的:

from comtypes.client import CreateObject

text="Hi there, how are you?"
engine = CreateObject("SAPI.SpVoice")
stream = CreateObject("SAPI.SpFileStream")
from comtypes.gen import SpeechLib
stream.Open('audio.mp3', SpeechLib.SSFMCreateForWrite)
engine.AudioOutputStream = stream
engine.speak(text)
stream.Close()

这有效并保存了一个 audio.mp3 文件。

【讨论】:

  • 感谢您的意见。我的代码在 99% 以上的情况下都可以正常工作,并且不会产生您描述的错误。但是,有时音频文件损坏了,我不知道如何修复。
  • 回想起来,我记得当我第一次安装 comtypes 库时,我确实使用了 SO question/answer you link。但是,在运行一次代码后,我可以像我的问题一样使用代码而不会出错。
  • 我遇到了类似的错误,该错误已通过安装特定版本pip install pyttsx3==2.6得到修复
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 2021-05-04
  • 2019-11-14
  • 1970-01-01
  • 2023-01-29
相关资源
最近更新 更多