我有一个相当奇怪的问题。我有一个Android应用程序,我正在使用SpeechRecognizer
类添加语音识别。我创建了实现RecognitionListener的类,它只为每个事件打印一条日志消息。一切似乎都很好。 onReadyForSpeech被解雇,onBeginningOfSpeech被解雇,onEndOfSpeech被解雇。
一个重要事件不会被解雇,onResults:p
所以在夏天,一切似乎都很好,没有抛出异常,我得到的事件告诉我它已经成功启动并停止了监听。我是否遗漏了一些额外的意图,告诉SpeechRecognizer它需要将结果发送到onResults或类似的东西?
我将意图设置如下
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
SpeechRecognizer以
完成 SpeechRecognizer speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
我开始用
听speech.startListening(intent);
答案 0 :(得分:0)
我确实遇到了问题陈述中所述的问题。我有两种语音识别服务(Google和一种)。我在内心阶层出错:
private final Handler handler = new Handler();
private final Runnable stopListeningRunnable = new Runnable() {
@Override
public void run() {
speechRecognizer.stopListening();
}
};
不是在使用它的方法中写这个,而是把它放在内部类的开头。
这停止了对onResults
的通话。一旦我在实际使用它的方法中将其内联,onResults
工作正常。
希望这可以帮助你.. :)
答案 1 :(得分:-1)
是否调用onResults
取决于提供语音识别服务的应用程序。您的问题描述不完整,因为您没有提到您用于语音识别的应用程序。是谷歌语音搜索吗?在任何情况下,您的问题都是错误报告,而不是Stackoverflow,它应该被定向到应用程序的制作者以及有关应用程序版本,Android版本,硬件等的详细信息。
请注意,还有一个2参数版本的createSpeechRecognizer
可用于确保您获得所需的语音识别器。
另外,请查看使用相同SpeechRecognizer
界面的应用程序Babble并附带源代码:
(很抱歉宣传我自己的应用,但也许在这种情况下它很有帮助,即您可以检查它是否按预期工作或是否有相同的问题。)