quien - ¿Cómo configurar el idioma en el reconocimiento de voz en Android?
cómo cambiar la voz del asistente de google (8)
¿Has probado esto?
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
He estado trabajando en la API de Reconocimiento de Voz en Android y descubrí que los resultados del habla varían mucho cuando se cambian las configuraciones de idioma, ¿hay alguna forma de establecerlo programáticamente? ¿O hay una intención de almorzar en la pantalla de configuración del lenguaje del habla? o que mas nota: traté de usar esta intención 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 difusión ordenada RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS
así:
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<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);
}
}
}
Para obtener el código completo, consulte este proyecto github: https://github.com/gast-lib
Esto funcionará:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
Debe utilizar "en_US" en lugar de "en-US". El primero es el formato correcto de la etiqueta de configuración regional de Java.
Se sugiere que uses
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
Para evitar recordar tales detalles.
Finalmente obtuve mi aplicación para restringir los resultados del reconocimiento de voz a una entrada de idioma especificada (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.
Traté de usar
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
pero no funcionó para mí (no tomó el lenguaje del sistema). Ayudó aquí de esta manera:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
Utilicé este código:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
Espero que pueda ejecutar su aplicación ahora.
no hay solución sino un hackaround ...
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
Consulta aquí la historia completa.
Este código es para establecer el idioma en el reconocimiento de voz.
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);