Mejora de la síntesis con el Lenguaje de marcado de síntesis de voz (SSML)

El Lenguaje de marcado de síntesis de voz (SSML) es un lenguaje de marcado basado en XML que permite a los desarrolladores especificar cómo se convierte el texto de entrada en una voz sintetizada mediante la conversión de texto a voz. En comparación con el texto sin formato, SSML permite a los desarrolladores ajustar el tono, la pronunciación, la velocidad del habla, el volumen y muchas cosas más en la salida de texto a voz. La puntuación normal, como hacer una pausa después de un punto o usar la entonación correcta cuando una oración termina con un signo de interrogación, se administra automáticamente.

Sugerencia

Cree texto sin formato y SSML mediante la herramienta Creación de contenido de audio en Speech Studio. Puede escuchar el audio de salida y ajustar SSML para mejorar la síntesis de voz. Para más información, consulte Síntesis de voz con la herramienta Creación de contenido de audio.

La implementación del servicio de Voz de SSML se basa en la versión 1.0 del Lenguaje de marcado de síntesis de voz del World Wide Web Consortium.

Importante

Se le cobrará por cada carácter que se convierta a voz, incluida la puntuación. Aunque el documento SSML en sí no es facturable, los elementos opcionales que se usan para ajustar el modo de convertir el texto a voz, como los fonemas y el tono, se cuentan como caracteres facturables. Para más información, consulte las notas de precios de texto a voz.

Voces neuronales precompiladas y voces neuronales personalizadas

Use una voz neuronal de tipo humano o cree su propia voz neuronal personalizada única para su producto o marca. Para obtener una lista completa de los idiomas admitidos, las configuraciones regionales y las voces, consulte Compatibilidad con idiomas y voces en el servicio de Voz. Para más información sobre el uso de una voz neuronal generada previamente y una voz neuronal personalizada, consulte ¿Qué es el texto a voz neuronal?

Nota

Puede escuchar voces en distintos estilos y tonos mediante la lectura de texto de ejemplo mediante el sitio web de Text to Speech.

Caracteres especiales

Al usar SSML, recuerde que los caracteres especiales, como comillas, apóstrofos y corchetes, deben tener caracteres de escape. Para más información, consulte Lenguaje de marcado extensible (XML) 1.0: Apéndice D.

Elementos SSML admitidos

Cada documento SSML se crea con los elementos SSML (o etiquetas). Estos elementos se utilizan para ajustar el tono, la prosodia, el volumen y mucho más. En las siguientes secciones, se detalla cómo se utiliza cada elemento y cuándo es necesario u opcional.

Importante

No olvide utilizar marcas de comillas dobles alrededor de los valores de atributo. Las normas para un XML válido y bien formado requieren que los valores de los atributos estén rodeados de comillas dobles. Por ejemplo, <prosody volume="90"> es un elemento válido y bien formado, pero <prosody volume=90> no. Es posible que SSML no reconozca los valores de atributo que no están entre marcas de comillas dobles.

Creación de un documento SSML

El elemento speak es el elemento raíz. Es obligatorio para todos los documentos SSML. El elemento speak contiene información importante, como la versión, el idioma y la definición del vocabulario de marcado.

Sintaxis

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>

Atributos

Atributo Descripción Obligatorio u opcional
version Indica la versión de la especificación SSML utilizada para interpretar el marcado del documento. La versión actual es 1.0. Obligatorio
xml:lang Especifica el idioma del documento raíz. El valor puede contener un código de idioma en minúsculas de dos letras, por ejemplo, en. O bien, el valor puede contener el código de idioma y el país o región en mayúsculas, por ejemplo, en-US. Obligatorio
xmlns Especifica el URI del documento que define el vocabulario de marcado (los tipos de elementos y nombres de atributos) del documento SSML. El identificador URI actual es http://www.w3.org/2001/10/synthesis. Obligatorio

Elección de una voz para la conversión de texto a voz

El elemento voice es obligatorio. Se utiliza para especificar la voz que se usa en la conversión de texto a voz.

Sintaxis

<voice name="string">
    This text will get converted into synthesized speech.
</voice>

Atributo

Atributo Descripción Obligatorio u opcional
name Identifica la voz que se usa para la salida de texto a voz. Para obtener una lista completa de voces compatibles pregeneradas, vea Compatibilidad con idiomas. Para usar la voz neuronal personalizada, especifique el nombre del modelo como nombre de voz en SSML. Obligatorio

Ejemplo

En este ejemplo se usa la voz en-US-JennyNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        This is the text that is spoken.
    </voice>
</speak>

Uso de varias voces

Dentro del elemento speak, puede especificar varias voces para la salida de texto a voz. Estas voces pueden estar en diferentes idiomas. Para cada voz, el texto se debe encapsular en un elemento voice.

Atributo

Atributo Descripción Obligatorio u opcional
name Identifica la voz que se usa para la salida de texto a voz. Para ver una lista completa de voces compatibles, consulte Compatibilidad con idiomas. Obligatorio

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Good morning!
    </voice>
    <voice name="en-US-ChristopherNeural">
        Good morning to you too Jenny!
    </voice>
</speak>

Ajuste de los estilos de habla

De manera predeterminada, la conversión de texto a voz sintetiza el texto mediante un estilo de habla neutro para voces neuronales. Puede ajustar el estilo del habla, el grado del estilo y el rol en el nivel de oración.

Se admiten estilos, grado de estilo y roles para un subconjunto de voces neuronales. Si no se admite un estilo o un rol, el servicio utiliza la voz neutra predeterminada. Para determinar los estilos y roles que se admiten para cada voz, utilice:

