IBM Cloud Docs
Elementos SSML

Elementos SSML

Con el servicio IBM Watson® Text to Speech, puede utilizar la mayoría de los elementos y atributos del lenguaje SSML (Speech Synthesis Markup Language) para controlar la síntesis del texto.

Elementos y atributos soportados

La Tabla 1 resume el soporte que da el servicio para los elementos y atributos SSML:

  • Completo significa que el servicio da soporte completo al elemento o atributo con sus interfaces HTTP y WebSocket.
  • Parcial significa que el soporte del servicio para el elemento o atributo está limitado de una de las maneras siguientes:
    • El servicio sólo da soporte a algunos aspectos del elemento o atributo.
    • El servicio da soporte al elemento o atributo con sólo algunas de sus voces.
    • El servicio admite el elemento o atributo sólo con una de sus interfaces, HTTP o WebSocket.
  • Ninguno significa que el servicio no da soporte al elemento o atributo.

En las secciones siguientes se proporcionan descripciones de cada elemento o atributo, incluyendo ejemplos, restricciones y si el soporte del servicio difiere del SSML estándar. El soporte para algunos atributos y valores difiere ligeramente de la especificación SSML. Para más información, consulte W3C Speech Synthesis Markup Language(SSML)Version 1.1.

Elementos y atributos SSML
Elemento o atributo Soporte Elemento o atributo Soporte
elemento <audio> Ninguna elemento <prosody> Parcial
elemento <break> Completo
  • atributo contour
Ninguna
elemento <desc> Ninguna
  • atributo duration
Ninguna
elemento <emphasis> Parcial Completo
elemento <express-as> Parcial
  • atributo range
Ninguna
elemento <lexicon> Ninguna Completo
elemento <mark> Parcial
  • atributo volume
Ninguna
elemento <meta> Ninguna elemento <say-as> Parcial
elemento <metadata> Ninguna Parcial
elemento <paragraph> Completo elemento <sentence> Completo
elemento <phoneme> Completo elemento <speak> Completo
elemento <sub> Completo
elemento <voice> Ninguna

El elemento <audio>

Este elemento <audio> inserta elementos grabados en el audio generado por el servicio. No está soportado.

El elemento <break>

El elemento <break> inserta una pausa en el texto hablado. Tiene los atributos opcionales siguientes:

  • strength especifica la longitud de la pausa en términos de valores de intensidad variables:
    • none suprime una pausa que si no se produciría durante el proceso.
    • x-weak, weak, medium, strong o x-strong insertan pausas cada vez más largas.
  • time especifica la longitud de la pausa en términos de segundos o milisegundos. Los valores válidos son {integer}s para segundos o {integer}ms para milisegundos.
Break size <break strength="none"/> no pause
Break size <break strength="x-weak"/> x-weak pause
Break size <break strength="weak"/> weak pause
Break size <break strength="medium"/> medium pause
Break size <break strength="strong"/> strong pause
Break size <break strength="x-strong"/> x-strong pause
Break size <break time="1s"/> one-second pause
Break size <break time="1500ms"/> 1500-millisecond pause

El elemento <break> es una funcionalidad beta para voces naturales.

El elemento <desc>

El elemento <desc> solo puede producirse dentro de un elemento <audio>. Dado que el elemento <audio> no está soportado, tampoco lo está el elemento <desc>.

El elemento <emphasis>

El elemento <emphasis> está soportado para su uso únicamente con las voces neuronales expresivas.

Con las voces neuronales expresivas, puede utilizar el elemento <emphasis> para enfatizar o desacentuar una o más palabras del texto de entrada. El elemento da soporte a un atributo level opcional que acepta uno de los valores siguientes:

  • none-Impide que el servicio resalte el texto que de otro modo se podría enfatizar.
  • moderate-Proporciona una notable cantidad de énfasis en el texto. Este nivel es el predeterminado si omite el atributo level.
  • strong-Proporciona una cantidad más significativa de énfasis en el texto que la que proporciona el nivel moderado.
  • reduced-Desenfatiza el texto tendiendo a reducir su significación en el audio. Este nivel es el opuesto a enfatizar el texto.

El ejemplo siguiente aplica el nivel moderate a la palabra give:

