我一直在研究Android中的语音识别API,发现当语言设置发生变化时,语音结果会有所不同,有没有办法以编程方式设置它?或者是否打算在语音设置屏幕上午餐?或者还有什么? 注意: 我试图使用这个额外的意图:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
但它无效
答案 0 :(得分:43)
正如帕加特所说,这样做会:
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
答案 1 :(得分:12)
没有解决办法,只有黑客攻击......
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
check here完整的故事。
答案 2 :(得分:8)
你试过这个:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
答案 3 :(得分:8)
这将有效:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
您必须使用“en_US”而不是“en-US”。前者是Java语言环境标记的正确格式。
建议您使用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
以避免记住这些细节。
答案 4 :(得分:6)
我终于得到了我的应用程序,将语音识别结果限制为指定的语言输入(通过添加以下所有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);
希望这有助于某人。
答案 5 :(得分:1)
我尝试使用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
但它对我不起作用(没有使用系统语言)。 像这样帮助到这里:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
答案 6 :(得分:0)
此代码用于设置语音识别语言
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);
答案 7 :(得分:-1)
我使用了这段代码:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
希望你现在可以运行你的应用程序。