https://d226lax1qjow5r.cloudfront.net/blog/blogposts/christmas-poetry-reading-using-text-to-speech-dr/Christmas-Poetry-Reading-Using-Text-To-Speech.png

Lectura de poemas navideños con Text-To-Speech y SSML

Publicado el May 10, 2021

Tiempo de lectura: 1 minuto

En Nexmo utilizamos texto a voz en nuestras aplicaciones de telefonía, pero ¿sabía que su texto puede hacer algo más que hablar? Nuestra Voice API es compatible con SSML (Lenguaje de marcado de síntesis de voz) que le permite añadir expresiones a sus salidas de texto a voz.

Como es Navidad, he pensado en proponerme un poema navideño como reto. En realidad, la conversión de texto a voz con signos de puntuación como comas y puntos funciona bastante bien, así que incluso en el primer intento se notaba que debía tener métrica.

El pequeño Jack Horner Se sentó en un rincón, A comer pastel de Navidad: Metió su pulgar, Y sacó una ciruela, Y dijo: "¡Qué buen chico soy!"

Podemos mejorar esto marcando las palabras que deben tener énfasis. He utilizado <prosody> etiquetas para dar más volumen a las palabras fuertes de la rima y para ralentizarlas. Por ejemplo, "Horner", "esquina", "ciruela" y "pulgar" están marcadas con <prosody rate="x-slow"> para ayudar al ritmo del discurso.

El texto a voz no conocía la palabra "Horner", así que utilicé una etiqueta <phoneme> para deletrear fonéticamente cómo debería pronunciarse la palabra (lo que al menos hace que rime con "corner" en la línea siguiente, aunque a mí me sigue sonando un poco raro). Se trata de un truco muy útil a la hora de curar el contenido del texto a voz, sobre todo para los nombres propios, que a menudo son desconocidos para el analizador sintáctico. También puedes utilizarlo para cualquier otra palabra cuya pronunciación no te salga como esperabas.

Por último, para divertirme, he eliminado la palabra "bueno" de la última línea utilizando la etiqueta <say-as> y convirtiendo esa palabra en un improperio. Esta etiqueta puede ser muy útil si tu aplicación necesita hablar con contenido desconocido proporcionado por el usuario.

Este es el SSML con el que terminé:

<speak>
    <lang xml:lang="en-GB">
        Little Jack <prosody rate="x-slow"><phoneme alphabet="ipa" ph="ˈhɔːnə">Horner</phoneme></prosody>,
        Sat in the<prosody rate="x-slow">corner</prosody>,
        Eating of <prosody volume="x-loud">Christmas</prosody> <prosody rate="x-slow">pie:</prosody>
        He put in his <prosody rate="x-slow">thumb</prosody>,
        And pulled out a <prosody rate="x-slow">plum</prosody>,
        And said, “What a <say-as interpret-as="expletive">good</say-as> boy am <prosody rate="x-slow">I</prosody>!”
    </lang>
</speak>

Al incluir este XML como campo text campo en la acción talk acción de mi NCCO, y añadiendo una record acción también, pude capturar la poesía del robot:

https://soundcloud.com/user-872225766-984610678/conference-31696a4f-983f-40ea-b81a-ab942fc33782


Puedes plantearte añadir algo más de expresión a la interacción hablada con tus usuarios añadiendo SSML, y la poesía es una forma estupenda de practicar. Cuéntanos si construyes algo poético estas Navidades.

Compartir:

https://a.storyblok.com/f/270183/250x250/e3d3b71060/lornajane.png
Lorna MitchellAntiguos alumnos de Vonage

Lorna es ingeniera de software con un incurable hábito bloguero. Intenta domar las palabras y el código a partes iguales.