我正在开发Android并使用SpeechRecognizer
来实现连续语音识别。
通过以下代码开始语音识别后:
private void startListening(){
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getActivity().getPackageName());
recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS,Long.valueOf(3000L));
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1);
}
在调用startListening()
时再次致电onEndOfSpeech
。
但onError
将被调用,并显示SpeechRecognizer.ERROR_RECOGNIZER_BUSY
。
Q1:
在调用SpeechRecognizer
后启动onEndOfSpeech
时,为什么addtohomescreen.php
正忙?
Q2 如何实现连续语音识别的方法?
答案 0 :(得分:1)
Android语音识别库的设计使得在广泛使用时最终会出现超时。
因此,没有官方文档说明谷歌为何会这样做,即使使用谷歌应用程序,也没有连续的语音识别功能。
为了解决这个问题,我们需要使用语音回调方法来捕获错误并再次尝试收听。我专门创建了一个库以克服这个超时问题,我认为它也符合你的目的。
前往Github - DroidSpeech并将库添加到您的项目中克隆它或者您可以使用gradle依赖。一旦添加了初始化Droid Speech并设置了如下所述的监听器,
DroidSpeech droidSpeech = new DroidSpeech(this, null);
droidSpeech.setOnDroidSpeechListener(this);
要开始收听用户,请拨打以下代码,
droidSpeech.startDroidSpeechRecognition();
您将在侦听器方法中获得语音结果
@Override
public void onDroidSpeechFinalResult(String finalSpeechResult, boolean droidSpeechWillListen)
{
// Do whatever you want with the speech result
}
这个库的不同之处在于