【发布时间】:2014-03-14 09:09:12
【问题描述】:
我正在尝试开发一个很酷的应用程序,它使用TTS 引擎和语音识别。到目前为止还可以,但我想要更多。我想创建一个服务(我认为服务是正确的方式),它总是“听”,当有人说"ok 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 吗?这就是我的意思。
【问题讨论】:
-
确实是一个好主意,但我觉得编写一个能感知“OK Google”之类的服务也不过是一种语音识别技术,你不能保持 24X7 全天候运行。相反,您可以担保一个主屏幕小部件,点击它您可以启动此后台服务,该服务最终将为您启动您的应用程序,是的,您可以在 if 块中启动意图,您的条件类似于检查语音输入硬编码值,例如“OK Google”。
-
是的,小部件是个好主意。但是,你知道如何用代码创建这种服务吗?我的意思是.. 如果我说“ok google”必须启动该意图,应用程序如何识别?这是我真正的问题。
-
当您创建一个小部件时,您可以将一个活动映射到它的启动。因此,您可以编写一个代码,在启动小部件“XYZ”活动时启动该活动,并且该活动直接采用语音输入,就像您在应用程序中采用语音输入一样。现在,在获取语音输入后,您将其转换为文本并检查它是否与“OK GOOGLE”匹配,如果是,那么您只需在该 if 块中创建您想要的任何活动的 Intent。
-
即使我已经开发了一个语音转文本应用程序,使用该应用程序,用户可以通过说出联系人列表中的姓名直接拨打电话...应用程序将通过输入作为用户姓名来拨打用户的电话打电话的人...我会在那里尝试这个东西,让你知道它是否有效......但我觉得没有问题,应该可以工作。
-
我会尝试类似的,谢谢。好吧,如果我可以问,您是如何实现该应用程序的?我试图阅读联系人列表,但找不到“告诉它”以识别姓名并拨打正确号码的方法。它是否开源您的应用程序?
标签: java android speech-recognition text-to-speech google-now