我正在开发一个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个额外内容,我的结果又回到了结果上,但没有变化。
关于我在这里缺少的任何想法?如果您需要查看更多代码,请告诉我们。 谢谢。
答案 0 :(得分:0)
对于这样的简短命令,您应该使用contextual voice menu而不是语音识别器来获得更好的效果。
您可以看到当前已批准的命令列表here,但在开发期间,您可以使用所需的任何命令(通过向清单添加开发权限)。
如果您希望完成审核流程并在将来启动,请务必提交您可能需要的任何新语音命令。