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.
Wenn Sie eine Antwort haben, ist es besser, sie in Antworten zu setzen, nicht in der Frage selbst. –