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

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

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

  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
2个回答
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");

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

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

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


0
投票

有时,Android 操作系统的权限更改或更新可能会导致 STT 问题。

解决方案: 确保您的应用程序具有录制音频和使用麦克风的必要权限:

xml

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>

检查是否授予运行时权限:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_CODE);
}
© www.soinside.com 2019 - 2024. All rights reserved.