I am going to <emphasis level="moderate">give</emphasis> her the book.

Para obtener más información, consulte Cómo resaltar palabras.

El elemento <express-as>

El elemento <express-as> es una extensión SSML específica del servicio Text to Speech. Está soportado para su uso sólo con las voces neuronales expresivas.

Con las voces neuronales expresivas, puede utilizar el elemento <express-as> para aplicar estilos de habla para mejorar el énfasis del servicio de determinadas características para todo o parte del texto de entrada. El elemento da soporte a un atributo style necesario que acepta uno de los siguientes estilos de conversación:

  • cheerful-Expresa felicidad y buenas noticias.
  • empathetic-Expresa empatía y compasión.
  • neutral-Expresa objetividad y equidad.
  • uncertain-Expresa confusión e incertidumbre.

El ejemplo siguiente aplica el estilo cheerful a todo el texto de entrada:

<express-as style="cheerful">Oh, that's good news! I'm glad that we could help.</express-as>

Para obtener más información, consulte Utilización de estilos de habla.

El elemento <lexicon>

Este elemento <lexicon> introduce diccionarios de pronunciación para el documento SSML dado. No está soportado.

Puede utilizar la interfaz de personalización del servicio para definir un diccionario de entradas personalizadas (pares de palabra/conversión) para su uso durante la síntesis de voz. Para obtener más información, consulte Comprender la personalización.

El elemento <mark>

El elemento <mark> solo está soportado por la interfaz WebSocket del servicio, no por su interfaz HTTP, que lo ignora. Para obtener más información, consulte Especificar un elemento SSML mark.

El elemento <mark> no es compatible con las voces naturales.

El elemento <mark> es un elemento vacío que coloca un marcador en el texto que se va a sintetizar. El cliente recibe una notificación cuando se ha sintetizado todo el texto que precede al elemento <mark>. El elemento acepta solo un atributo name que especifica una serie que identifica de forma exclusiva la marca; el nombre debe empezar por un carácter alfanumérico. El nombre se devuelve junto con el tiempo en que aparece la marca en el audio sintetizado.

Hello <mark name="here"/> world.

Los elementos <meta> y <metadata>

Los elementos <meta> y <metadata> son contenedores en los que puede colocar información sobre el documento. No están soportados.

Los elementos <paragraph> y <sentence>

Los elementos <paragraph> (o <p>) y <sentence> (o <s>) son elementos opcionales que se pueden utilizar para dar sugerencias sobre la estructura textual. Si el texto que está dentro de un elemento <paragraph> o <sentence> no termina con un carácter de puntuación de fin de sentencia (como un punto), el servicio añade una pausa más larga de lo normal al audio sintetizado.

El único atributo válido para cualquiera de estos dos elementos es xml:lang, que permite cambiar de idioma. Este atributo no está soportado.

<paragraph>
  <sentence>Text within a sentence element.</sentence>
  <s>More text in another sentence.</s>
</paragraph>

El elemento <phoneme>

El elemento <phoneme> proporciona una pronunciación fonética para el texto que contiene. La escritura fonética representa los sonidos de una palabra, cómo los sonidos se dividen en sílabas y qué sílabas reciben acento. El elemento tiene dos atributos:

  • alphabet es un atributo opcional que especifica la fonología a utilizar. Los alfabetos soportados son

    • El Alfabeto Fonético Internacional estándar (IPA): alphabet="ipa".
    • La representación fonética simbólica de IBM (SPR - Symbolic Phonetic Representation): alphabet="ibm".

    Si no se especifica ningún alfabeto, el servicio utiliza el SPR de IBM de forma predeterminada. Para obtener más información, consulte Descripción de símbolos fonéticos.

  • ph es un atributo obligatorio que proporcionar la pronunciación en el alfabeto indicado. En los ejemplos siguientes se muestra la pronunciación de la palabra tomato en los dos formatos:

    • Formato IPA:

      <phoneme alphabet="ipa" ph="təˈmeɪ.ɾoʊ">tomato</phoneme>
      
    • Formato IPA con símbolos Unicode:

      <phoneme alphabet="ipa" ph="t&#x0259;&#x02C8;me&#x026A;.&#x027E;o&#x028A;">tomato</phoneme>
      
    • Formato IBM SPR:

      <phoneme alphabet="ibm" ph=".0tx.1me.0Fo">tomato</phoneme>
      

