2016-12-29 1 views
0

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) 

Répondre

1

La documentation de l'API n'a rien de spécifique à vous répondre directement. Cependant, voici un test qui devrait fonctionner.

Pyttsx vous permet de définir le débit de la parole du moteur en mots par minute. De plus, vous pouvez facilement écrire un court script Python pour voir combien de syllabes contient un mot/une phrase.

Je vous suggère de définir le débit vocal, puis de voir si un nombre constant de syllabes prend le même laps de temps, quelle que soit la phrase donnée au moteur pour parler. Une fois que vous faites cela, vous serez en mesure d '"estimer" combien de temps une phrase particulière peut prendre pour dire si vous savez combien de syllabes il a.

+0

Si cela répond à votre question, envisagez-vous de le marquer comme résolu? – SashaZd