我正在尝试使用卡纳达语的 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”)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)