Atributo Descripción Obligatorio u opcional
style Especifica el estilo de habla predefinido o personalizado . Los estilos de habla son específicos de la voz. Se necesita si se ajusta el estilo de habla para una voz neuronal. Si usa mstts:express-as, se debe proporcionar el estilo. Si se proporciona un valor no válido, se omite este elemento.
styledegree Especifica la intensidad del estilo de voz. Valores aceptados: 0,01 a 2, inclusivo. El valor predeterminado es 1, que señala la intensidad de estilo predefinida. La unidad mínima es 0,01, cuyo resultado una ligera tendencia hacia el estilo de destino. Un valor de 2, como resultado, duplica la intensidad de estilo predeterminada. Opcional. Si no establece el atributo style, se omite el atributo styledegree. Se admiten ajustes del grado del estilo de habla de las voces neuronales en chino (mandarín y simplificado).
role Especifica la representación del habla. La voz actúa como una edad y sexo diferentes, pero el nombre de la voz no cambia. Opcional. Se admiten ajustes del rol de estas voces neuronales en chino (mandarín y simplificado): zh-CN-XiaomoNeural, zh-CN-XiaoxuanNeural, zh-CN-YunxiNeural y zh-CN-YunyeNeural.

Estilo

El elemento mstts:express-as se usa para expresar emociones como la alegría, la empatía y la calma. También puede optimizar la voz para distintos escenarios, como el servicio de atención al cliente, las noticias y el asistente de voz.

Para obtener una lista de los estilos admitidos por las voces neuronales predefinidas, consulte roles y estilos de voz admitidos.

Para usar el estilo personalizado, especifique el nombre de estilo que especificó en Speech Studio.

Sintaxis

<mstts:express-as style="string"></mstts:express-as>

Ejemplo

Este fragmento de SSML ilustra cómo se utiliza el elemento <mstts:express-as> para cambiar el estilo de habla a cheerful.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <mstts:express-as style="cheerful">
            That'd be just amazing!
        </mstts:express-as>
    </voice>
</speak>

La tabla siguiente contiene descripciones de cada estilo admitido.

Estilo Descripción
style="advertisement_upbeat" Expresa un tono emocionado y con mucha energía para promover un producto o servicio.
style="affectionate" Expresa un tono cálido y afectuoso, agudo y con una energía vocal alta. El hablante está en un estado que atrae la atención de su interlocutor. La personalidad del hablante suele ser simpática por naturaleza.
style="angry" Expresa un tono enfadado y molesto.
style="assistant" Expresa un tono cálido y relajado para los asistentes digitales.
style="calm" Expresa una actitud interesante, recolectada y compuesta al hablar. El tono, la intensidad y la prosodia son más uniformes en comparación con otros tipos de voz.
style="chat" Expresa un tono casual y relajado.
style="cheerful" Expresa un tono positivo y feliz.
style="customerservice" Expresa un tono amistoso y servicial para la asistencia al cliente.
style="depressed" Expresa un tono melancólico y pesimista, con un tono más grave y energía vocal.
style="disgruntled" Expresa desdén y un tono de queja. La voz de esta emoción muestra desagrado y desprecio.
style="documentary-narration" Narra documentales en un estilo relajado, interesante e informativo adecuado para doblaje documentales, comentarios expertos y contenido similar.
style="embarrassed" Expresa un tono vacilante e inseguro cuando quien habla se siente incómodo.
style="empathetic" Expresa un sentimiento de cuidado y comprensión.
style="envious" Expresa un tono de admiración cuando desea algo que otra persona tiene.
style="excited" Expresa un tono optimista y esperanzador. Suena como si estuviera ocurriendo algo genial y el orador estuviera muy contento por ello.
style="fearful" Expresa un tono asustado y nervioso, agudo, con energía vocal alta y más velocidad. El hablante está en un estado de tensión y desasosiego.
style="friendly" Expresa un tono agradable, acogedor y cálido. Suena sincero y cariñoso.
style="gentle" Expresa un tono dulce, educado y agradable, con un tono más grave y energía vocal.
style="hopeful" Expresa un tono cálido y de deseo. Parece que algo bueno le pasará al orador.
style="lyrical" Expresa emociones de manera melódica y sentimental.
style="narration-professional" Exprese un tono objetivo y profesional para la lectura de contenido.
style="narration-relaxed" Utilice un tono tranquilizador y melodioso para la lectura del contenido.
style="newscast" Expresa un tono formal y profesional para narrar noticias.
style="newscast-casual" Expresa un tono versátil e informal para la difusión de noticias generales.
style="newscast-formal" Expresa un tono formal, seguro y autoritario para la difusión de noticias.
style="poetry-reading" Expresa un tono emocional y rítmico mientras lee un poema.
style="sad" Expresa un tono afligido.
style="serious" Expresa un tono estricto e imponente. A menudo, el hablante suena rígido y mucho menos relajado, con una cadencia firme.
style="shouting" Habla como desde la distancia o desde fuera para hacerse oír claramente
style="sports_commentary" Expresa un tono relajado e interesante para transmitir un evento deportivo.
style="sports_commentary_excited" Expresa un tono intenso y enérgico para transmitir momentos emocionantes en un evento deportivo.
style="whispering" Habla en voz baja y emite un sonido tranquilo y suave
style="terrified" Expresa un tono muy asustado, con un ritmo más rápido y una voz más agitada. Suena como si el orador estuviera en un estado inestable y frenético.
style="unfriendly" Expresa un tono frío e indiferente.

Grado de estilo

La intensidad del estilo de habla se puede ajustar para responder mejor a su caso de uso. Especifique un estilo más seguro o más suave con el atributo styledegree a fin de que la voz sea más expresiva o moderada.

Para obtener una lista de las voces neuronales que admiten el grado de estilo de habla, consulte roles y estilos de voz admitidos.

Sintaxis

<mstts:express-as style="string" styledegree="value"></mstts:express-as>

Ejemplo

Este fragmento de código SSML muestra cómo se usa el atributo styledegree para cambiar la intensidad del estilo de habla de zh-CN-XiaomoNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
    <voice name="zh-CN-XiaoxiaoNeural">
        <mstts:express-as style="sad" styledegree="2">
            快走吧,路上一定要注意安全,早去早回。
        </mstts:express-as>
    </voice>
