私はフレーズのリストを持っており、各フレーズが一定のレートでどれくらいの時間を取るかを知りたいので、ある期間にわたってそれらを均等に広げることができます。pyttsxで話すのにどれくらいの時間がかかるのでしょうか?
私は現在、started-utterance
とfinished-utterance
を活用して、各フレーズを話して、どれくらい時間がかかるか記録しています。これにはもちろん、アプリケーションのロード時にはすべてのフレーズを話さなければならない、またはロードして結果をディスクに保存する必要があります。フレーズのリストが変更された場合は無効になります。
import pyttsx
from datetime import datetime
import time
phrases = ['long sentence', 'medium sentence', 'short sentence', 'word']
phrase_lengths = {phrase: 0 for phrase in phrases}
start_time = None
end_time = None
def onStart(name):
global start_time
start_time = datetime.now()
def onEnd(name, completed):
global start_time
global end_time
end_time = datetime.now()
print name, "took", end_time - start_time
phrase_lengths[name] = end_time - start_time
engine = pyttsx.init()
engine.connect('started-utterance', onStart)
engine.connect('finished-utterance', onEnd)
def speak(engine, rate, phrase):
engine.setProperty('rate', rate)
engine.say(p, p)
engine.runAndWait()
for phrase in phrases:
speak(engine, 120, phrase)
time.sleep(3.0)
あなたの質問に答えた場合は、解決済みとマークすることを検討してください。 – SashaZd