2016-12-29 3 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를 사용하면 분당 단어로 엔진의 말하기 속도를 설정할 수 있습니다. 또한 짧은 파이썬 스크립트를 쉽게 작성하여 단어/구문에 몇 개의 음절이 들어 있는지 확인할 수 있습니다.

연설 속도를 설정 한 다음 말하는 엔진에 어떤 문구가 주어 졌는지에 관계없이 일정한 시간의 음절이 동일한 시간이 걸리는 지 확인하십시오. 그렇게하면 얼마나 많은 음절인지 알면 특정 문구의 길이를 "추정"할 수 있습니다.

+0

질문에 답변이있는 경우 해결 된 것으로 표시하는 것이 좋습니까? – SashaZd