我有以下设置。一个 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 解释器中说出文本,它工作正常。