如何设置Android上的语音识别的语言?如何设置Android上的语音识别的语言?(How to

2019-05-13 23:52发布

我一直工作在语音识别API在Android和发现,当语言设置被更改的语音效果因人而异配发,是有办法来设置它编程? 或者是有一个意图午餐演讲语言设置屏幕? 或者还有什么? 注意:我试图用这个额外的意图:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");

但它是无效的

Answer 1:

作为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



Answer 2:

有没有解决办法,但一个hackaround ...

intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});

点击此处查看完整的故事。



Answer 3:

你有没有试过这样:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");


Answer 4:

这将工作:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");

您必须使用“EN_US”,而不是“EN-US”。 前者是Java的语言环境标签的正确的格式。

建议您使用

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());

避免记住这样的细节。



Answer 5:

我终于得到了我的应用程序,以限制语音识别结果到指定的语言输入(交给它,例如,“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);

希望这可以帮助别人。



Answer 6:

我试图用

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());

但它并没有为我工作(没有采取系统语言)。 在这里帮助是这样的:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());


Answer 7:

这段代码是设置在讲话再认识的语言

  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);


Answer 8:

我用这个代码:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");

希望你现在可以运行你的应用程序。



文章来源: How to set the language in speech recognition on android?