是否可以推断一个短语在pyttsx中发言的时间长短?

时间:2016-12-29 20:26:36

标签: python 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 个答案:

答案 0 :(得分:1)

API文档中没有任何具体内容可以直接回答您的问题。但是,这是一个应该有效的测试。

Pyttsx允许您以每分钟的单词设置引擎的语速。此外,您可以轻松编写一个简短的Python脚本,以查看单词/短语包含多少个音节。

我建议您设置语速,然后查看恒定数量的音节是否花费相同的时间,而不管发动机说的是什么短语。一旦你这样做,你将能够“估计”如果你知道它有多少音节,一个特定的短语可以说多长时间。