我正在使用SpeechRecognizer。问题是,如果没有活动的互联网连接,语音识别器将抛出错误SpeechRecognizer.ERROR_NETWORK
或SpeechRecognizer.ERROR_SERVER
。
这是我的识别器意图
final Intent recognizerIntent;
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, true);
我把recognizerIntent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, true);
但是没有运气。 它将再次抛出相同的错误。
我经常收到这两个错误。
-
SpeechRecognizer.ERROR_RECOGNIZER_BUSY
-
SpeechRecognizer.ERROR_NO_MATCH
请帮助我。
首先,您需要确保设备上是否安装了离线语言包EXTRA_LANGUAGE_PREFERENCE。
若要在受支持的设备中启用脱机语音输入,请执行以下步骤:
- 转到"设置">
- 点击"语言和输入">
- 屏幕键盘
- 选择谷歌语音输入
- 选择脱机语音识别
- 安装所需语言
如果它仍然无法离线工作,请尝试将您的EXTRA_LANGUAGE_PREFERENCE
值更改为更具体的值,例如"en-US"
(这对我来说是
而且,如果你想告诉它应该识别SpeechRecognizer
语言,我想你应该使用EXTRA_LANGUAGE
参数而不是EXTRA_LANGUAGE_PREFERENCE
希望会有所帮助