Можно ли сделать вывод, сколько времени займет фраза, чтобы говорить в 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)

1 ответ

В документации API нет ничего конкретного, чтобы ответить вам напрямую. Тем не менее, вот тест, который должен работать.

Pyttsx позволяет вам установить скорость речи двигателя в словах в минуту. Кроме того, вы можете легко написать короткий скрипт на Python, чтобы увидеть, сколько слогов содержит слово / фраза.

Я предлагаю вам установить скорость речи, а затем посмотреть, занимает ли постоянное количество слогов одинаковое количество времени, независимо от того, какую фразу произносит движок. Сделав это, вы сможете "оценить", сколько времени может занять конкретная фраза, если вы знаете, сколько у нее слогов.

Другие вопросы по тегам