我一直在研究android中的语音识别API,发现当语言设置改变时语音结果会有所不同,有没有办法以编程方式设置它?还是有意在语音语言设置屏幕上午餐?还是什么?注意:我尝试额外使用此意图:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
但它无效
我一直在研究android中的语音识别API,发现当语言设置改变时语音结果会有所不同,有没有办法以编程方式设置它?还是有意在语音语言设置屏幕上午餐?还是什么?注意:我尝试额外使用此意图:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
但它无效
正如pargat所说,这将做到:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS
此外,您的应用可以通过发送有序广播来查询支持的语言列表,如下所示:
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(
detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);
其中 LanguageDetailsChecker 是这样的:
public class LanguageDetailsChecker extends BroadcastReceiver
{
private List<String> supportedLanguages;
private String languagePreference;
@Override
public void onReceive(Context context, Intent intent)
{
Bundle results = getResultExtras(true);
if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE))
{
languagePreference =
results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE);
}
if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES))
{
supportedLanguages =
results.getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
}
}
}
有关完整代码,请查看此 github 项目: https ://github.com/gast-lib
这将起作用:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
您必须使用“en_US”而不是“en-US”。前者是Java语言环境标签的正确格式。
建议您使用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
避免记住这些细节。
没有解决方案,只有一个hackaround...
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
在这里查看完整的故事。
你有没有试过这个:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
通过添加以下所有 3 个附加功能,我终于让我的应用程序将语音识别结果限制为指定的语言输入(交给它,例如,日语的“ja”或法语的“fr”):
String languagePref = "de";//or, whatever iso code...
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, languagePref);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, languagePref);
intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE, languagePref);
希望这可以帮助某人。
此代码用于设置语音识别中的语言
String languagePref = "te-IN";//this is for telugu
//kannada ---> "kn-IN"
//tamil---> "ta-IN".....
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, languagePref);
我试着用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
但它对我不起作用(没有采用系统语言)。像这样帮助这里:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
我使用了这段代码:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
希望您现在可以运行您的应用程序。