Para obtener más información sobre la utilización de las notaciones de SPR e IPA con el elemento <phoneme>, consulte Información sobre los símbolos fonéticos.

El elemento <prosody>

El elemento <prosody> controla el tono de voz y la velocidad de habla del texto. Todos los atributos son opcionales, pero se produce un error si no se especifica al menos un atributo con el elemento.

El servicio admite los dos atributos siguientes de la especificación SSML:

La especificación SSML también ofrece cuatro atributos que el servicio no admite:

  • El atributo contour
  • El atributo range
  • El atributo duration
  • El atributo volume

El servicio también soporta parámetros de consulta que le permiten ajustar la velocidad y el tono para todo el texto de una solicitud de síntesis de voz. Para obtener más información sobre los parámetros y su interacción con los atributos pitch y rate del elemento <prosody>, consulte

El elemento <prosody> no es compatible con las voces naturales.

Diferencias con respecto a la especificación SSML versión 1.1

El servicio Text to Speech basa su soporte de SSML en W3C Speech Síntesis Markup Language(SSML)Versión 1.1. Sin embargo, la especificación SSML ha evolucionado desde que se publicó por primera vez el servicio. Para mantener la compatibilidad con versiones anteriores para los usuarios, el servicio continúa dando soporte a algunas características del elemento <prosody> que son diferentes de la especificación SSML más reciente.

  • Para el atributo pitch, el servicio da soporte a las siguientes características adicionales:

    • Un cambio relativo en porcentaje indicado por un número firmado o sin firmar y seguido por un % (signo de porcentaje). El tono predeterminado para una voz es equivalente a pasar un valor de 0%.
    • Un cambio relativo en los semitones indicado por un número firmado o sin firmar y seguido de la serie st.
  • Para el atributo rate, el servicio da soporte a las siguientes características adicionales:

    • Un cambio relativo en porcentaje indicado por un número firmado o sin firmar y seguido por un % (signo de porcentaje). La velocidad de habla predeterminada para una voz es equivalente a pasar un valor de 0%.
    • Un número sin designación de unidad especifica el número de palabras por minuto. El número es absoluto; no puede especificar un aumento o disminución relativo de palabras por minuto.
  • Para las voces neuronales expresivas, los atributos pitch y rate sólo dan soporte a valores de porcentaje.

    • Para el atributo pitch, no utilice Hertz, semitones o palabras clave.
    • Para el atributo rate, no utilice palabras por minuto o palabras clave.

Para obtener más información sobre las características soportadas por SSML versión 1.1, consulte la sección 3.2.4 prosody Element de la especificación SSML.

El atributo pitch

El atributo pitch modifica el tono base del texto del elemento. Los valores aceptados son

  • Un número seguido de la designación Hz (Hertz): El tono se transporta desde la línea base (arriba o abajo) al valor especificado. Por ejemplo, 150Hz.
  • Un cambio relativo en porcentaje: Un número que provoca un cambio relativo respecto a la línea base por defecto. La cifra va precedida de + (aumento) o - (disminución) y seguida de % (signo de porcentaje). Un número sin signo seguido de un % se interpreta como un aumento positivo. Por ejemplo, +10% o 10%. El tono predeterminado para una voz es equivalente a pasar un valor de 0%.
  • Un cambio relativo en semitonos: Un número que provoca un cambio absoluto con respecto a la línea de base predeterminada. El número va precedido de + (un aumento) o - (una disminución) y seguido de st (semitonos). Un número sin signo seguido de st se interpreta como un aumento positivo. Por ejemplo, +5st o 5st.
  • Una palabra clave: Una de las seis palabras clave siguientes, que modifican el desplazamiento a los valores predefinidos correspondientes:
    • default utiliza el tono base predeterminado del servicio.
    • x-low baja la línea base del tono en 12 semitonos.
    • low baja la línea base del tono en seis semitonos.
    • medium produce el mismo comportamiento que default.
    • high sube la línea base del tono en seis semitonos.
    • x-high sube la línea base del tono en 12 semitonos.