</speak>

Rol

Además de ajustar los estilos de habla y el grado del estilo, también puede ajustar el parámetro role para que la voz parezca que es de alguien de otra edad y género. Por ejemplo, una voz masculina puede subir el tono y cambiar la entonación para que parezca femenina, pero el nombre de la voz no cambiará.

Para obtener una lista de los roles admitidos por voz neuronal, consulte roles y estilos de voz admitidos.

Sintaxis

<mstts:express-as role="string" style="string"></mstts:express-as>

Ejemplo

Este fragmento de código SSML muestra cómo se usa el atributo role para cambiar la representación de zh-CN-XiaomoNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
    <voice name="zh-CN-XiaomoNeural">
        女儿看见父亲走了进来,问道:
        <mstts:express-as role="YoungAdultFemale" style="calm">
            “您来的挺快的,怎么过来的?”
        </mstts:express-as>
        父亲放下手提包,说:
        <mstts:express-as role="OlderAdultMale" style="calm">
            “刚打车过来的,路上还挺顺畅。”
        </mstts:express-as>
    </voice>
</speak>

La tabla siguiente contiene descripciones de cada rol admitido.

Role Descripción
role="Girl" La voz imita a la de una chica.
role="Boy" La voz imita a la de un chico.
role="YoungAdultFemale" La voz imita la de una mujer adulta joven.
role="YoungAdultMale" La voz imita la de un hombre adulto joven.
role="OlderAdultFemale" La voz imita a la de una mujer adulta anciana.
role="OlderAdultMale" La voz imita a la de un hombre adulto anciano.
role="SeniorFemale" La voz imita la de una mujer anciana.
role="SeniorMale" La voz imita la de un hombre anciano.

Ajuste de idiomas de habla

De manera predeterminada, las voces neuronales son fluidas en su propio idioma y en inglés sin usar el <lang xml:lang> elemento. Por ejemplo, si el texto de entrada en inglés es «I'm excited to try text to speech» (estoy encantado de probar texto a voz) y usa la es-ES-ElviraNeural voz, el texto se hablará en inglés con acento español. Con la mayoría de las voces neuronales, actualmente no se admite la configuración de un idioma de habla específico con un <lang xml:lang> elemento en el nivel de oración o palabra.

Puede ajustar el idioma de habla por en-US-JennyMultilingualNeural voz neuronal a nivel de frase y de palabra mediante el <lang xml:lang> elemento. La voz neuronal en-US-JennyMultilingualNeural es multilingüe en 14 idiomas (por ejemplo: inglés, español y chino). Los idiomas admitidos se proporcionan en una tabla que sigue la sintaxis <lang> y las definiciones de atributos.

Sintaxis

<lang xml:lang="string"></lang>

Atributo

Atributo Descripción Obligatorio u opcional
lang Especifica el idioma en el que quiere que hable la voz neuronal. Necesario para ajustar el idioma de habla de la voz neuronal. Si usa lang xml:lang, se debe proporcionar la configuración regional.

Nota

El elemento <lang xml:lang> no es compatible con los elementos prosody y break. No se pueden ajustar la pausa y la prosodia como el tono, el contorno, la velocidad o el volumen en este elemento.

Utilice esta tabla para determinar qué idiomas de habla son compatibles para cada voz neuronal. Si la voz no habla el idioma del texto de entrada, el servicio de Voz no genera audio sintetizado.

Voz Configuración regional principal y predeterminada Configuraciones regionales secundarias
en-US-JennyMultilingualNeural en-US de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Ejemplo

El idioma principal de en-US-JennyMultilingualNeural es en-US. Debe especificar en-US como idioma predeterminado en el elemento speak, independientemente de si el idioma se ajusta o no en otro lugar. Este fragmento de código SSML muestra cómo hablar de-DE con la voz neuronal en-US-JennyMultilingualNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-JennyMultilingualNeural">
        <lang xml:lang="de-DE">
            Wir freuen uns auf die Zusammenarbeit mit Ihnen!
        </lang>
    </voice>
</speak>

En el elemento speak, puede especificar varios idiomas, incluida la salida de texto a voz en-US. Para cada idioma ajustado, el texto debe coincidir con el idioma y ajustarse en un elemento voice. Este fragmento de código SSML muestra cómo usar <lang xml:lang> para cambiar los idiomas a es-MX, en-US y fr-FR.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-JennyMultilingualNeural">
        <lang xml:lang="es-MX">
            ¡Esperamos trabajar con usted!
        </lang>
        <lang xml:lang="en-US">
           We look forward to working with you!
        </lang>
        <lang xml:lang="fr-FR">
            Nous avons hâte de travailler avec vous!
        </lang>
    </voice>
</speak>

Adición o eliminación de una interrupción o pausa

Use el elemento break para insertar pausas o interrupciones entre palabras. También puede usarlo para evitar las pausas que se agregan automáticamente mediante la conversión de texto a voz.

Nota

Utilice este elemento para invalidar el comportamiento predeterminado de la conversión de texto a voz de una palabra o frase si el habla sintetizada de esa palabra o frase no suena natural. Establezca strength en none para evitar una pausa prosódica, que la conversión de texto a voz inserta automáticamente.

Sintaxis

<break strength="string" />
<break time="string" />

Atributos

Atributo Descripción Obligatorio u opcional
strength Especifica la duración relativa de una pausa mediante uno de los valores siguientes:
  • None
  • x-weak
  • weak
  • medium (default)
  • strong
  • x-strong
Opcional
time Especifica la duración absoluta de una pausa en segundos o milisegundos (ms). Este valor se debe establecer en menos de 5000 ms. Algunos ejemplos de valores válidos son 2s y 500ms. Opcional

A continuación, se especifican más detalles sobre el atributo strength.

