我正在尝试开发一个使用TTS
引擎和语音识别的很酷的应用程序。到目前为止还可以,但我想要更多。我想创建一个服务(我认为服务是正确的方式),它总是“倾听”,当有人说 “ok google”
或其他东西时,语音识别开始,比如 google现在。例如,如果您说 "ok google"
google 现在启动。我不知道从哪里开始,所以我直接在这里问是否可能。我试着在 [这里] ( Listening for keywords at all times, like "Ok google" on 4.4 ) 查看这个线程,最后一个答案谈到了服务,正如我所想的那样。有人可以帮我处理代码吗?
例如,这是通过点击按钮启动语音识别的代码:
/**
* 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
而无需按任何按钮吗?这就是我的意思。
最佳答案
(更新于 06.01.2018:在之前的答案中添加了一些内容)
此应用使用热词检测作为“Google Now”。
并且Android没有提供这样的API来执行这样的操作。
Saiy 应用现已开源 repository here .从我在代码中看到的一点点来看,它似乎已经使用 CMU Pocketshinx 实现了功能。
不要忘记发布您的发现。
注意- 一直在后台收听非常耗费 CPU 和电池。
关于java - 开发类似于 "Google now"的应用程序-是否可以在没有按键输入的情况下使用语音识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400462/