2

我有以下设置。一个 pygame 窗口,它使用 event.keyDown 读取键盘输入,并在按下右箭头键时显示一些文本。除此之外,显示的文本必须由 eSpeak 朗读。我正在使用 pyttsx 模块执行此操作。当有较长的文本块时,例如一行或一个句子,eSpeak 语音场景在它可以说出完整的文本之前就被打破。这是我尝试过的几件事。试验 1:我尝试将 engine.say() 和 engine.runAndWait() 函数调用放在不同的函数中并返回金条值。我后来检查了金条值是否为真,然后继续在 pygame 窗口上显示文本。

试验 2:在调用具有 engine.say() 和 engine.runAndWait() 函数的方法后,我使用 timer.sleep() 函数引入了 2 秒的延迟。

试验 3:我将 engine.say() 和 engine.runAndWait() 函数调用放在主函数中(我之前调用该方法的地方)。

这些都没有导致 eSpeak 完全说出更长的文本块。

我还尝试使用 pyttsx 库在单独的 python 解释器中说出文本,它工作正常。

4

1 回答 1

1

我已经为我的项目尝试了 pyttsx。

样本 :

def speak(arg):
    import pyttsx
    engine = pyttsx.init()
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate-5)
    engine.say(arg)
    engine.say("   ")
    engine.runAndWait()

speak("The quick brown fox jumped over the lazy dog.")
speak("okay,alright .")
speak("I have a sound !")
于 2016-12-02T04:06:16.847 回答