我正在尝试将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)。如果我在这里做错了,请帮忙。

最佳答案

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

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

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


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

10-08 16:50