我一直工作在语音识别API在Android和发现,当语言设置被更改的语音效果因人而异配发,是有办法来设置它编程? 或者是有一个意图午餐演讲语言设置屏幕? 或者还有什么? 注意:我试图用这个额外的意图:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
但它是无效的
我一直工作在语音识别API在Android和发现,当语言设置被更改的语音效果因人而异配发,是有办法来设置它编程? 或者是有一个意图午餐演讲语言设置屏幕? 或者还有什么? 注意:我试图用这个额外的意图:
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
有没有解决办法,但一个hackaround ...
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
点击此处查看完整的故事。
你有没有试过这样:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
这将工作:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
您必须使用“EN_US”,而不是“EN-US”。 前者是Java的语言环境标签的正确的格式。
建议您使用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
避免记住这样的细节。
我终于得到了我的应用程序,以限制语音识别结果到指定的语言输入(交给它,例如,“JA”日本或“FR”的法语)通过添加以下额外的所有3个:
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);
希望这可以帮助别人。
我试图用
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
但它并没有为我工作(没有采取系统语言)。 在这里帮助是这样的:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
这段代码是设置在讲话再认识的语言
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_MODEL, "en-US");
希望你现在可以运行你的应用程序。