SpeechRecognizer onResults没有触发

时间:2012-11-16 13:33:28

标签: java android artificial-intelligence speech-recognition

我有一个相当奇怪的问题。我有一个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);

2 个答案:

答案 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并附带源代码:

(很抱歉宣传我自己的应用,但也许在这种情况下它很有帮助,即您可以检查它是否按预期工作或是否有相同的问题。)