IBM Cloud Docs
Información sobre SSML

Información sobre SSML

SSML (Speech Synthesis Markup Language) es un lenguaje de códigos basado en XML que proporciona anotaciones de texto para aplicaciones de síntesis de voz. Es una recomendación del W3C Voice-Browser Working Group y se ha adoptado como el lenguaje de marcación estándar para la síntesis de voz por la especificación de VoiceXML 2.0. SSML proporciona a los desarrolladores de aplicaciones de habla una forma estándar de controlar aspectos del proceso de síntesis, permitiéndoles especificar la pronunciación, el volumen, el tono, la velocidad y otros atributos a través de la marcación. Puede utilizar SSML para controlar la síntesis de su texto con todos los idiomas compatibles.

El servicio IBM Watson® Text to Speech basa su compatibilidad en la versión 1.1 de SSML, recomendada por W3C el 7 de septiembre de 2010. Para obtener más información sobre la recomendación SSML W3C, consulte W3C Speech Synthesis Markup Language(SSML)Version 1.1.

Introducción a SSML

SSML funciona aumentando el texto sin formato que se pasa a un sintetizador con un conjunto predefinido de elementos o etiquetas. Un analizador XML primero separa el texto de entrada sin formato de las especificaciones de marcado. A continuación, las especificaciones se procesan y se envían como un conjunto de instrucciones en una forma que el sintetizador pueda comprender para producir los efectos deseados. Para que el analizador XML pueda llevar a cabo esta tarea, la marcación tiene que tener un formato correcto; por ejemplo, los elementos se tienen que cerrar y si hay varios elementos, tienen que estar correctamente anidados. Para una introducción a los conceptos básicos de XML, consulte w3schools.com/xml/xml_whatis.asp.

Un elemento SSML es cualquier cosa contenida entre una etiqueta de apertura y su etiqueta de cierre correspondiente y que incluye ambas etiquetas. Como se muestra en el ejemplo siguiente, un elemento puede contener una combinación de otros elementos (los códigos pueden anidarse) y texto. Además, los elementos pueden requerir o aceptar opcionalmente atributos definidos con valores particulares.

<tag1>
  <tag2 attributeName="attributeValue">
    ... some text ...
  </tag2>
</tag1>

Un documento SSML legal completo consta de un prólogo XML, que contiene información como la codificación y el esquema con el que se debe validar el documento SSML, seguido del elemento raíz, <speak>. Dentro del ámbito del elemento <speak>, se especifica el texto que se va a sintetizar, aumentado con elementos adicionales.


<?xml version="1.0" encoding="UTF-8"?>


<speak version="1.1">
  ... the body that contains text to be synthesized plus markup ...
</speak>

El prólogo XML no es necesario para el texto que pasa al servicio. El servicio da soporte a fragmentos SSML, que son elementos SSML que no incluyen la cabecera XML completa y no necesitan incluir sus elementos padre. Por ejemplo, los elementos <?xml> y <speak> siempre son opcionales para SSML que envía para síntesis.

Soporte de SSML

Para obtener más información sobre el uso de SSML y las funciones relacionadas con el servicio, consulte lo siguiente:

  • El servicio implementa la mayor parte de la especificación W3C y da soporte a fragmentos SSML.
    • Para obtener información completa sobre el nivel de soporte del servicio para todos los elementos SSML, consulte Elementos SSML.
    • Para ver ejemplos de utilización de elementos SSML con el text de una solicitud de síntesis de voz, consulte Ejemplos de texto de entrada.
  • El servicio admite características de síntesis adicionales para voces neuronales y expresivas mejoradas:
  • El servicio admite características de síntesis adicionales para voces neuronales expresivas:
  • El servicio da soporte a una característica de síntesis que le permite controlar cómo se escriben las cadenas alfanuméricas para las voces en alemán. Para obtener más información, consulte Especificación de cómo se escriben las series.
  • El servicio da soporte al uso del elemento SSML <mark> con la interfaz WebSocket para obtener información de temporización para palabras del audio resultante. La interfaz WebSocket también le permite solicitar información para todas las series del texto de entrada. Para obtener más información, consulte
  • La interfaz de personalización del servicio admite el uso del elemento SSML <phoneme> para especificar la ortografía fonética que debe utilizar para pronunciar una palabra. La ortografía fonética representa los sonidos de una palabra, cómo esos sonidos se dividen en sílabas, y qué sílabas reciben acentuación.
    • Para obtener información sobre la interfaz de personalización, consulte Comprender la personalización.
    • Para obtener información sobre los símbolos válidos que puede utilizar en una especificación IPA (International Phonetic Alphabet) o IBM SPR (Symbolic Phonetic Representante) para cualquier idioma soportado, consulte Comprender los símbolos fonéticos.

