【发布时间】:2014-09-28 21:30:11
【问题描述】:
我正在开发一个可以通过语音执行“下一张卡片”和“上一张卡片”的 Glass 应用程序。该应用程序运行良好,除了从说出单词到执行操作的时间刚刚超过 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);
}
我尝试用 new Long() 和 100 替换 Long.valueOf()(如果由于某种原因 100 太小,我也尝试了 500 的值)。 Eclipse 的警告建议使用 Long.valueOf()。
结果在 onPartialResults 上返回,这个过程比 onResults 工作得更好,因为 onResults 等待暂停。由于测试了上面的 3 个附加功能,我在结果上返回了结果,但没有任何变化。
关于我在这里缺少什么的任何想法?如果您需要查看更多代码,请告诉我。 谢谢。
【问题讨论】:
标签: android speech-recognition google-glass google-gdk