持续进行语音识别只能监听一个关键字

时间:2013-08-06 22:38:34

标签: android speech-recognition

我尝试使用Android包含的android.speech.SpeechRecognizer类对此进行编码,但没有成功。

基本上,我要做的是让我的应用程序不断地监听一个关键字,当关键字被识别时,它会触发一个意图。 我知道这将耗费大量电池。

例如 - 您正在与一个人交谈。正常的谈话。手机正在主动聆听并识别每个单词并听取关键字。

假设在这个例子中关键字是“cheese”。

每当你说“奶酪”时,应用程序就会启动一个意图来启动应用程序的另一部分。

我曾尝试将语音识别作为一种服务,但事情并没有按计划进行。也许我犯了一个错误,我不知道。

我一直试图连续两天完成这项工作,共计工作时间超过24小时。如果我过于宽泛或侵犯了SO的任何规则,我真诚地道歉并要求删除我的问题。

我的问题是 - 这怎么可能?当然,android本身包含的SpeechRecognition将是首选,但它肯定会很麻烦,因为它甚至不能设计为长时间工作。

3 个答案:

答案 0 :(得分:8)

从我的研究中,使用标准的谷歌语音识别服务器无法做到这一点。它们的工作方式是一旦识别出声音/单词,识别器就会返回一个它认为听到的内容列表以及相关的置信度分数。

做你要问的事,你会:

  1. 每次触发识别事件时都必须重新激活识别服务,直到它与您想要的字匹配。

  2. 您的应用必须“保持清醒”识别服务。您可以通过创建定期唤醒手机并恢复服务/活动的服务来实现此目的。

  3. 考虑到语音识别服务不断开启,电池寿命确实会缩短,我不会推荐其中任何一种选择。

答案 1 :(得分:1)

不幸的是,我认为没有任何本机Android API可以完全满足您的需求。我建议您查看pocketsphinx。 它是一个非常强大的与扬声器无关的语音识别API,来自CMU,更适用于此类任务。您还可以查看入门教程here

答案 2 :(得分:0)

谷歌尚未向“OK GOOGLE”公众提供API支持,并将其留给供应商更改或将支持传递给消费者。 我认为此时最好的选择是自己构建源代码,然后调用API。作为下面的示例,谷歌库具有实现识别器的低级细节。我不确定谷歌为什么不公开它。 我没有看到一种简单的方法来实现和测试它。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/speech/srec/Recognizer.java