1

我想编写一个脚本,它会在将单词打印到屏幕时读取单词列表。

import pyttsx

engine = pyttsx.init()
words = ["here","are","some","test","words"]

for i in words:
    engine.say(i)
    print i
    engine.runAndWait()

然而,在运行上面的过程中,除了“这里”之外的所有单词都被缩短了。我听到类似“这里[暂停] ar-so-te-wo-”的声音

如果我 unindent engine.runAndWait(),则在循环完成后说出这些话。当我这样做时,它们不会被切断,但是,当然,它们不会在打印的同时被说出来。

我正在运行 Ubuntu 14.04.2

4

2 回答 2

2

你想要的是打印单词,如何使用回调,使用pyttsx.Engine.connect

import pyttsx


def cb(name):
    print(name)

engine = pyttsx.init()
engine.connect('started-utterance', cb)
for word in ["here", "are", "some", "test", "words"]:
    engine.say(word, name=word)

engine.runAndWait()
于 2015-11-11T07:07:03.957 回答
1

这已经晚了几年,但是使用engine.startLoop(False)engine.iterate()遵循文档中的“外部事件循环”示例为我完成了这项工作。

import pyttsx
import time

engine = pyttsx.init()
words = ["here","are","some","test","words"]

engine.startLoop(False)
for i in words:
    engine.say(i)
    engine.iterate()
    print i
    while engine.isBusy(): # wait until finished talking
        time.sleep(0.1)

engine.endLoop()
于 2019-03-31T18:57:10.360 回答