Las voces neuronales expresivas sólo soportan valores de porcentaje para el atributo pitch. No soportan el uso de Hertz, semitones o palabras clave.

La mejor manera de determinar qué funciona para la aplicación es realizar ajustes basados en porcentajes y experimentar con diferentes valores. Pruebe los cambios incrementales del cinco o diez por ciento antes de realizar modificaciones más significativas.

<prosody pitch="150Hz">Transpose pitch to 150 Hz</prosody>
<prosody pitch="-20Hz">Lower pitch by 20 Hz from baseline</prosody>
<prosody pitch="+20Hz">Increase pitch by 20 Hz from baseline</prosody>
<prosody pitch="-10%">Decrease pitch by 10 percent</prosody>
<prosody pitch="+10%">Increase pitch by 10 percent</prosody>
<prosody pitch="-12st">Lower pitch by 12 semitones from baseline</prosody>
<prosody pitch="+12st">Increase pitch by 12 semitones from baseline</prosody>
<prosody pitch="x-low">Lower pitch by 12 semitones from baseline</prosody>

El atributo rate

El atributo rate indica un cambio en la velocidad de habla para el texto de dentro del elemento. Los valores aceptados son

  • Un número sin designación de unidad: La velocidad se cambia por el número especificado de palabras por minuto. Por ejemplo, un valor de 50 indica una tasa de habla de 50 palabras por minuto. El número es absoluto; no puede especificar un aumento o disminución relativo de palabras por minuto.
  • Un cambio relativo en porcentaje: Una cifra que provoca un cambio relativo respecto al porcentaje de habla por defecto. La cifra va precedida de + (aumento) o - (disminución) y seguida de % (signo de porcentaje). Un número sin signo seguido de un % se interpreta como un aumento positivo. Por ejemplo, +10% o 10%. La velocidad de habla predeterminada para una voz es equivalente a pasar un valor de 0%.
  • Una palabra clave: Una de las seis palabras clave siguientes, que modifican la velocidad de habla a los valores predefinidos correspondientes:
    • default utiliza la velocidad de conversación por defecto del servicio.
    • x-slow disminuye la velocidad en un 50 por ciento.
    • slow disminuye la velocidad en un 25 por ciento.
    • medium produce el mismo comportamiento que default.
    • fast aumenta la velocidad en un 25 por ciento.
    • x-fast aumenta la velocidad en un 50 por ciento.

Las voces neuronales expresivas sólo soportan valores de porcentaje para el atributo rate. No soportan palabras por minuto o palabras clave.

La mejor manera de determinar qué funciona para la aplicación es realizar ajustes basados en porcentajes y experimentar con diferentes valores. Pruebe los cambios incrementales del cinco o diez por ciento antes de realizar modificaciones más significativas.

<prosody rate="50">Set speaking rate to 50 words per minute</prosody>
<prosody rate="-5%">Decrease speaking rate by 5 percent</prosody>
<prosody rate="+5%">Increase speaking rate by 5 percent</prosody>
<prosody rate="slow">Decrease speaking rate by 25%</prosody>
<prosody rate="fast">Increase speaking rate by 25%</prosody>

El elemento <say-as>

El elemento <say-as> proporciona información sobre el tipo de texto que contiene el elemento y especifica el nivel de detalle con que representar el texto.

  • El elemento tiene un atributo obligatorio, interpret-as, que indica cómo se debe interpretar el texto.
  • El elemento tiene dos atributos opcionales, format y detail, que se utilizan solo con valores particulares del atributo interpret-as, tal como se muestra en los ejemplos siguientes.

El servicio admite el elemento <say-as> con los siguientes idiomas:

  • El servicio admite completamente el elemento <say-as> para el inglés de EE.UU.
  • Para la mayoría de los demás idiomas, el servicio solo admite los atributos digits y letters del elemento.
  • Para Japonés, el servicio solo admite el atributo digits. El servicio ignora los caracteres no numéricos que se incluyen en la serie de dígitos.

La pronunciación predeterminada del servicio de cadenas alfabéticas, numéricas y alfanuméricas varía según el idioma, con cada idioma teniendo sus propias reglas. Puede utilizar el elemento <say-as> para controlar cómo se pronuncian las series, incluyendo si se van a deletrear como caracteres individuales con los elementos letters y digits.

