开发类似于"Google now"的应用程序 - 是否可以在没有键输入的情况下使用语音识别?

End*_*ame 15 java android speech-recognition text-to-speech google-now

我正在尝试开发一个使用TTS引擎和语音识别的酷应用程序.到目前为止它还可以,但我想要更多.我想创建一个服务(我认为服务是正确的方式),总是"倾听",当有人说"ok google"或其他什么时,语音识别开始,就像谷歌现在.例如,如果你说"ok google"谷歌现在开始.我不知道从哪里开始所以我在这里直接询问是否有可能.我试着看这个帖子[这里](在任何时候都在听关键字,比如4.4上的"Ok google"),最后一个回答谈​​到了服务,正如我想的那样.有人能用我的代码帮助我吗?

例如,这是通过点击按钮开始语音识别的代码:

/**
 * Instruct the app to listen for user speech input
 */
private void listenToSpeech() {
    //start the speech recognition intent passing required data
    Intent listenIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    //indicate package
    listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
    //message to display while listening
    listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!");
    //set speech model
    listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    //specify number of results to retrieve
    listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
    //start listening
    startActivityForResult(listenIntent, VR_REQUEST);
}
Run Code Online (Sandbox Code Playgroud)

你认为listenIntent只用语音而不按任何按钮就可以开始吗?这就是我的意思.

Arn*_* M. 2

(更新于 2018 年 1 月 6 日:在之前的答案中添加了一些内容)

你可以参考Saiy,以前的Utter

这个应用程序使用热词检测作为“Google Now”。

Android 没有提供这样的 API 来执行此类操作。

Saiy 应用程序现已开源,存储库位于此处。从我在代码中看到的一点来看,它似乎已经使用 CMU Pocketshinx 实现了该功能。

不要忘记发布您的发现。

注意 - 一直在后台收听非常耗费 CPU 和电池。