TextToSpeech setLanguage no funciona?
Estoy configurando mi TextToSpeech para utilizar un idioma en particular (inglés – Reino Unido), utilizando la configuración regional "en_GB". Pero siempre utiliza el idioma predeterminado de mis dispositivos. ¿No hay forma de establecerla mediante programación? He descargado los archivos necesarios para el idioma y cuando cambio el idioma predeterminado de mi TTS a 'English – UK' funciona, pero cuando el valor predeterminado es diferente, el enfoque programático no funciona. He explorado la web a mi mejor pero soy incapaz de resolver este problema.
String ttsEngine = "com.google.android.tts"; txt2Speech = new TextToSpeech(this, this, ttsEngine); //Locale ttsLocale = new Locale("eng", "GBR"); txt2Speech.setLanguage(new Locale("en_GB"));
Probado varios métodos, pero ninguno está funcionando. ¿No puedo establecer el idioma de mi TTS mediante programación?
- ¿Qué en TtsService podría explicar la falta de onUtteranceCompleted () para playEarcon ()?
- Transmisión de notificaciones de texto a voz durante la conducción
- TTS: El éxito regresó de onInit () pero aún hay retraso para hablar primero
- Cómo dar pausa o brecha entre palabras en TTS en android
- Agrega mi motor TTS a Android TTS Serivce como SAPI
Gracias
EDIT: En respuesta a 'A Bustard de miel'
Otro Código:
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener
Mi onInit()
public void onInit(int status) { // TODO Auto-generated method stub }
También estoy llamando .setLanguage()
en mi onCreate()
, tan pronto como mi TextToSpeech
se inicializa. ¿Es eso correcto? También sólo lo llamo una vez. No es necesario que lo llame cada vez, ¿no? También estoy probando en un GS7
- ¿Cómo agregar voces nuevas a Android Pico TTS?
- ¿Cómo saber si un motor TTS específico está activado?
- La función de devolución de llamada de Android TTS onUtteranceCompleted no se recibe
- ¿Es Google TTS Engine en todos los teléfonos Android, y dónde puedo conseguirlo?
- Ampliación del paquete de idiomas de texto a voz (TTS) de Android
- Uso de la preferencia de lista en Android
- Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
- TTS android 4.1 jellybean
Debe configurar el idioma una vez que el motor de conversión de texto a voz se haya inicializado correctamente.
public void onInit(int status) { switch (status) { case SUCCESS: // Set the language here break; case ERROR: // Something went wrong. You can't set the language break; } }
Deberias hacer eso.
Intente el segundo constructor de la configuración regional que toma dos cadenas como esto:
txt2Speech.setLanguage(new Locale("en", "GB"));
EDIT:
Sí, por lo general es bueno hacer instanciar en onCreate, y por lo general sólo necesita y debe hacerse una vez.
Todo lo que puedo hacer es mostrar mi código de trabajo, estoy estableciendo el idioma predeterminado después de instanciar en onCreate ():
textToSpeech = new TextToSpeech(getApplicationContext(), this); textToSpeech.setLanguage(Locale.getDefault());
En mi aplicación hay botones en los que puedes cambiar el idioma, que activan este código (inglés castellano):
textToSpeech.setLanguage(new Locale("en", "GB"));
Tal vez no está disponible de alguna manera, hay algunas comprobaciones que puede validar si el idioma y el país está disponible. Usted puede encontrar su error allí.
if (textToSpeech.isLanguageAvailable(new Locale("en", "GB")) == TextToSpeech.LANG_COUNTRY_AVAILABLE && textToSpeech.isLanguageAvailable(new Locale("en", "GB")) == TextToSpeech.LANG_AVAILABLE)
Debe devolver true.