¿Cómo puedo controlar cómo Android TTS reproduce audio?

Tengo una clase que utiliza la API TTS de Android para transcribir texto a audio. Puedo controlar el tono y la velocidad; Pero me di cuenta de que el motor requiere una cadena de texto y también un objeto hash. Noté que algunas palabras se pronuncian demasiado rápido para ser fácilmente reconocidas, y la inflexión parece demasiado antinatural. ¿Hay alguna manera de controlar estas dos cosas? Posiblemente a través del HashMap ? Lo siguiente es cómo estoy usando el motor:

  mTts = new TextToSpeech(Globals.context, this); // context, listener } @Override public void onInit(int status) { HashMap<String, String> myHashRender = new HashMap(); myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speech); mTts.setPitch(0.8f); mTts.setSpeechRate(0.6f); mTts.synthesizeToFile(speech, myHashRender, fileOutPath); while (mTts.isSpeaking()) try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } mTts.stop(); mTts.shutdown(); 

Google TTS no lo admite actualmente, pero aquí es lo que puede hacer: Durante el análisis de su texto, puede cambiar partes de él para obtener la entonación y la inflexión que desea.

Por ejemplo, si encuentras la palabra 'Hey', vuelve a escribirla antes de enviarla al motor TTS para obtener una pronunciación diferente.

No es bonito, pero es una solución.

En la actualidad, Google TTS no admite la modificación de la inflexión ni admite etiquetas de prosodia incorporadas como se definen en SSML . – alanv Jun 5 a las 20:30

En la actualidad, Google TTS no admite la modificación de la inflexión ni admite etiquetas de prosodia incorporadas como se definen en SSML . Aunque hay parámetros que puede establecer, ninguno de ellos controla la inflexión o la prosodia por palabra.

Puede haber otros motores que soportan estas características. ESpeak , por ejemplo, soporta etiquetas SSML y tiene un puerto Android disponible en Play Store.

  • Pausa tono del teléfono mientras habla a través de texto a voz y luego reanudar
  • NullPointerException durante el uso de TTS en CustomListview
  • ¿Cómo agregar voces nuevas a Android Pico TTS?
  • Android TTS no habla gran cantidad de texto
  • Usar texto a voz en una llamada de voz
  • Referencia no resuelta en el anonimo oyente de Kotlin
  • Problema con isSpeaking () cuando se utiliza Text-to-Speech en Android
  • ¿Cómo saber si un motor TTS específico está activado?
  • ¿Por qué no se llama a UtteranceProgress Listener a Text to Speach?
  • ¿Existe una utilidad o API para convertir abreviaturas abreviadas de SMS a oraciones adecuadas?
  • Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.