我正在尝试制作一个使用语音识别的程序。现在,我遇到了一个问题,那就是您必须按下按钮或Enter才能启动语音识别。您是否可以说出一个短语(类似于Hey Google)来开始识别Python 3中的语音?
这是我的代码:
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
x = r.recognize_google(audio)
print("I'm listening!")
try:
print("You said: " + r.recognize_google(audio))
except speech_recognition.UnknownValueError:
print("I am sorry but I couldn't understand you, try again.")
except speech_recognition.RequestError as e:
print("Could not request results from Google Speech Recognition service; {0}".format(e))
谢谢!
答案 0 :(得分:5)
是的,从本质上讲,您必须将识别分为两部分:关键字识别(仅侦听关键字)和主要识别(识别用户在关键字之后说的话)。要知道这意味着您的程序将一直在监听。
对于关键字识别,可以使用Recognizer()
的{{1}}方法并在提供的任何回调中扫描关键字。如果找到了关键字,则调用listen_in_background
。
由于收听关键字将要求您的程序不断收听和识别,因此您不想使用任何需要互联网连接的语音识别API(必应,Google,Watson,Houndify等)。这是因为所有这些都有每月的API限制,您可以轻松解决这些限制。您想要保存这些API以便实际识别。我相信您唯一的离线选项是使用Recognizer().listen(source)
或snowboy热门单词检测。我从未真正使用过Snowboy(尽管我听说它相当不错),因为它在Windows上不起作用(或者至少在我编写程序时不起作用),但是Sphinx具有各种关键字检测工具。
基本上,您传递sphinx_recognizer关键字,以及通过元组选择这些关键字应该有多敏感,并且它将尝试着重于在语音中找到那些单词。请注意,关键字的敏感性越高,误报率就越高。
这里是一个例子:
recognize_sphinx
在使用Speech_recognition库时,此链接非常有用:
https://github.com/Uberi/speech_recognition/blob/master/reference/library-reference.rst
答案 1 :(得分:0)
代码:
some_func(int i)