我知道你可以通过调用来增加考虑输入完成的时间:
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000);
但是,在开始Android语音识别活动之后,有没有办法明确停止 ,比如收到“关键字”后。
答案 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请求部分结果,并在RecognitionListener的onPartialResults回调中搜索“停止关键字”,然后stopListening()检测
答案 2 :(得分:0)
找到了! =)
您可以在.stopListening()
上使用SpeechRecognizer object
。
SpeechRecognizer hear = NULL;
//set up the recognizer and intent
hear.stopListening();
我将其放在可运行的语言中,以便我可以控制它结束语音输入的时间,如果语音输入结束,我将删除该可运行语言的回调,这样它就不会尝试停止已经停止的语音输入(或造成附带损害并结束随后的语音输入)