我最近用Python为我设置了一个项目,创建一个语音控制的脚本。
我一直在使用googles API来做这件事,但是通过使用这个API,我注意到除非它是完全安静的,否则它永远不会停止监听,这会阻止你在有些嘈杂的地方运行命令,或者与周围的人交谈。
这就是我所拥有的:
import speech_recognition as sr
import pyttsx
r = sr.Recognizer()
engine = pyttsx.init()
listen = False
# Define methods
while True:
while listen == False:
with sr.Microphone() as source:
audio = r.listen(source)
try:
if (r.recognize(audio) == "start") :
listen = True
print("Listening...")
break
else:
continue
except LookupError:
continue
while listen == True:
with sr.Microphone() as source:
audio = r.listen(source)
print("1")
try:
print("2")
if (r.recognize(audio) == "stop") :
listen = False
print("Listening stopped. Goodnight")
break
else:
print("You said " + r.recognize(audio))
except LookupError:
engine.say('Audio cannot be read!')
engine.runAndWait()
print("Could not understand audio")导入PYTTSX和SpeechRecognition(使用googles API)。现在,我如何才能让它运行得更像Google,在任何情况下,在任何情况下,无论有没有背景噪音,我都可以说任何话,并在我说完话后让它停止监听?谢谢。
发布于 2015-09-07 19:46:26
我刚刚调整了你的代码,它现在工作得很好。抱歉,我不是python的新手:这里的"pinger“是一个保存音频的临时变量,您应该使用String.lower()将从google获得的字符串转换为较低的字符,以便与测试字符串匹配。
import speech_recognition as sr
import pyttsx
r = sr.Recognizer()
engine = pyttsx.init()
listen = False
# Define methods
while True:
while listen == False:
try:
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
audio = r.listen(source)
pinger=r.recognize_google(audio)
try:
if (pinger.lower() == "start") :
listen = True
print("Listening...")
break
else:
continue
except LookupError:
continue
except sr.UnknownValueError:
continue
while listen == True:
print "2nd part"
try:
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
audio = r.listen(source)
pinger=r.recognize_google(audio)
print("1")
print("2")
if (pinger.lower() == "stop") :
listen = False
print("Listening stopped. Goodnight")
break
else:
print("You said " + pinger)
except LookupError:
engine.say('Audio cannot be read!')
engine.runAndWait()
print("Could not understand audio")
except sr.UnknownValueError:
print("Google Speech Recognition could not understand audio")
continue
except sr.RequestError:
print("Could not request results from Google Speech Recognition service")
continuehttps://stackoverflow.com/questions/27372204
复制相似问题