Python 语音识别程序容易卡在某个地方
Python Speech Recognition Program Tends To Hang In A Certain Place
此计划尚未完成,但仍在进行中。
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
我面临的问题是,在 >
或 Processing
之后,程序有时会停止响应。没有错误消息或任何东西,在 shell 它只是打印 >
或 Processing
并留在那里。
这是随机发生的,程序可以连续运行很长时间,但在任何给定时刻,无论出于何种原因,它都会冻结。通常在一两分钟后,它会移动到下一部分并再次开始响应,但情况并非总是如此。
我试图创建一种故障安全机制,因此如果响应时间太长,程序将关闭并再次打开,但我没有成功,所以现在我试图找出根本原因问题。
有这方面经验的人可以帮助我理解为什么会这样吗?
编辑:
我能够解决问题。原来这里有个超时参数r.listen(source)
.
我能够解决问题。原来这里有个超时参数r.listen(source)
.
此计划尚未完成,但仍在进行中。
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
我面临的问题是,在 >
或 Processing
之后,程序有时会停止响应。没有错误消息或任何东西,在 shell 它只是打印 >
或 Processing
并留在那里。
这是随机发生的,程序可以连续运行很长时间,但在任何给定时刻,无论出于何种原因,它都会冻结。通常在一两分钟后,它会移动到下一部分并再次开始响应,但情况并非总是如此。
我试图创建一种故障安全机制,因此如果响应时间太长,程序将关闭并再次打开,但我没有成功,所以现在我试图找出根本原因问题。
有这方面经验的人可以帮助我理解为什么会这样吗?
编辑:
我能够解决问题。原来这里有个超时参数r.listen(source)
.
我能够解决问题。原来这里有个超时参数r.listen(source)
.