Android 不断地进行语音识别,只听一个关键词

Android 不断地进行语音识别,只听一个关键词,android,speech-recognition,Android,Speech Recognition,我曾尝试用Android附带的Android.SpeechRecognitor类编写此代码,但没有成功 基本上,我想做的是让我的应用程序不断地监听一个关键词,只要该关键词被识别,就会触发一个意图。我知道这会用很多电池 例如,你正在和一个人谈话。正常对话。手机正在积极地倾听和识别每一个单词,并倾听关键词 假设在这个例子中关键字是“cheese” 每当你说“奶酪”时,应用程序就会激发一个意图,启动应用程序的另一部分 我曾尝试使用语音识别作为一项服务,但事情并没有按计划进行。也许我做错了,我不知道 我

我曾尝试用Android附带的Android.SpeechRecognitor类编写此代码,但没有成功

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

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

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

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

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

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


我的问题是——这怎么可能?当然,android自带的语音识别系统会更好,但肯定会很麻烦,因为它甚至不能长时间工作。

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

要执行您的要求,您需要:

  • 每次启动识别事件时,必须不断重新激活识别服务,直到它与您想要的单词匹配为止

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


  • 考虑到语音识别服务的持续使用确实会缩短电池寿命,我不推荐这两种选择。

    谷歌没有公开对“OK Google”的API支持,而是让供应商更改或将支持传递给消费者。 我认为此时最好的选择是自己构建源代码,然后调用API。作为下面的一个例子,google库提供了实现识别器的低级细节。我不知道谷歌为什么不把它公之于众。 我看不到一个简单的方法来实现和测试它


    不幸的是,我认为没有任何本机Android API能够完全满足您的需求。我建议退房。
    这是一个来自CMU的非常健壮的独立于说话人的语音识别API,更适合于此类任务。您还可以查看入门教程。

    但是,还有什么其他选项是可能的呢?我研究过其他可能的语音识别API,但都没有用。我见过的大多数应用程序(包括我的一个)都依赖于用户手动启动语音识别器,或者在我的情况下,作为对语音合成器的响应。例如,点击这里说点什么,或者“你想说点什么吗?”。那么谷歌搜索是如何做到的呢?它不断地听“OK Google”,你仍然需要做手势(向上滑动)。这将启动语音识别。AFAIK,它不是连续的。AFAIK,非接触式控制目前仅在一些配备KitKat或更高版本的摩托罗拉手机上可用。根据我的理解,这是因为这些手机有一个额外的电路/芯片组/手部支持,不断倾听语音命令。考虑CMUSphinx,但实际上最好的解决方案取决于你没有提供的细节。例如,它应该是一个任意单词还是一些预定义的单词。您想让用户记录单词以便识别,还是想要一些预定义的关键字短语或随机关键字短语用户类型。您需要支持哪些语言。它将是一个预定义的单词。我认为,记录单词并用记录的文件检查输入并不是那么准确。我需要它在正确的位置。pocketsphinx库不对android负责。它没有捕捉到清晰的词语“OK Google”。还有别的图书馆吗?