2017-08-09 4 views
-1

Dieses Programm ist nicht abgeschlossen, aber es wird noch gearbeitet.Python-Spracherkennungsprogramm neigt sich an einem bestimmten Ort zu hängen

import speech_recognition as sr 
import subprocess as sp 
import time, os 
r = sr.Recognizer() 
print("Voice Recognition Software\n\n******************************************************************************\n") 

while True: 
    r.energy_threshold = 8000 
    t = None 
    with sr.Microphone() as source: 
     success = False 
     print (">") 
     audio = r.listen(source) 
     try: 
      print("Processing...") 
      t = r.recognize_google(audio) 
      print (": " + t) 
     except sr.UnknownValueError: 
      print("Unknown input") 
      continue 
     except sr.RequestError as e: 
      print("An error occured at GAPI\nA common cause is lack of internet connection") 
      continue 

     if "open" in t: 
      t = t.replace("open","") 
      t = t.replace(" ","") 
      t = t + ".exe" 
      print (t) 

      for a,d,f in os.walk("C:\\"): 
       for files in f: 
        if files == t.lower() or files == t.capitalize() or files == t.upper(): 
         pat = os.path.join(a,files) 
         print (pat) 
         sp.call([pat]) 
         success = True 

     if success == True: 
      continue 

Das Problem, das ich mit Blick auf bin ist, dass nach > oder Processing das Programm manchmal nicht mehr reagiert. Keine Fehlermeldungen oder irgendetwas, in der Shell druckt es nur > oder Processing und bleibt dort.

Dies geschieht zufällig, das Programm kann für eine lange Zeit kontinuierlich funktionieren, aber zu irgendeinem Zeitpunkt, aus welchem ​​Grund auch immer, friert es ein. In der Regel nach einer Minute oder 2 geht es auf den nächsten Teil und reagiert wieder, aber das ist nicht immer der Fall.

Ich habe versucht, eine Art Fail-Safe zu erstellen, wenn es zu lange dauert, um zu reagieren, schließt das Programm und öffnet wieder, aber ich war damit nicht erfolgreich, so dass ich jetzt versuche, die Ursache des Problems herauszufinden Problem.

Kann jemand mit Erfahrung mit dieser Art von Dingen mir helfen zu verstehen, warum das passiert?

Edit:

Ich war in der Lage, das Problem zu lösen. Stellt sich heraus, dass hier ein Timeout-Parameter r.listen(source) ist.

+0

Wenn Sie eine Antwort haben, ist es besser, sie in Antworten zu setzen, nicht in der Frage selbst. –

Antwort

0

Ich konnte das Problem lösen. Stellt sich heraus, dass hier ein Timeout-Parameter r.listen(source) ist.

Verwandte Themen