OnUtteranceCompleted () perdido si TTS recibido es demasiado largo

Acabo de observar una "anomalía indocumentada" en el motor de TTS de Android: Si el texto a ser hablado es demasiado largo (mayor de 4K caracteres), entonces onUtteranceCompleted () para ese enunciado en particular nunca llegará …

¿Alguien más se ha topado con esto?

¿Se trata de un error o limitación conocido?

¿Qué se podría hacer para evitar esto?

Yo no era consciente del límite, como prefiero trozos más pequeños de la palabra (útil si la pausa o si la actividad se detiene).

Cuando llama a speak, puede agregar el nuevo enunciado al final de la cola usando esto para queueMode: TextToSpeech.QUEUE_ADD

Prueba para estar seguro de que la frase no suena diferente, pero creo que simplemente analizar automáticamente en la siguiente oración (o palabra si es necesario) después de una longitud de corte funcionaría.

No estoy seguro de si esto será útil en su caso, pero en una situación similar he utilizado un receptor de difusión anónimo con un IntentFilter para TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED como se da a continuación

filter = new IntentFilter(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED); receiver = new BroadcastReceiver(){ public void onReceive(Context p1, Intent p2) { if (p2.getAction().equals(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED) && tts != null) { // //code here } } }; context.registerReceiver(receiver, filter); tts = new TextToSpeech(context, this); 

Espero que esto podría ser de alguna ayuda para alguien en algún momento

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.