Android:语音识别显式停止?

时间:2011-04-12 19:23:45

标签: android voice-recognition

我知道你可以通过调用来增加考虑输入完成的时间:

intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000);

但是,在开始Android语音识别活动之后,有没有办法明确停止 ,比如收到“关键字”后。

3 个答案:

答案 0 :(得分:1)

@Mike是对的。

这有效:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(2000)); 

您已指定一个Long。只需将数字(“2000”)解释为整数,这是无效的。

答案 1 :(得分:0)

您可以将SpeechRecognizer类与自定义UI一起使用,而不是RecognizerIntent意图。 SpeechRecognizer类具有stopListening()方法,一旦用户按下“停止”按钮,您就可以显式调用该方法。

另一种尝试方法是使用EXTRA_PARTIAL_RESULTS请求部分结果,并在RecognitionListeneronPartialResults回调中搜索“停止关键字”,然后stopListening()检测

答案 2 :(得分:0)

找到了! =)

您可以在.stopListening()上使用SpeechRecognizer object

SpeechRecognizer hear = NULL;

//set up the recognizer and intent

hear.stopListening();

我将其放在可运行的语言中,以便我可以控制它结束语音输入的时间,如果语音输入结束,我将删除该可运行语言的回调,这样它就不会尝试停止已经停止的语音输入(或造成附带损害并结束随后的语音输入)