2010-08-19 6 views
7

Pasando el siguiente documento SSML (Speech Synthesis Markup Language) al motor com.svox.pico TextToSpeech resultó en una lectura del cuerpo XML pero sin control desde el elemento fonema o el elemento de énfasis. Este resultado (sin aparente de control SSML) es la misma en un Nexus One con Android 2.2, así como en el emulador de la ejecución de un AVD con nivel SDK 8.¿Android TTS es compatible con el lenguaje de marcado de síntesis de voz?

  String text = "<?xml version=\"1.0\"?>" + 
       "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" " + 
        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + 
        "xsi:schemaLocation=\"http://www.w3.org/2001/10/synthesis " + 
         "http://www.w3.org/TR/speech-synthesis/synthesis.xsd\" " + 
        "xml:lang=\"en-US\">" + 

        "tomato " + 
        "<phoneme alphabet=\"ipa\" ph=\"t&amp;#x259;mei&amp;#x325;&amp;#x27E;ou&amp;#x325;\"> tomato </phoneme> " + 

        "That is a big car! " + 
        "That <emphasis> is </emphasis> a big car! " + 
        "That is a <emphasis> big </emphasis> car! " + 
        "That is a huge bank account! " + 
        "That <emphasis level=\"strong\"> is </emphasis> a huge bank account! " + 
        "That is a <emphasis level=\"strong\"> huge </emphasis> bank account!" + 
       "</speak>"; 
      mTts.speak(text, TextToSpeech.QUEUE_ADD, null); 

¿Tiene cualquier soporte de motor de Android TTS cualquiera de los SSML ¿elementos?

Respuesta

1

La respuesta parece ser "algo así". Aún no se admiten todas las etiquetas SSML, pero algunos ejemplos de prueba del uso de la etiqueta <phoneme> están en https://android.googlesource.com/platform/external/svox/+/89292811b7fe82e5c14fa13942779763627e26db

Aunque los ejemplos de prueba producen la salida de voz deseada, también producen mensajes de error del analizador XML en logcat. He abierto un problema sobre estos mensajes de error aparentemente incorrectos en el rastreador de problemas de Android (problema 11010).

3

He estado experimentando con SSML y parece que el motor TTS envuelve su entrada automáticamente con el elemento raíz <speak>, por lo que si lo deja fuera, entonces funciona bien y no obtiene un error del analizador.

Ejemplo:

String text = "Testing <phoneme alphabet=\"xsampa\" ph=\"&#34;{[email protected]`\"/>."; 
mTts.speak(text, TextToSpeech.QUEUE_ADD, null); 
Cuestiones relacionadas