Google 语音转文本:额外语言设置为 "kn" 但不起作用

Google speech to text: Extra language set to "kn" but not working

我正在尝试将 Google Speech to Text API 用于卡纳达语,我正在将 EXTRA_LANGUAGE 设置为“kn”,但它不起作用。

下面是我使用的代码。

Locale locale = new Locale("kn");
    //Locale.setDefault(locale);
    Log.e(TAG, "Locale " + locale.getLanguage() + " present: " + isLocalePresent(locale));
    if (isLocalePresent(locale)) {
        //int randomInt = random.nextInt(allItemsLength);
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, locale.getLanguage());
        //intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Try saying \"" + mergedFinalArray.get(randomInt) + "\"");
        try {
            startActivityForResult(intent, REQ_CODE_K2E_SPEECH_INPUT);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(getApplicationContext(), R.string.missing_in_voc, Toast.LENGTH_SHORT).show();
        }
    }

请注意,区域设置存在于设备中。这同样适用于其他语言,如印地语 (hi)、泰米尔语 (ta) 和日语 (ja),但不适用于泰卢固语 (te)、马拉雅拉姆语 (ml)、卡纳达语 (kn)。我做错了什么吗?

你试过了吗"kan"?

根据这个 link Locale accepts ISO 639 alpha-2 or alpha-3 and on the following list ISO 639-2 和 3 上的卡纳达语代码是 "kan"。

经过几个小时的研究,我终于找到了解决方案。

在下面的代码行中,我应该发送 "kn_IN" 而不是 "kn"。这使它起作用。

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "kn_IN");

此方法适用于上述所有语言。 ("te_IN", "ml_IN")