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.

  • Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
  • Manejo de múltiples idiomas sin demora en el TTS de Android
  • Cómo cambiar programáticamente el motor predeterminado TTS
  • ¿Cuál es el flujo de audio predeterminado de TTS?
  • Problemas con TTS en el Samsung Galaxy S3
  • ¿Cómo puedo guardar el archivo Text to Speech como formato .wav / .mp3 en Almacenamiento externo
  • Pausa en el TTS android
  • Cómo utilizar TTS (TextToSpeech) mientras que la cadena tiene más de 4000 caracteres en Android
  • ¿Cómo interpretar audiblemente la pronunciación IPA en Android?
  • ¿Por qué la intención de ACTION_CHECK_TTS_DATA es "incómoda de usar"?
  • Problema de STOP de texto a voz
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.