安卓离线语音识别器无法使用

4

我正在使用SpeechRecognizer。问题是如果没有活动的互联网连接,SpeechRecognizer会抛出错误SpeechRecognizer.ERROR_NETWORKSpeechRecognizer.ERROR_SERVER

这是我的RecognizerIntent:

    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);,但是没有成功。仍然会抛出相同的错误。

我经常遇到以下两个错误:

  1. SpeechRecognizer.ERROR_RECOGNIZER_BUSY
  2. SpeechRecognizer.ERROR_NO_MATCH

请帮助我。

1个回答

2
首先,您需要确保在设备上安装了离线语言包,并将其放置在 EXTRA_LANGUAGE_PREFERENCE 中。要在支持的设备上启用离线语音输入,请按以下步骤操作:
  • 进入设置
  • 点击“语言和输入法”
  • 屏幕键盘
  • 选择Google语音输入
  • 选择离线语音识别
  • 安装所需语言
如果仍无法离线使用,请尝试将 EXTRA_LANGUAGE_PREFERENCE 值更改为更具体的值,例如 "en-US"(这对我有用)。此外,如果您想告诉 SpeechRecognizer 应该识别哪种语言,我想您应该使用 EXTRA_LANGUAGE 参数而不是 EXTRA_LANGUAGE_PREFERENCE。
希望这会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接