Para el alemán, también puede controlar el ritmo al que el servicio pronuncia los caracteres. Para obtener más información, consulte Especificación de cómo se escriben las series.

El atributo interpret-as

A continuación se indican los valores aceptables del atributo interpret-as y ejemplos de cada valor. El servicio admite a los siguientes valores como argumentos del atributo interpret-as:

cardinal

El valor cardinal indica que hay que expresar el número cardinal del numeral que contiene el elemento. Los ejemplos siguientes se leen Super Bowl forty-nine. El primero es superfluo, puesto que no modifica el comportamiento predeterminado del servicio.

Super Bowl <say-as interpret-as="cardinal">49</say-as>
Super Bowl <say-as interpret-as="cardinal">XLIX</say-as>

date

El valor date lee la fecha del elemento de acuerdo con el formato indicado en el atributo format asociado. El atributo format es obligatorio para el valor date. Si format no está, el servicio igualmente intenta pronunciar la fecha. En los siguientes ejemplos se leen las fechas indicadas en los formatos especificados, donde d, m e y representan día, mes y año.

<say-as interpret-as="date" format="mdy">12/17/2005</say-as>
<say-as interpret-as="date" format="ymd">2005/12/17</say-as>
<say-as interpret-as="date" format="dmy">17/12/2005</say-as>
<say-as interpret-as="date" format="ydm">2005/17/12</say-as>
<say-as interpret-as="date" format="my">12/2005</say-as>
<say-as interpret-as="date" format="md">12/17</say-as>
<say-as interpret-as="date" format="ym">2005/12</say-as>

digits

El valor digits lee los dígitos del número que hay en el elemento. (El valor también pronuncia individualmente cualquier carácter alfabético que se incluya en la serie delimitada.) En el ejemplo siguiente se pronuncian los dígitos individuales 123456.

<say-as interpret-as="digits">123456</say-as>

interjection

El atributo interjection es una extensión SSML específica del servicio Text to Speech. Está soportado para su uso sólo con las voces neuronales expresivas.

Con las voces neuronales expresivas, el servicio enfatiza automáticamente las interjecciones siguientes: aha, hmm, huh, oh, uh, uh-huh y um. Puede utilizar el valor interjection para habilitar o inhabilitar el énfasis del servicio de las interjecciones aha y oh. Incluya el atributo enabled adicional con un valor de true o false para habilitar o inhabilitar la interjección.

El ejemplo siguiente inhabilita el énfasis de las interjecciones aha y oh en el texto:

<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.

Para obtener más información, consulte Énfasis en las interjecciones.

letters

El valor letters deletrea los caracteres de la palabra dentro del elemento. (El valor también pronuncia individualmente cualquier carácter numérico que se incluya en la serie incluida.) En el ejemplo siguiente se deletrean las letras de la palabra hello.

<say-as interpret-as="letters">Hello</say-as>

También puede especificar el valor group o single con el atributo opcional format. Estos atributos ayudan a mejorar la legibilidad de las cadenas alfanuméricas, como la confirmación de números e ID. El formato single añade más silencio al deletrear los caracteres uno a uno. El formato group añade un silencio más largo cuando pasamos de dígitos a letras y viceversa, y después de leer cada 3 ó 4 caracteres del mismo tipo.

<say-as interpret-as="letters" format=“single”>112A567B</say-as>
<say-as interpret-as="letters" format=“group”>3174A2W486</say-as>

number

El valor number ofrece una alternativa a los valores cardinal y ordinal. Puede utilizar el atributo opcional format para indicar cómo se debe interpretar una serie de números. En el primer ejemplo se omite el atributo format para pronunciar el número como un valor cardinal. En el segundo ejemplo se especifica explícitamente que el número se tiene que pronunciar como un valor cardinal. En el tercer ejemplo se especifica que el número se debe pronunciar como un valor ordinal.

<say-as interpret-as="number">123456</say-as>
<say-as interpret-as="number" format="cardinal">123456</say-as>
<say-as interpret-as="number" format="ordinal">123456</say-as>

También puede especificar el valor telephone para el atributo format. Los ejemplos siguientes muestran dos maneras distintas de pronunciar una serie de números como un número de teléfono. Para pronunciar los números incluyendo la puntuación, especifique el valor punctuation en el atributo opcional detail.