Intensidad Duración relativa
Ninguno, o si no se ha proporcionado ningún valor 0 ms
Muy baja 250 ms
Baja 500 ms
Media 750 ms
Alta 1000 ms
Muy alta 1250 ms

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Welcome to Microsoft Cognitive Services <break time="100ms" /> Text-to-Speech API.
    </voice>
</speak>

Incorporación del silencio

Use el elemento mstts:silence para insertar pausas antes o después del texto, o bien entre dos frases adyacentes.

Nota

La diferencia entre mstts:silence y break es que break se puede agregar cualquier lugar del texto. El silencio solo funciona al principio o al final del texto de entrada o en el límite de dos frases adyacentes.

Sintaxis

<mstts:silence  type="string"  value="string"/>

Atributos

Atributo Descripción Obligatorio u opcional
type Especifica la ubicación en la que se debe agregar el silencio:
  • Leading: al principio del texto
  • Tailing: al final del texto
  • Sentenceboundary: entre frases adyacentes
Obligatorio
Value Especifica la duración absoluta de una pausa en segundos o milisegundos. Este valor se debe establecer en menos de 5000 ms. Algunos ejemplos de valores válidos son 2s y 500ms. Requerido

Ejemplo

En este ejemplo, se usa mtts:silence para agregar 200 ms de silencio entre dos frases.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<mstts:silence  type="Sentenceboundary" value="200ms"/>
If we’re home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>

Especificación de párrafos y oraciones

Los elementos p y s se utilizan para indicar párrafos y frases, respectivamente. En ausencia de estos elementos, la conversión de texto a voz determina automáticamente la estructura del documento SSML.

El elemento p puede contener texto y los siguientes elementos: audio, break, phoneme, prosody, say-as, sub, mstts:express-as y s.

El elemento s puede contener texto y los siguientes elementos: audio, break, phoneme, prosody, say-as, mstts:express-as y sub.

Sintaxis

<p></p>
<s></s>

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
            <s>Introducing the sentence element.</s>
            <s>Used to mark individual sentences.</s>
        </p>
        <p>
            Another simple paragraph.
            Sentence structure in this paragraph is not explicitly marked.
        </p>
    </voice>
</speak>

Uso de fonemas para mejorar la pronunciación

El elemento ph se utiliza para la pronunciación fonética en los documentos SSML. El elemento ph solo puede contener texto, pero ningún otro elemento. Proporcione siempre una voz natural como reserva.

Los alfabetos fonéticos se componen de segmentos acústicos, que se componen de letras, números o caracteres, a veces en combinación. Cada segmento acústico describe un sonido de voz único. Esto contrasta con el alfabeto latino, donde cualquier letra puede representar múltiples sonidos hablados. Tenga en cuenta las pronunciaciones diferentes de la letra "c" en las palabras "casa" y "cese" o, en inglés, las distintas pronunciaciones de la combinación de letras "th" en las palabras "thing" y "those".

Nota

Para una lista de las configuraciones regionales que admiten fonemas, consulte las notas al pie en la tabla de compatibilidad de idiomas.

Sintaxis

<phoneme alphabet="string" ph="string"></phoneme>

Atributos

Atributo Descripción Obligatorio u opcional
alphabet Especifica el alfabeto fonético que se utilizará al sintetizar la pronunciación de la cadena en el atributo ph. La cadena que especifica el alfabeto se debe especificar en minúsculas. Las siguientes opciones son los posibles alfabetos que puede especificar:
El alfabeto solo se aplica a phoneme en el elemento.
Opcional
ph Una cadena que contiene los segmentos acústicos que especifican la pronunciación de la palabra en el elemento phoneme. Si la cadena especificada contiene segmentos acústicos no reconocidos, la conversión de texto a voz rechaza todo el documento SSML y no produce ninguna de las salidas de voz especificadas en el documento. Obligatorio si usa fonemas.

Ejemplos

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <phoneme alphabet="ipa" ph="təˈmeɪtoʊ"> tomato </phoneme>
    </voice>
</speak>
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <phoneme alphabet="sapi" ph="iy eh n y uw eh s"> en-US </phoneme>
    </voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s>
    </voice>
</speak>

Uso de léxico personalizado para mejorar la pronunciación

A veces, la conversión de texto a voz no puede pronunciar correctamente una palabra. Por ejemplo, el nombre de una empresa, un término médico o un emoji. Puede definir cómo se leen las entidades únicas en SSML mediante las etiquetas phoneme y sub. Si tiene que definir cómo se leen varias entidades, puede crear un lexicón personalizado mediante la etiqueta lexicon.

Nota

Para una lista de las configuraciones regionales que admiten lexicones, consulte las notas al pie en la tabla de compatibilidad de idiomas.

Sintaxis

<lexicon uri="string"/>

Nota

Long Audio API no admite el elemento lexicon.

Atributo

Atributo Descripción Obligatorio u opcional
uri Dirección del documento PLS externo. Requerido

Uso

Para definir el modo en que se leen varias entidades, puede crear un lexicón personalizado, que se almacena como archivo .xml o .pls. El código siguiente es un archivo .xml de ejemplo.

<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
      xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
        http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
      alphabet="ipa" xml:lang="en-US">
  <lexeme>
    <grapheme>BTW</grapheme>
    <alias>By the way</alias>
  </lexeme>
  <lexeme>
    <grapheme> Benigni </grapheme>
    <phoneme> bɛˈniːnji</phoneme>
  </lexeme>
  <lexeme>
    <grapheme>😀</grapheme>
    <alias>test emoji</alias>
  </lexeme>
</lexicon>

El elemento lexicon contiene al menos un elemento lexeme. Cada elemento lexeme contiene al menos un elemento grapheme y uno o varios elementos grapheme, alias y phoneme. El elemento grapheme contiene texto que describe la ortografía. Los elementos alias se usan para indicar la pronunciación de un acrónimo o un término abreviado. El elemento phoneme proporciona texto que describe cómo se pronuncia un elemento lexeme. Cuando se proporcionan los elementos alias y phoneme con el mismo elemento grapheme, el elemento alias tiene prioridad.

