我正在尝试实现一个Android应用程序,通过文本到语音和Android的语音识别活动与用户进行对话。
下面的代码启动活动,如教程中所记录的
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秒的时间才能开始录制用户的声音。这看起来并不多,但这通常意味着用户在语音识别活动开始录制之前就已经开始说话了,这意味着应用程序将错过用户所说的部分内容。
是否有一个好的方法来克服这个延迟,以便我可以开始语音识别,一旦文本到语音完成发言?
我考虑过的可能性:
如果您有任何其他的想法,这可以如何正确地完成,或一种方法,以解决上述任何一个问题,这将是令人敬畏的。
发布于 2011-08-17 16:59:27
你可以做的一件事是鼓励你的用户说更长的命令。这样,如果他们说得太快,系统就可以识别命令的后面部分。
例如,不让系统识别“打开电子邮件”,您可以鼓励用户这样说“系统打开电子邮件”,如果系统只听到“打开的电子邮件”部分,它仍然可以识别命令。
它可能会给命令添加不必要的单词,但我相信它比让用户暂停更尴尬。正如你所描述的那样,延迟是有问题的。
发布于 2011-08-19 23:08:20
似乎有一种较低层次的方法来控制语音识别活动。
创建一个名为SpeechRecognizer的对象,调用SpeechRecognizer.setRecognitionListener()并传递给它一个RecognitionListener。然后将一个RecognizerIntent.ACTION_RECOGNIZE_SPEECH意图传递给SpeechRecognizer.startListening(),它将开始侦听并执行语音识别,而无需等待弹出。
https://stackoverflow.com/questions/7086824
复制相似问题