¿Cómo saber cuándo se termina el TTS?

Estoy implementando una aplicación Interactive Voice Response en Android. Me gustaría saber cómo determinar cuándo la función tts.speak() ha terminado de hablar para poder llamar a mi función de reconocimiento de voz.

4 Solutions collect form web for “¿Cómo saber cuándo se termina el TTS?”

 public class TTSActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener, ... { private TextToSpeech mTts; ........... private void speak(String text) { if(text != null) { HashMap<String, String> myHashAlarm = new HashMap<String, String>(); myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM)); myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE"); mTts.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm); } } // Fired after TTS initialization public void onInit(int status) { if(status == TextToSpeech.SUCCESS) { mTts.setOnUtteranceCompletedListener(this); } } // It's callback public void onUtteranceCompleted(String utteranceId) { Log.i(TAG, utteranceId); //utteranceId == "SOME MESSAGE" } ........... } 

Leer un buen tutorial

El setOnUtteranceCompletedListener está obsoleto desde el nivel de API 15. En su lugar, utilice setOnUtteranceProgressListener .

Encontré un fragmento de código ( aquí ) que me hizo muy fácil saber cuándo se terminó el texto:

 @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { myTTS.setOnUtteranceProgressListener(new UtteranceProgressListener() { @Override public void onDone(String utteranceId) { // Log.d("MainActivity", "TTS finished"); } @Override public void onError(String utteranceId) { } @Override public void onStart(String utteranceId) { } }); } else { Log.e("MainActivity", "Initilization Failed!"); } } 

http://www.codota.com/android/scenarios/52fcbd34da0ae25e0f855408/android.speech.tts.TextToSpeech?tag=dragonfly

Me di cuenta de que hay personas que tienen problemas en el uso de TextToSpeech para pedir que la solución a usted

¿Cómo saber cuándo se termina el TTS? Sin usar setOnUtteranceCompletedListener

 public void isTTSSpeaking(){ final Handler h =new Handler(); Runnable r = new Runnable() { public void run() { if (!tts.isSpeaking()) { onTTSSpeechFinished(); } h.postDelayed(this, 1000); } }; h.postDelayed(r, 1000); } 

Utilice un SpeakableListener cuando haga el texto para hablar.

 private volatile boolean finished; private SpeakableListener listener = new SpeakableListener() { @Override public void markerReached(SpeakableEvent arg0) { // TODO Auto-generated method stub } @Override public void speakableCancelled(SpeakableEvent arg0) { // TODO Auto-generated method stub } @Override public void speakableEnded(SpeakableEvent arg0) { TestSpeaker.this.finished = true; } @Override public void speakablePaused(SpeakableEvent arg0) { // TODO Auto-generated method stub } @Override public void speakableResumed(SpeakableEvent arg0) { // TODO Auto-generated method stub } @Override public void speakableStarted(SpeakableEvent arg0) { TestSpeaker.this.finished = false; } @Override public void topOfQueue(SpeakableEvent arg0) { // TODO Auto-generated method stub } @Override public void wordStarted(SpeakableEvent arg0) { // TODO Auto-generated method stub } }; /** Speak the following string. */ public void sayIt(String str) { System.out.print(" " + str + " "); /* The the synthesizer to speak. */ synthesizer.speakPlainText(str, listener); 
  • Android TTS (texto a voz) no pronuncia letra única correctamente
  • Android TTS añadir idiomas
  • Texto de Android a voz Voz masculina
  • KitKat tarda 6 segundos más que Froyo para reaccionar a TextToSpeech.speak () en primera llamada
  • ¿Cómo saber si un motor TTS específico está activado?
  • ¿Cómo configurar el volumen para el método de "hablar" de texto a voz?
  • Referencia no resuelta en el anonimo oyente de Kotlin
  • NullPointerException durante el uso de TTS en CustomListview
  • Uso de la preferencia de lista en Android
  • ¿Es Google TTS Engine en todos los teléfonos Android, y dónde puedo conseguirlo?
  • Android TTS no habla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.