2016-06-29 3 views
-1

le problème est que quand je lance mon script, il prend plus de temps que le temps prévu 1 seconde avant qu'il dit la commande suivante. Je pense que cela a quelque chose à voir avec la commande vocale. Que puis-je faire pour optimiser cela?comment optimiser script pour avoir 1 seconde entre les mots prononcés en utilisant le module vocal

edit: lien vers le module sppech https://pypi.python.org/pypi/speech/0.5.2

de Edit2: par demande i mesuré le temps de sommeil en utilisant uniquement datetime. 29/06/2016 18: 39: 42,953000 29/06/2016 18: 39: 43,954000 je l'ai trouvé qu'il était assez précis

EDIT3: J'ai essayé la construction dans win32com.client l'importation et cela n'a pas fonctionné non plus

import speech 
import time 
import os 

def exercise1(): 
    speech.say("exercise1") 
    time.sleep(0.5) 
    for n in range(0, rep*2): 
     speech.say("1") 
     t ime.sleep(1) 
     speech.say("2") 
     time.sleep(1) 
     speech.say("3") 
     time.sleep(1) 
     speech.say("switch") 
+3

capture le temps du système avant/après le mot() appels. vous trouverez probablement le sommeil TAHT est à peu près exactement 1 seconde et l'appel par exemple() est l'un des durati variables sur. –

+0

pouvez-vous me laisser entendre comment faire et ouais je pense que vous avez raison edit: je suis arrivé ceci: 29/06/2016 18: 39: 42,953000 29/06/2016 18: 39: 43,954000 donc presque parfaitement 1 seconde comment puis-je réparer le discours alors? – rasmus393

Répondre

0

Adresser le poste ici How accurate is python's time.sleep()?

Il dit:

« la précision de la fonction time.sleep Depen ds sur la précision de votre sous-jacente précision de sommeil OS. Pour OS non en temps réel est comme un stock Windows, le plus petit intervalle, vous pouvez dormir est d'environ 10-13ms. J'ai vu sommeils précis à quelques millisecondes de ce moment-là où au-dessus des 10-13ms minimum. »

+0

à cause de l'autre gars recomendation j'ai essayé de measusre le temps de sommeil pour trouver qu'il est assez précis 1 seconde – rasmus393

0

Comme vous le dites dans les commentaires, le sommeil (1) est assez précisément 1s.

Qu'est-ce que vous voulez à faire pour chaque partie de prendre 1s, est temps que le « dire » appel, puis attendre le temps restant pour remplir le deuxième Quelque chose comme ceci:.

start = time.time() 
speech.say("whatever") 
end = time.time() 
sleep(1 - (end - start)) # Wait however long will bring the time up to 1 second total 
+0

ty i havent pensée à ce sujet réellement nest pas toujours va correspondre mais ty je pense que c'est le meilleur ça va être – rasmus393

+0

@ rasmus393 Si une réponse a été utile ou résolu votre problème, je vous encourage à accepter (pas nécessairement le mien!) – mbrig

+0

est-il infliger une amende est juste ou helpfull-t-il pour résoudre mon problème. ne pas être – rasmus393