21

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

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

例如 - 你正在和一个人交谈。正常对话。手机正在积极倾听和识别每一个说的单词并倾听关键字。

假设在这种情况下关键字是“奶酪”。

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

我曾尝试将语音识别用作服务,但事情并没有真正按计划进行。也许我做错了,我不知道。

我已经连续 2 天尝试完成此任务,总共超过 24 小时的工作时间。如果我过于宽泛或违反了 SO 的任何规则,我真诚地道歉并要求删除我的问题。

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

4

3 回答 3

8

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

做你所要求的,你会:

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

  2. 您的应用程序必须“保持唤醒”识别服务。您可以通过创建一个定期唤醒您的手机并恢复服务/活动的服务来做到这一点。

考虑到持续开启语音识别服务确实会缩短电池寿命,我不会推荐其中任何一个选项。

于 2013-08-06T23:07:11.103 回答
1

不幸的是,我认为没有任何原生 Android API 可以完全满足您的需求。我会建议检查pocketsphinx。它是来自 CMU 的一个非常强大的独立于说话者的语音识别 API,更适用于此类任务。您还可以在此处查看入门教程。

于 2015-06-15T18:11:24.847 回答
0

Google 尚未公开对“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

于 2015-06-13T04:45:08.660 回答