Validación de SSML

El servicio valida todos los elementos SSML que se envían en cualquier contenido, ya sea como texto de entrada para la síntesis o como la definición de la conversión de una palabra para la personalización. El servicio no puede determinar antes de tiempo si el texto enviado para la síntesis contiene elementos SSML. Por lo tanto, realiza la misma validación para todo el texto de entrada, independientemente de si contiene SSML.

Validación de elementos y atributos

El servicio realiza la siguiente validación de elementos y atributos SSML:

  • Toda entrada SSML debe ser correcta y estar bien formada.

  • El servicio ignora silenciosamente los elementos SSML no soportados. El servicio sintetiza el texto contenido en las etiquetas de un elemento no soportado; sólo se ignora el elemento.

  • El servicio devuelve un código de error HTTP 400 para elementos o atributos SSML no válidos. Al especificar elementos SSML que requieren un atributo:

    • Debe especificar el atributo necesario.
    • Debe especificar un valor válido para el atributo necesario.
    • Si incluye atributos o valores no válidos adicionales, se ignorarán.

    Si la solicitud falla, la respuesta de error incluye un mensaje descriptivo. Por ejemplo, supongamos que especifica el siguiente texto de entrada, que incluye el elemento <say-as> :

    "text": "The price is <say-as interpret-as=\"currency\">$2,500.00</say-as>."
    

    En este ejemplo, el atributo interpret-as es obligatorio y se especifica, pero su valor no es válido. Un valor válido para el atributo es vxml:currency, no currency. La respuesta de error incluye el mensaje siguiente:

    The connection to the Watson Text to Speech service closed with the following error: Tag <say-as> has invalid attribute interpret-as=currency
    

Resumen de errores SSML

La Tabla 1 describe muchos errores de validación SSML comunes. En cada caso, la solicitud falla y el servicio devuelve un código de error 400.

Errores de validación SSML
Error de validación Descripción del problema
Elemento SSML no válido Por ejemplo, si se especifica una etiqueta de forma incorrecta, se omite un atributo obligatorio o se incluye un código de apertura, pero no el código de cierre correspondiente.
Caracteres de control XML sin escape El propio texto de entrada contiene un carácter ", ', &, <, > o / en lugar de su cadena de escape o codificación de caracteres equivalente. Para obtener más información, consulte Escapar los caracteres de control XML.
Estrés de sílaba no válido El atributo ph de un elemento <phoneme> para IBM SPR incluye un acento silábico no válido. Para obtener más información sobre cómo indicar las sílabas y el estrés de las sílabas, consulte Especificación de sílabas.
Símbolo fonético no válido El atributo ph de un elemento <phoneme> incluye un símbolo IPA o SPR no admitido para el idioma especificado.
Sin vocales El atributo ph de un elemento <phoneme> especifica una pronunciación de palabra que no incluye vocales.
Enlace francés en lugar no válido En el atributo ph de un elemento <phoneme>, el carácter de enlace no sigue a una consonante o se produce en medio de la pronunciación de una palabra.
El símbolo : japonés no precede a una vocal En el atributo ph de un elemento <phoneme> en japonés, un carácter : no aparece antes de una vocal (posiblemente con otros símbolos, como el límite silábico, en medio).
Uso no válido del elemento SSML <prosody> No se pueden utilizar los atributos contour, duration, range y volume del elemento <prosody> con ninguna voz.
Uso no válido del elemento SSML <express-as> Puede utilizar el elemento <express-as> sólo con voces neuronales expresivas.