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

我正在尝试开发一个使用引擎和语音识别的很酷的应用程序。到目前为止,没关系,但我想要更多。我想创建一个服务(我认为服务是正确的方式),它总是“倾听”,当有人说或别的事情时,语音识别开始,就像现在的谷歌一样。例如,如果你说谷歌现在开始了。我不知道从哪里开始,所以我直接在这里问是否可能。我尝试查看这个线程[这里](始终监听关键字,例如4.4上的“Ok google”),最后一个答案谈到了服务,正如我所想的那样。有人可以帮助我编写代码吗?TTS"ok google""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);
}

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


答案 1

(更新于06.01.2018:在之前的答案中添加了一些位)

你可以参考Saiy,以前是Utter

这个程序使用热词检测作为“谷歌现在”。

并且没有安卓提供这样的API来执行这样的操作。

Saiy应用程序现在是开源的,在这里有存储库。从我在代码中看到的很少,它似乎已经使用CMU Pocketshinx实现了该功能。

不要忘记发布您的发现。

注意 - 它非常占用CPU,并且一直在后台收听电池。


答案 2

它不是java,但你见过Jasper吗?看起来很有希望:http://jasperproject.github.io


推荐