我的应用程序中有一个代码可以识别“波斯语”语言并实现语音转文本功能:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "fa");
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak...");
但现在它突然停止工作并且只将我的 STT 识别为英语!我没有改变任何东西。当我将
RecognizerIntent.EXTRA_LANGUAGE
更改为任何语言(例如意大利语 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "it");
)时,它也无法识别这种语言!
怎么了?
尝试使用 Locale 对象显式设置区域设置,而不仅仅是语言代码:
Locale persianLocale = new Locale("fa");
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, persianLocale.toLanguageTag());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
Additionally, you can set the EXTRA_LANGUAGE_PREFERENCE and EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "fa");
intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE, "fa");
或
设备的默认语言可能会影响识别。
解决方案: 尝试暂时将设备的默认语言更改为波斯语:
进入设置 → 系统 → 语言和输入法 → 语言。 添加波斯语并将其设置为主要语言。 重新启动设备并测试您的应用程序。