Google语音转文本:附加语言设置为“ kn”,但不起作用

时间:2018-06-26 17:25:04

标签: android localization speech-recognition speech-to-text

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

2 个答案:

答案 0 :(得分:2)

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

在下面的代码行中,我应该发送“ kn_IN”而不是“ kn”。这样就可以了。

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

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

答案 1 :(得分:1)

您尝试过“看”吗?

根据此link语言环境接受ISO 639 alpha-2或alpha-3,在以下list上,ISO 639-2和3上的Kannada语言代码为“ kan”。