¿Cómo configurar el idioma en el reconocimiento de voz en Android?

He estado trabajando en la API de Reconocimiento de voz en Android y descubrí que los resultados del habla varían cuando cambian las configuraciones de idioma, ¿hay alguna manera de configurarlo programáticamente? o ¿hay una intención de almorzar la pantalla de configuración de idioma del habla? o que mas? nota: Intenté usar este bash extra:

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

pero fue ineficaz

Como dice el pargat, esto lo hará:

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

Además, su aplicación puede consultar la lista de idiomas admitidos enviando una transmisión solicitada RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS manera:

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

donde LanguageDetailsChecker es algo como esto:

 public class LanguageDetailsChecker extends BroadcastReceiver { private List 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); } } } 

Para obtener el código completo, consulte este proyecto github: https://github.com/gast-lib

no hay solución sino un hackaround …

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

revisa aquí la historia completa.

Esto funcionará:

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

Debes usar “en_US” en lugar de “en-US”. El primero es el formato correcto de la etiqueta de entorno local de Java.

Se sugiere que use

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

para evitar recordar tales detalles.

¿Has probado esto?

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

Finalmente obtuve mi aplicación para restringir los resultados de reconocimiento de voz a una entrada de idioma específico (entregándola, por ejemplo, “ja” para japonés o “fr” para francés) agregando los 3 extras siguientes:

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

Espero que esto ayude a alguien.

Intenté usar

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

pero no funcionó para mí (no tomó el lenguaje del sistema). Ayudado aquí así:

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

Usé este código:

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

Espero que puedas ejecutar tu aplicación ahora.