J'ai une liste de phrases, et je veux savoir combien de temps chaque phrase prendra à un rythme donné, de manière dynamique, afin que je puisse les étaler uniformément sur une certaine période de temps.Est-il possible de déduire combien de temps une phrase prendra pour parler en pyttsx?
J'utilise actuellement started-utterance
et finished-utterance
pour le chronométrer, en parlant chaque phrase et en enregistrant le temps qu'il faut. L'inconvénient de ceci est bien sûr que je dois parler chaque phrase sur la charge de l'application, ou le faire avant de charger et d'enregistrer les résultats sur le disque, ce qui serait invalidé si la liste des phrases changeait.
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)
Si cela répond à votre question, envisagez-vous de le marquer comme résolu? – SashaZd