我正在尝试将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”)