1

画面に出力するときに単語のリストを読み取るスクリプトを書きたいと思います。

import pyttsx

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

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

ただし、上記を実行すると、「ここ」以外のすべての単語が短くなります。「ここで [一時停止] アルソテヲ」のような音が聞こえます。

unindentengine.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 に答える