<say-as interpret-as="number" format="telephone">555-555-5555</say-as>
<say-as interpret-as="number" format="telephone" detail="punctuation">555-555-5555</say-as>

ordinal

El valor ordinal lee el valor ordinal del dígito de dentro del elemento. En el ejemplo siguiente se pronuncia second first.

<say-as interpret-as="ordinal">2</say-as>
<say-as interpret-as="ordinal">1</say-as>

vxml:boolean

El valor vxml:boolean lee yes o no si el valor es true o false en el elemento.

<say-as interpret-as="vxml:boolean">true</say-as>
<say-as interpret-as="vxml:boolean">false</say-as>

vxml:currency

El valor vxml:currency se utiliza para controlar la síntesis de los valores monetarios. La serie debe estar escrita en el formato UUUmm.nn, donde UUU es el indicador de moneda de tres caracteres que se especifica en el estándar ISO 4217 y mm.nn es la cantidad. En el ejemplo siguiente se lee forty-five dollars and thirty cents.

<say-as interpret-as="vxml:currency">USD45.30</say-as>

Si el número especificado incluye más de dos decimales, la cantidad se sintetiza como un número decimal seguido del indicador de moneda. Si el indicador de moneda de tres caracteres no está, la cantidad se sintetiza simplemente como un número decimal y no se pronuncia el tipo de moneda. En el ejemplo siguiente se lee forty-five point three two nine US dollars.

<say-as interpret-as="vxml:currency">USD45.329</say-as>

vxml:date

El valor vxml:date funciona como el valor date, pero el formato está predefinido como YYYYMMDD. Si no se conoce un valor de día, mes o año o si no se desea que se diga, sustituya el valor por un ? (signo de interrogación). En el segundo y tercer ejemplo aparecen signos de interrogación.

<say-as interpret-as="vxml:date">20050720</say-as>
<say-as interpret-as="vxml:date">????0720</say-as>
<say-as interpret-as="vxml:date">200507??</say-as>

vxml:time

El valor 'vxml:time' habla de la hora dentro del elemento según el formato dado en el atributo format asociado. El atributo format es necesario para el valor de la hora. El formato debe ser de cuatro dígitos sin sufijo, "a", "p" o "h". Los siguientes ejemplos muestran la hora indicada en los formatos especificados, donde d, m e y representan el día, el mes y el año.

<say-as interpret-as="vxml:time">1230</say-as>
<say-as interpret-as="vxml:time">1230a</say-as>
<say-as interpret-as="vxml:time">1230p</say-as>
<say-as interpret-as="vxml:time">0100h</say-as>

vxml:digits

El valor vxml:digits proporciona las mismas capacidades que el valor digits.

vxml:phone

El valor vxml:phone lee un número de teléfono que contiene dígitos y signos de puntuación. Es equivalente a utilizar el valor number y especificar telephone en el atributo format y punctuation en el atributo detail.

<say-as interpret-as="vxml:phone">555-555-5555</say-as>

El elemento <speak>

El servicio admite fragmentos SSML, que son elementos SSML que no incluyen la cabecera XML completa. El elemento <speak> es opcional para SSML que se pasa al servicio.

El elemento <speak> es el elemento raíz de los documentos SSML. Los atributos válidos son

  • version es un atributo obligatorio que indica la especificación SSML. El valor aceptado es 1.0.
  • xml:lang no es obligatorio para el servicio. Omita este atributo cuando utilice este elemento. Tenga en cuenta que no puede utilizar este atributo para cambiar el idioma de una solicitud de síntesis de voz.
  • xml:base no tiene ningún efecto.
  • xmlns no es obligatorio para el servicio. Omita este atributo cuando utilice este elemento.
<speak version="1.1">
  The text to be spoken.
</speak>

El elemento <sub>

El elemento <sub> indica que el texto especificado por el atributo alias es sustituirá el texto que está dentro del elemento cuando se sintetice el discurso. El atributo alias es el único atributo de este elemento y es obligatorio.

<sub alias="International Business Machines">IBM</sub>

El elemento <voice>

Este elemento <voice> solicita un cambio de voz. No está soportado.