【发布时间】:2015-06-20 06:09:22
【问题描述】:
我正在编写一个程序来识别来自麦克风的语音,并且代码将相应地进行处理。我为此目的编写的代码如下。
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
在这里我也尝试过睡眠,但在引擎说话之前,我可以看到文本开始说话被打印出来。除了睡眠之外,有没有什么好的方法可以捕捉麦克风中的语音并等到说些什么或长时间沉默?
【问题讨论】:
-
你为什么要使用 sleep ?这没有用,您必须为
r.listen(source)返回的audio设置一个阈值,如果audio大于阈值,那么您正在说话,否则就是长时间的沉默。 -
Cory.. 你能告诉我如何设置阈值吗?
-
没有直接的假设,因此高度取决于 @987654325 @返回的值,您需要进行一些试验并分析各种高度的语音样本的输出,然后选择适当的。 跨度>
-
但是在这里我需要等到引擎完成后说“嗨,我有什么可以帮助你的吗?”
标签: python python-2.7 speech-recognition pyttsx