Comment configurer le langage dans la reconnaissance vocale sur android?

j'ai travaillé sur l'API de reconnaissance vocale sur android et j'ai découvert que les résultats de la parole varient allot lorsque les paramètres de langue sont changés , y a-t-il un moyen de le programmer ? ou y a-t-il une intention de déjeuner l'écran Paramètres du langage de la parole ? ou quoi d'autre ? Note: J'ai essayé d'utiliser cette intention supplémentaire:

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

mais c'était inefficace

17
demandé sur Mr.Me 2012-05-10 20:54:31

8 réponses

comme le dit pargat, ceci le fera:

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

en outre, votre application peut rechercher la liste des langues prises en charge en envoyant un RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS ordonné de radiodiffusion comme suit:

    Intent detailsIntent =  new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
    sendOrderedBroadcast(
            detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);

où LanguageDetailsChecker est quelque chose comme ceci:

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

Pour le code complet découvrez ce projet github: https://github.com/gast-lib

42
répondu gregm 2014-09-12 16:32:32

il n'y a pas d'autre solution qu'un détour...

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

voir ici l'histoire complète.

12
répondu Arnav M. 2014-11-01 10:48:50

Cela fonctionne:

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

vous devez utiliser " en_US "au lieu de"en-US". Le premier est le bon format de Java locale tag.

il est suggéré d'utiliser

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

pour éviter de se rappeler de tels détails.

9
répondu orina1123 2013-03-16 09:49:46

Avez-vous essayé ceci:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
8
répondu Pargat 2012-05-10 17:45:43

j'ai finalement obtenu mon application pour restreindre les résultats de reconnaissance vocale à une entrée de langue spécifiée (par exemple, " ja "pour le japonais ou "fr" pour le français) en ajoutant les 3 extras suivants:

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

Espérons que cela aide quelqu'un.

6
répondu kwishnu 2013-07-21 04:25:26

j'ai essayé d'utiliser

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

mais cela n'a pas fonctionné pour moi (n'a pas pris le langage du système). Aidé ici comme ceci:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
1
répondu Oleg SH 2017-11-08 19:18:08

ce code est pour définir le langage dans la reconnaissance de la parole

  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);
0
répondu dileep krishnan 2018-09-29 10:36:08

j'ai utilisé ce code:

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

j'Espère que vous pouvez exécuter votre application.

-1
répondu user5278060 2015-08-28 19:14:35