我正在尝试实施一个Android应用程序,通过文本转语音和Android的语音识别活动与用户进行对话。
以下代码启动活动,如tutorial:
中所述Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
问题是活动需要0.5到1秒的时间才能开始录制用户的声音。这似乎不是很多,但这通常意味着用户在语音识别活动开始录制之前已经开始说话,这意味着应用程序将错过用户所说的部分内容。
有没有一种很好的方法可以解决这种延迟问题,这样我就可以在讲完语音后立即开始语音识别?
我考虑过的可能性:
如果您对如何正确完成此任务有任何其他想法,或者解决上述任何可能令人敬畏的问题。
答案 0 :(得分:1)
您可以做的一件事是鼓励用户说出更长的命令。这样,如果他们开始讲得太快,系统就可以识别命令的后半部分。
例如,您可以鼓励用户说“系统打开电子邮件”,而不是让系统识别“打开电子邮件”。如果系统只听到“打开电子邮件”部分,它仍然可以识别该命令。
它可能会为命令添加不必要的单词,但我相信它不会让用户暂停。正如您所描述的那样,延迟是有问题的。
答案 1 :(得分:1)
看起来有一种较低级别的方式来控制语音识别活动。
创建一个名为SpeechRecognizer的对象,调用SpeechRecognizer.setRecognitionListener()并将其传递给RecognitionListener。然后将RecognizerIntent.ACTION_RECOGNIZE_SPEECH Intent传递给SpeechRecognizer.startListening(),它将开始监听并执行语音识别,而无需等待弹出窗口。
来自:How can I use speech recognition without the annoying dialog in android phones