TTS-UtteranceProgressListener no se llama

No quiero poner todo mi código aquí, así que estoy poniendo las piezas pertinentes. Si necesita más, no dude en preguntar.

Estoy utilizando texto a voz (TTS) que conduce a un oyente de voz después de que hace una pregunta … Encontré a través de salidas de registro que onInit TTS está siendo llamado, pero el UtteranceProgressListener no es y no puedo entender por qué. Cualquier ayuda es apreciada.

// ---Initialize TTS variables--- // Implement Text to speech feature tts = new TextToSpeech(this, new ttsInitListener()); // set listener to the TTS engine tts.setOnUtteranceProgressListener(new ttsUtteranceListener()); if (!tts.isSpeaking()) { tts.speak("Speak to me", TextToSpeech.QUEUE_FLUSH, null); } 

 // --- TEXT TO SPEECH && SPEECH TO TEXT METHODS --- class ttsInitListener implements OnInitListener { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { tts.setLanguage(Locale.getDefault()); } else { tts = null; Toast.makeText(mContext, "Failed to initialize TTS engine.", Toast.LENGTH_SHORT).show(); } } } class ttsUtteranceListener extends UtteranceProgressListener { @Override public void onDone(String utteranceId) { if (processStart) { speech.startListening(intent); } else { ... } } @Override public void onError(String utteranceId) { } @Override public void onStart(String utteranceId) { } } 

Añadí salidas de registro a todos los métodos de TTS y de voz. UtteranceProgressListener onStart ni siquiera está siendo llamado:

 11-30 00:38:37.299: D/OpenGLRenderer(15842): Enabling debug mode 0 11-30 00:38:39.782: I/TextToSpeech(15842): Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService} 11-30 00:38:39.782: I/TextToSpeech(15842): Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService} 11-30 00:38:39.782: D/LOOK AT ME!!!(15842): ttsInitListener - onInit 

2 Solutions collect form web for “TTS-UtteranceProgressListener no se llama”

Encontré la respuesta

Resulta que los recursos de TTS que encontré en línea estaban usando una fuente de cadena TTS única, por lo que el tercer parámetro en tts.speak (String text, int queueMode, HashMap params) fue puesto a null.

A cualquiera que tenga este problema en el futuro:

Si establece el tercer parámetro como nulo, no hay ID para que UtteranceProgressListener realice el seguimiento. La corrección fue la creación e inicialización de un hashmap, a continuación, añadir a la matriz incluida para cada nuevo TTS con un nuevo ID podría ser rastreado. Aquí está el código:

 HashMap<String, String> map = new HashMap<String, String>(); 

Luego, antes de llamar a tts.speak …

 map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "UniqueID"); 

Entonces usted puede llamar a hablar con todos los parámetros …

 tts.speak(text, TextToSpeech.QUEUE_FLUSH, map); 

Para añadir a la buena respuesta de WizardKnight:

La nueva API prefiere un paquete así que reemplace el HashMap con un paquete

 Bundle params = new Bundle(); params.putString(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, ""); 

Entonces cuando haces la llamada de voz

 tts.speak(text, TextToSpeech.QUEUE_FLUSH, params, "UniqueID"); 

La clave es utilizar el ID en la llamada de voz. Usted puede ponerlo en el paquete, pero no hará nada más para usted. Tiene que estar en la llamada de hablar para activar el oyente.

  • Android TTS no habla
  • TextToSpeech setLanguage no funciona?
  • TextToSpeech.setEngineByPackageName () no establece nada
  • NullPointerException durante el uso de TTS en CustomListview
  • ¿Cómo agregar voces nuevas a Android Pico TTS?
  • Cómo utilizar TTS (TextToSpeech) mientras que la cadena tiene más de 4000 caracteres en Android
  • TTS omite al azar las primeras letras de la oración
  • Texto a voz (TTS) -Android
  • Ejecución de TTS Android en un servicio
  • SpeechToText y ejecutando la intención ACTION_CHECK_TTS_DATA
  • Pausa tono del teléfono mientras habla a través de texto a voz y luego reanudar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.