Importante

El elemento lexeme distingue mayúsculas de minúsculas en el lexicón personalizado. Por ejemplo, si solo proporciona un fonema para el elemento lexeme "Hello", no funcionará para el elemento lexeme "hello".

El lexicón contiene el atributo xml:lang necesario para indicar a qué configuración regional se debe aplicar. Un lexicón personalizado está limitado a una configuración regional por diseño, por lo que no funcionará al aplicarlo para otra configuración regional.

No se puede establecer directamente la pronunciación de una frase mediante el lexicón personalizado. Si tiene que establecer la pronunciación de un acrónimo o un término abreviado, proporcione primero un elemento alias y, a continuación, asocie el elemento phoneme con dicho elemento alias. Por ejemplo:

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>ScotlandMV</alias>
  </lexeme>
  <lexeme>
    <grapheme>ScotlandMV</grapheme>
    <phoneme>ˈskɒtlənd.ˈmiːdiəm.weɪv</phoneme>
  </lexeme>

Nota

El límite entre sílabas es "." en el IPA.

También puede proporcionar directamente el alias esperado para el acrónimo o el término abreviado. Por ejemplo:

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>Scotland Media Wave</alias>
  </lexeme>

Importante

El elemento phoneme no puede contener espacios en blanco cuando se usa el IPA.

Para más información sobre el archivo de lexicón personalizado, consulte Especificación del lexicón de pronunciación (PLS), versión 1.0.

A continuación, publique el archivo de lexicón personalizado. No existen restricciones sobre dónde se puede almacenar este archivo, pero se recomienda usar Azure Blob Storage.

Una vez que haya publicado el lexicón personalizado, puede hacer referencia a él desde su SSML.

Nota

El elemento lexicon debe estar dentro del elemento voice.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
          xmlns:mstts="http://www.w3.org/2001/mstts"
          xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <lexicon uri="http://www.example.com/customlexicon.xml"/>
        BTW, we will be there probably at 8:00 tomorrow morning.
        Could you help leave a message to Robert Benigni for me?
    </voice>
</speak>

Cuando se usa este lexicón personalizado, "BTW" se lee como "By the way" y "Benigni" se lee con el IPA proporcionado "bɛˈniːnji".

Es fácil cometer errores en el lexicón personalizado, por lo que Microsoft proporciona una herramienta de validación para el lexicón personalizado. Proporciona mensajes de error detallados que le ayudarán a encontrar errores. Antes de enviar SSML con el lexicón personalizado al servicio de Voz, debe comprobar el lexicón personalizado con esta herramienta.

Limitaciones

  • Tamaño de archivo: el límite máximo de tamaño de archivo del lexicón personalizado es de 100 KB. Si un archivo supera este tamaño, se produce un error en la solicitud de síntesis.
  • Actualización de la caché de lexicón: el lexicón personalizado se almacena en caché con el identificador URI como clave en la conversión de texto a voz cuando se carga por primera vez. El lexicón con el mismo identificador URI no se volverá a cargar en 15 minutos, por lo que el cambio de lexicón personalizado debe esperar 15 minutos como máximo para tener efecto.

Conjuntos fonéticos del servicio de voz

En el ejemplo anterior, se usa el IPA, que también se conoce como conjunto de segmentos acústicos IPA. Se recomienda usar el IPA porque es el estándar internacional. En algunos caracteres del IPA, tienen la versión "precompuesta" y "descompuesta" cuando se representan con Unicode. El lexicón personalizado solo admite caracteres Unicode descompuestos.

El servicio de voz define un conjunto fonético para estas configuraciones regionales: en-US, fr-FR, de-DE, es-ES, ja-JP, zh-CN, zh-HK y zh-TW. Para más información sobre el alfabeto fonético del servicio de voz detallado, consulte los conjuntos fonéticos del servicio de voz.

Puede usar x-microsoft-sapi como valor del atributo alphabet con lexicones personalizados, como se muestra aquí:

<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
      xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
        http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
      alphabet="x-microsoft-sapi" xml:lang="en-US">
  <lexeme>
    <grapheme>BTW</grapheme>
    <alias> By the way </alias>
  </lexeme>
  <lexeme>
    <grapheme> Benigni </grapheme>
    <phoneme> b eh 1 - n iy - n y iy </phoneme>
  </lexeme>
</lexicon>

Ajuste de la prosodia

El elemento prosody se utiliza para especificar los cambios en el tono, la curva melódica, el rango, la velocidad y el volumen de la salida de la conversión de texto a voz. El elemento prosody puede contener texto y los siguientes elementos: audio, break, p, phoneme, prosody, say-as, sub y s.

Dado que los valores de los atributos prosódicos pueden variar en un amplio rango, el reconocedor de voz interpreta los valores asignados como una sugerencia de cuáles deben ser los valores prosódicos reales de la voz seleccionada. La conversión de texto a voz limita o sustituye los valores que no son compatibles. Ejemplos de valores no compatibles son un tono de 1 MHz o un volumen de 120.

Sintaxis

<prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>

Atributos

Atributo Descripción Obligatorio u opcional
pitch Indica el tono de la línea de referencia del texto. Puede expresar el tono como:
  • Un valor absoluto: expresado como un número seguido de "Hz" (Hercios). Por ejemplo, <prosody pitch="600Hz">some text</prosody>.
  • Valor relativo:
    • Como número relativo: expresado como un número precedido por "+" o "-" y seguido por "Hz" o "st", que especifica una cantidad para cambiar el tono. Por ejemplo: <prosody pitch="+80Hz">some text</prosody> o <prosody pitch="-2st">some text</prosody>. La "st" indica que la unidad de cambio es un semitono, que es la mitad de un tono (medio paso) en la escala diatónica estándar.
    • Como porcentaje: expresado como un número precedido por "+" (opcionalmente) o "-" y seguido de "%", que indica el cambio relativo. Por ejemplo: <prosody pitch="50%">some text</prosody> o <prosody pitch="-50%">some text</prosody>.
  • Un valor constante:
    • x-low
    • low
    • medio
    • high
    • x-high
    • default
