谷歌眼镜和语音识别器延迟识别结果

时间:2014-09-22 19:12:21

标签: android speech-recognition google-glass google-gdk

我正在开发一个Glass应用程序,它将通过语音执行“Next Card”和“Previous Card”。应用程序工作得很好,除了从单词被说出到执行动作的时间超过1秒。这是一个足够长的延迟,它是显而易见的。谷歌没有像“ok glass”那样快速响应。

最明显的变化似乎是实施: EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS 和/或EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS 和/或EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

但目前没有效果。在Android的RecognizerIntent网页上也注明了以下所有3个: “另请注意,某些值可能会导致意外或意外结果 - 明智地使用!此外,根据识别器的实现,这些值可能无效。”

以下是关于如何在main中实现它的代码:

        speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    speechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication().getPackageName());
    speechIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
    speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, Long.valueOf(100));
    speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(100));
    speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(100));

    speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
    speechRecognizer.setRecognitionListener(this);

    if (SpeechRecognizer.isRecognitionAvailable(this)) {
        speechRecognizer.startListening(speechIntent);

        }

我试图用新的Long()替换Long.valueOf()并且也只是100(如果由于某种原因,100也只是为了小,我也尝试了500的值)。 Eclipse的警告建议使用Long.valueOf()。

结果重新出现在onPartialResults上,这个过程比onResults效果更好,因为onResults会等待暂停。由于测试了上面的3个额外内容,我的结果又回到了结果上,但没有变化。

关于我在这里缺少的任何想法?如果您需要查看更多代码,请告诉我们。 谢谢。

1 个答案:

答案 0 :(得分:0)

对于这样的简短命令,您应该使用contextual voice menu而不是语音识别器来获得更好的效果。

您可以看到当前已批准的命令列表here,但在开发期间,您可以使用所需的任何命令(通过向清单添加开发权限)。

如果您希望完成审核流程并在将来启动,请务必提交您可能需要的任何新语音命令。