latino - descargar tts para android
Android TTS verificando la configuraciĆ³n regional admitida con datos de voz perdidos/no descargados (1)
Estoy usando la clase TextToSpeech de Android. Todo funciona normalmente Sin embargo, existen idiomas / configuraciones regionales que no están instalados por defecto pero que son compatibles con el motor TTS y no puedo capturar el estado de los datos de voz faltantes.
Con Internet encendido, cuando intento configurar Language en una nueva configuración regional en la que no se han descargado sus datos de voz, simplemente descargará los datos de voz y realizará el método speak normalmente / con éxito.
Sin embargo, con Internet desactivado, cuando trato de configurar Language en una nueva configuración regional en la que no se han descargado sus datos de voz, intenta descargar los datos de voz. Pero sin conexión a Internet, solo indica "descarga" en la pantalla de configuración de "datos de voz TTS" en "Idioma y entrada" para la configuración regional seleccionada, sin ningún progreso. Y como es de esperar, el método de hablar no funciona ya que los datos de voz no se descargan. Cuando esto sucede, creo que los métodos TTS setLanguage / isLanguageAvailable devolverán LANG_MISSING_DATA para que capture este estado, sin embargo, simplemente devuelve LANG_COUNTRY_AVAILABLE. La situación se muestra en esta imagen:
Quiero ser capaz de detectar cuándo no se descargan / faltan los datos de voz de la configuración regional que se está eligiendo y dar un mensaje de brindis o dirigir al usuario para descargarlo. He visto varias publicaciones que sugieren el uso del uso isLanguageAvailable como este. También miré la documentación de Android y parece que los valores de retorno de LanguageAvailable deberían capturar el estado de los datos de voz faltantes con LANG_MISSING_DATA.
También traté de enviar un intento con ACTION_CHECK_TTS_DATA como la otra forma de verificar si faltan datos como se sugiere en la documentación de Android que he vinculado. Sin embargo, el código de resultado nuevamente no capturó / indicó que faltaban los datos de voz (CHECK_VOICE_DATA_FAIL) pero devolvió CHECK_VOICE_DATA_PASS en su lugar.
En este caso, ¿cómo debo capturar el estado de un idioma / configuración regional disponible / compatible, con los datos de voz faltantes? También me interesa saber por qué CHECK_VOICE_DATA_PASS y LANG_MISSING_DATA no son los valores devueltos. Cuando faltan los datos de voz, ¿no debería devolver estos valores? ¡Gracias! A continuación se muestra el valor de retorno cuando intento usar setLanguage e isLanguageAvailable en configuraciones regionales que no han descargado sus datos de voz (0 y 1 son el valor devuelto del método mostrado en los registros, -1 es el que corresponde a la voz perdida datos):
Puede encontrar toda la configuración regional disponible del dispositivo usando la siguiente función. Espero que este código te ayude.
Locale loc = new Locale("en");
Locale[] availableLocales= loc.getAvailableLocales();
Boolean available=Boolean.FALSE;
for (int i=0;i<availableLocales.length;i++)
{
if(availableLocales[i].getDisplayLanguage().equals("your_locale_language"))
{
available=Boolean.TRUE;
// TODO:
}
}