2016-12-29 4 views
0

私はフレーズのリストを持っており、各フレーズが一定のレートでどれくらいの時間を取るかを知りたいので、ある期間にわたってそれらを均等に広げることができます。pyttsxで話すのにどれくらいの時間がかかるのでしょうか?

私は現在、started-utterancefinished-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) 

答えて

1

あなたに直接お答えするためのAPIドキュメントの具体的な内容はありません。しかし、ここではうまくいくはずのテストです。

Pyttsxでは、エンジンのスピーチレートを1分あたりの単語数で設定できます。さらに、簡単なPythonスクリプトを書いて、単語/句に含まれる音節の数を確認することもできます。

スピーチレートを設定して、話すエンジンにどのフレーズが与えられているかにかかわらず、一定の音節数になるかどうかを確認することをお勧めします。いったんこれを行うと、いくつの音節があるか知っていれば、特定のフレーズがどれくらいの期間、「推定する」ことができます。

+0

あなたの質問に答えた場合は、解決済みとマークすることを検討してください。 – SashaZd

関連する問題