RecognizerIntent.EXTRA_LANGUAGE 不会突然改变识别器语言

问题描述 投票:0回答:1

我的应用程序中有一个代码可以识别“波斯语”语言并实现语音转文本功能:

  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");
)时,它也无法识别这种语言! 怎么了?

java android android-studio google-api speech-recognition
1个回答
0
投票

尝试使用 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");

设备的默认语言可能会影响识别。

解决方案: 尝试暂时将设备的默认语言更改为波斯语:

进入设置 → 系统 → 语言和输入法 → 语言。 添加波斯语并将其设置为主要语言。 重新启动设备并测试您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.