Opcional
contour Ahora, la curva melódica admite la voz neuronal. La curva melódica representa los cambios en el tono. Estos cambios se representan como una matriz de objetivos en posiciones de tiempo específicas en la salida de voz. Cada destino se define por conjuntos de pares de parámetros. Por ejemplo:

<prosody contour="(0%,+20Hz) (10%,-2st) (40%,+10Hz)">

El primer valor de cada conjunto de parámetros especifica la ubicación del cambio de tono como porcentaje de la duración del texto. El segundo valor especifica la cantidad que se va subir o bajar el tono, mediante un valor relativo o un valor de enumeración para el tono (consulte pitch).
Opcional
range Un valor que representa el rango del tono para el texto. Puede expresar el elemento range mediante los mismos valores absolutos, valores relativos o valores de enumeración usados para describir el elemento pitch. Opcional
rate Indica la velocidad de habla del texto. Puede expresar rate como:
  • Valor relativo:
    • Como número relativo: expresado como un número que actúa como multiplicador del valor predeterminado. Por ejemplo, un valor de 1 no da como resultado ningún cambio en la velocidad original. Un valor de 0,5 da como resultado la mitad de la velocidad original. Un valor de 2 da como resultado el doble de la velocidad original.
    • Como porcentaje: expresado como un número precedido por "+" (opcionalmente) o "-" y seguido de "%", que indica el cambio relativo. Por ejemplo: <prosody rate="50%">some text</prosody> o <prosody rate="-50%">some text</prosody>.
  • Un valor constante:
    • x-slow
    • lento
    • medio
    • fast
    • x-fast
    • default
Opcional
volume Indica el nivel de volumen de la voz. Puede expresar el volumen como:
  • Un valor absoluto: expresado como un número en el rango de 0,0 a 100,0, de más silencioso a más alto. Por ejemplo, 75. El valor predeterminado es 100.0.
  • Valor relativo:
    • Como número relativo: expresado como un número precedido por "+" o "-" que especifica una cantidad para cambiar el volumen. Por ejemplo, +10 o -5,5.
    • Como porcentaje: expresado como un número precedido por "+" (opcionalmente) o "-" y seguido de "%", que indica el cambio relativo. Por ejemplo: <prosody volume="50%">some text</prosody> o <prosody volume="+3%">some text</prosody>.
  • Un valor constante:
    • silent
    • x-soft
    • soft
    • medio
    • loud
    • x-loud
    • default
Opcional

Cambio de la velocidad de habla

La velocidad de habla se puede aplicar tanto en el nivel de palabra como en el de frase. Los cambios de velocidad deben estar comprendidos entre la mitad y el doble del audio original.

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody rate="+30.00%">
            Welcome to Microsoft Cognitive Services Text-to-Speech API.
        </prosody>
    </voice>
</speak>

Cambio de volumen

Los cambios de volumen se pueden aplicar en el nivel de oración. Los cambios de volumen deben estar entre 0 (silencio) y 1,5 veces el audio original.

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody volume="+20.00%">
            Welcome to Microsoft Cognitive Services Text-to-Speech API.
        </prosody>
    </voice>
</speak>

Cambio de tono

Los cambios de tono se pueden aplicar en el nivel de oración. Los cambios de tono deben estar comprendidos entre la 0,5 y 1,5 veces el audio original.

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Welcome to <prosody pitch="high">Microsoft Cognitive Services Text-to-Speech API.</prosody>
    </voice>
</speak>

Cambio de curva melódica

Importante

Los cambios de curva melódica ahora son compatibles con las voces neuronales.

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody contour="(60%,-60%) (100%,+80%)" >
            Were you the only person in the room?
        </prosody>
    </voice>
</speak>

Ajuste del énfasis

El elemento opcional emphasis se usa para agregar o quitar la tensión de nivel de palabra para el texto. Este elemento solo puede contener texto y los siguientes elementos: audio, break, emphasis, lang, phoneme, prosody, say-as, sub y voice.

Nota

El ajuste del énfasis de nivel de palabra solo está disponible para estas voces neuronales: en-US-GuyNeural, en-US-DavisNeuraly en-US-JaneNeural.

Sintaxis

<emphasis level="value"></emphasis>

Atributo

Atributo Descripción Obligatorio u opcional
level Indica la intensidad del énfasis que se va a aplicar:
  • reduced
  • none
  • moderate
  • strong

Cuando no se especifica el atributo level, el nivel predeterminado es moderate. Para obtener más información sobre cada atributo, consulte el elemento de énfasis.
Opcional

Ejemplo

Este fragmento de código SSML muestra cómo se usa el elemento emphasis para agregar énfasis de nivel moderado para la palabra "meetings".

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-GuyNeural">
    I can help you join your <emphasis level="moderate">meetings</emphasis> fast.
    </voice>
</speak>

Agregar elemento say-as

El elemento say-as es opcional. Indica el tipo de contenido (por ejemplo, un número o una fecha) del texto del elemento. Este elemento proporciona instrucciones al motor de síntesis de voz sobre cómo pronunciar el texto.

Sintaxis

<say-as interpret-as="string" format="digit string" detail="string"> </say-as>

Atributos

Atributo Descripción Obligatorio u opcional
interpret-as Indica el tipo de contenido del texto de un elemento. Para obtener una lista de tipos, consulte la tabla siguiente. Obligatorio
format Proporciona información adicional sobre el formato preciso del texto del elemento para los tipos de contenido que pueden tener formatos ambiguos. SSML define formatos para los tipos de contenido que los usan. Consulte la tabla siguiente. Opcional
detail Indica el nivel de detalle con que se va a hablar. Por ejemplo, este atributo puede solicitar que el motor de síntesis de voz pronuncie signos de puntuación. No hay valores estándar definidos para detail. Opcional

