我正在写一个程序来识别来自麦克风的语音,代码将相应地进行处理。我为此编写的代码如下。
import speech_recognition as sr
import webbrowser
import pyttsx
from time import sleep
engine = pyttsx.init()
engine.setProperty('rate', 70)
r = sr.Recognizer()
def recognize(audio):
try:
return r.recognize(audio)
except LookupError, e:
print e
return ''
with sr.Microphone() as source:
while True:
engine.say("Hi How can i help you ?")
sleep(0.15)
print "Start Speaking"
audio = r.listen(source)
words = recognize(audio)
print("You said " + words)
if words == "Facebook":
engine.say("Shall i open the Facebook page for you ?")
engine.runAndWait()
audio = r.listen(source)
words = recognize(audio)
if words == "Yes":
webbrowser.open('https://www.facebook.com')
elif words == "stop":
break
在这里,我也尝试了睡眠,但在引擎说话之前,我可以看到文本Start Speaking打印出来。除了睡眠,还有什么好的方法可以在麦克风中捕捉语音,然后等待说话或长时间沉默吗?
2条答案
按热度按时间ylamdve61#
该方法:
等待语音完成。您不仅需要在
engine.say("Shall i open the Facebook page for you ?")
之后使用它,还需要在engine.say("Hi How can i help you ?")
之后而不是sleep
之后使用它ogq8wdun2#
我通常使用全局变量,这是不赞成的,但以下是正确的,我认为?以下两个def的应该有帮助...
例如,您应该能够编写一个While循环,该循环可以调用input_modes()来收听或调用output_modes来讲话