Se admiten los siguientes tipos de contenido para los atributos interpret-as y format. Incluya el atributo format solo si la columna format no está vacía en la tabla siguiente.

interpret-as format Interpretación
characters, spell-out El texto se pronuncia como letras individuales (deletreadas). El motor de síntesis de voz pronuncia:

<say-as interpret-as="characters">test</say-as>

Como "T E S T".
cardinal, number Ninguno El texto se pronuncia como un número cardinal. El motor de síntesis de voz pronuncia:

There are <say-as interpret-as="cardinal">10</say-as> options

Como "Hay diez opciones."
ordinal None El texto se pronuncia como un número ordinal. El motor de síntesis de voz pronuncia:

Select the <say-as interpret-as="ordinal">3rd</say-as> option

Como "Seleccione la tercera opción".
number_digit Ninguno El texto se pronuncia como una secuencia de dígitos individuales. El motor de síntesis de voz pronuncia:

<say-as interpret-as="number_digit">123456789</say-as>

Como "1 2 3 4 5 6 7 8 9".
fraction None El texto se pronuncia como un número fraccionario. El motor de síntesis de voz pronuncia:

<say-as interpret-as="fraction">3/8</say-as> of an inch

Como "tres octavos de pulgada".
date dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y El texto se pronuncia como una fecha. El atributo format especifica el formato de la fecha (d=día, m=mes, y=año) . El motor de síntesis de voz pronuncia:

Today is <say-as interpret-as="date" format="mdy">10-19-2016</say-as>

Como "Hoy es el diecinueve de octubre de 2016".
time hms12, hms24 El texto se pronuncia como una hora. El atributo format especifica si la hora se especifica mediante un reloj de 12 horas (hms12) o de 24 horas (hms24). Use un signo de dos puntos para separar los números que representan las horas, los minutos y los segundos. Estos son algunos ejemplos de horas válidas: 12:35, 1:14:32, 08:15 y 02:50:45. El motor de síntesis de voz pronuncia:

The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as>

Como "El tren sale a las cuatro A. M.".
duration hms, hm, ms El texto se pronuncia como una duración. El atributo format especifica el formato de la duración (h=hour, m=minute y s=second). El motor de síntesis de voz pronuncia:

<say-as interpret-as="duration">01:18:30</say-as>

Como "una hora, dieciocho minutos y treinta segundos".
Pronuncia:

<say-as interpret-as="duration" format="ms">01:18</say-as>

Como "un minuto y dieciocho segundos".
Esta etiqueta solo se admite en inglés y español.
telephone None El texto se pronuncia como un número de teléfono. El atributo format puede contener dígitos que representan un código de país. Por ejemplo, "1" para Estados Unidos o "39" para Italia. El motor de síntesis de voz puede utilizar esta información para orientar la pronunciación de un número de teléfono. El número de teléfono también puede incluir el código de país y, si es así, tiene prioridad sobre el código de país del atributo format. El motor de síntesis de voz pronuncia:

The number is <say-as interpret-as="telephone" format="1">(888) 555-1212</say-as>

Como "Mi número es el código de área ocho ocho ocho cinco cinco cinco uno dos uno dos".
currency None El texto se pronuncia como una moneda. El motor de síntesis de voz pronuncia:

<say-as interpret-as="currency">99.9 USD</say-as>

Como "noventa y nueve dólares y noventa centavos estadounidenses".
address None El texto se pronuncia como una dirección. El motor de síntesis de voz pronuncia:

I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as>

Como "Estoy en el número 150 de Court North East Redmond, en Washington".
name None El texto se pronuncia como el nombre de una persona. El motor de síntesis de voz pronuncia:

<say-as interpret-as="name">ED</say-as>

Como [æd].
En los nombres chinos, algunos caracteres se pronuncian de forma diferente cuando aparecen en un nombre de familia. Por ejemplo, el motor de síntesis de voz dice 仇 en

<say-as interpret-as="name">仇先生</say-as>

Como [qiú] en lugar de [chóu].

Uso

El elemento say-as solo puede contener texto.

Ejemplo

El motor de síntesis de voz pronuncia el ejemplo siguiente como "Su primera solicitud fue de una habitación el diecinueve de octubre de dos mil diez con llegada a las diecisiete treinta y cinco".

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
        Your <say-as interpret-as="ordinal"> 1st </say-as> request was for <say-as interpret-as="cardinal"> 1 </say-as> room
        on <say-as interpret-as="date" format="mdy"> 10/19/2010 </say-as>, with early arrival at <say-as interpret-as="time" format="hms12"> 12:35pm </say-as>.
        </p>
    </voice>
</speak>

Adición del audio grabado

El elemento audio es opcional. Puede usarlo para insertar audio grabado previamente en un documento SSML. El cuerpo del elemento de audio puede contener texto sin formato o marcado SSML que se lee en voz alta si el archivo de audio no está disponible o no se puede reproducir. El elemento audio también puede contener texto y los siguientes elementos: audio, break, p, s, phoneme, prosody, say-as y sub.

Cualquier audio incluido en el documento SSML debe cumplir estos requisitos:

  • El audio debe estar hospedado en un punto de conexión HTTPS al que se pueda acceder desde Internet. Se debe usar HTTPS y el dominio que hospeda el archivo debe presentar un certificado TLS/SSL válido y de confianza. Con el fin de minimizar la latencia, se recomienda colocar el archivo de audio en Blob Storage en la misma región de Azure que el punto de conexión de texto a voz.
  • El archivo de audio debe ser un archivo *.mp3, *.wav, *.opus, *.ogg, *.flac o *.wma válido.
  • El tiempo total combinado de todos los archivos de texto y audio de una sola respuesta no puede superar los 600 segundos.
  • El audio no debe contener información específica del cliente ni ningún tipo de información confidencial.

Nota:

El elemento "audio" no es compatible con Long Audio API.

Sintaxis

<audio src="string"/></audio>

Atributo

Atributo Descripción Obligatorio u opcional
src Especifica la ubicación o la URL del archivo de audio. Es obligatorio si se usa el elemento de audio en el documento SSML.

Ejemplo

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
            <audio src="https://contoso.com/opinionprompt.wav"/>
            Thanks for offering your opinion. Please begin speaking after the beep.
            <audio src="https://contoso.com/beep.wav">
                Could not play the beep, please voice your opinion now.
            </audio>
        </p>
    </voice>
</speak>

Adición de audio de fondo

Puede usar el elemento mstts:backgroundaudio para agregar audio de fondo a los documentos SSML o mezclar un archivo de audio con la conversión de texto a voz. Con el elemento mstts:backgroundaudio, puede reproducir en bucle un archivo de audio de fondo, hacer que aparezca gradualmente al principio de la conversión de texto a voz y quitarlo gradualmente al final de la conversión de texto a voz.

Si el audio de fondo proporcionado dura menos que la conversión de texto a voz o el fundido de salida, se reproduce en bucle. Si es más largo que la conversión de texto a voz, se detiene cuando finaliza el fundido de salida.

Solo se permite un archivo de audio de fondo por cada documento SSML. Puede intercalar etiquetas audio dentro del elemento voice para agregar más audio al documento SSML.

Nota:

El elemento mstts:backgroundaudio debe colocarse delante de todos los elementos voice, es decir, el primer elemento secundario de la clase speak.

Long Audio API no admite el elemento mstts:backgroundaudio.

Sintaxis

<mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>

Atributos

Atributo Descripción Obligatorio u opcional
src Especifica la ubicación o la URL del archivo de audio de fondo. Es obligatorio si se usa audio de fondo en el documento SSML.
volume Especifica el volumen del archivo de audio de fondo. Valores aceptados: de 0 a 100, ambos incluidos. El valor predeterminado es 1. Opcional
fadein Especifica la duración del fundido de entrada del audio de fondo en milisegundos. El valor predeterminado es 0, que equivale a ningún fundido de entrada. Valores aceptados: de 0 a 10000, ambos incluidos. Opcional
fadeout Especifica la duración del fundido de salida del audio de fondo en milisegundos. El valor predeterminado es 0, que equivale a ningún fundido de salida. Valores aceptados: de 0 a 10000, ambos incluidos. Opcional

Ejemplo

<speak version="1.0" xml:lang="en-US" xmlns:mstts="http://www.w3.org/2001/mstts">
    <mstts:backgroundaudio src="https://contoso.com/sample.wav" volume="0.7" fadein="3000" fadeout="4000"/>
    <voice name="Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)">
        The text provided in this document will be spoken over the background audio.
    </voice>
</speak>

Elemento marcador

Puede usar el elemento bookmark en SSML para hacer referencia a una ubicación específica en el texto o la secuencia de etiquetas. A continuación, usará el SDK de Voz y se suscribirá al evento BookmarkReached para obtener el desplazamiento de cada marcador de la secuencia de audio. El elemento bookmark no se pronunciará. Para más información, vea Suscripción a eventos de sintetizador.

Sintaxis

<bookmark mark="string"/>

Atributo

Atributo Descripción Obligatorio u opcional
mark Especifica el texto de referencia del elemento bookmark. Requerido

Ejemplo

Por ejemplo, es posible que quiera conocer el desplazamiento de tiempo de cada palabra relacionada con flores en el fragmento de código siguiente:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AriaNeural">
        We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
    </voice>
</speak>

Elementos MathML admitidos

El Lenguaje de marcado matemático (MathML) es un lenguaje de marcado compatible con XML que permite a los desarrolladores especificar cómo se convierte el texto de entrada en una voz sintetizada mediante la conversión de texto a voz.

Nota

Actualmente, todas las voces neuronales de las configuraciones regionales en-US y en-AU admiten los elementos MathML (etiquetas).

Ejemplo

Este fragmento de código SSML muestra cómo se utilizan los elementos MathML para generar voz sintetizada. La salida de texto a voz para este ejemplo es "a cuadrado más b cuadrado equivale a c cuadrado".

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US"><voice name="en-US-JennyNeural"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></math></voice></speak>

El atributo xmlns en <math xmlns="http://www.w3.org/1998/Math/MathML"> es opcional.

Se admiten todos los elementos de las especificaciones MathML 2.0 y MathML 3.0, excepto los elementos Elementary Math de MathML 3.0. Los elementos semantics, annotation y annotation-xml no generan voz, por lo que se omiten.

Nota

Si no se reconoce un elemento, se omitirá, y los elementos secundarios dentro de él se seguirán procesando.

Las entidades MathML no son compatibles con la sintaxis XML, por lo que debe usar las caracteres Unicode correspondientes para representar las entidades; por ejemplo, la entidad &copy; debe estar representada por sus caracteres Unicode &#x00A9;; de lo contrario, se producirá un error.

Elemento de visema

Un visema es la descripción visual de un fonema en lenguaje hablado. Define la posición de la cara y la boca cuando habla una persona. Puede usar el elemento mstts:viseme en SSML para solicitar la salida del visema. Para obtener más información, consulte Obtención de la posición facial con visema.

Sintaxis

<mstts:viseme type="string"/>

Atributos

Atributo Descripción Obligatorio u opcional
type Especifica el tipo de salida del visema.
  • redlips_front: sincronización de labios con id. de visema y salida de desplazamiento de audio
  • FacialExpression: resultado de mezcla de formas
Obligatorio

Nota

Actualmente, redlips_front solo admite voces neuronales en la configuración regional en-US y FacialExpression admite voces neuronales en las configuraciones regionales en-US y zh-CN.

Ejemplo

Este fragmento de código SSML muestra cómo solicitar formas de combinación con la voz sintetizada.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
  <voice name="en-US-JennyNeural">
    <mstts:viseme type="FacialExpression"/>
    Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
  </voice>
</speak>

Pasos siguientes