https://a.storyblok.com/f/270183/1368x665/113a3f5bb8/dynamic-speech-generation.png

Generación dinámica de voz con proveedores externos en AI Studio

Publicado el September 3, 2024

Tiempo de lectura: 8 minutos

AI Studio ofrece una amplia variedad de sistemas de texto a voz (TTS) idiomas y estilos de voz integradosmejorados con lenguaje de marcado de síntesis de voz (SSML) para crear expresiones similares a las humanas. Existen muchas más opciones TTS que puedes utilizar en su lugar. AI Studio te ofrece la flexibilidad de conectarte con cualquier tercero que tenga puntos finales de API REST accesibles. En este blog, demostraremos cómo utilizar voces sintéticas Deepgram generadas dinámicamente con AI Studio.

Una experiencia TTS atractiva y similar a la humana es fundamental para los agentes de voz porque fomenta una interacción natural y cercana, haciendo que los usuarios se sientan comprendidos y valorados. Este nivel de compromiso aumenta la satisfacción y la fidelidad del cliente en general, ya que reduce la frustración y mejora la eficacia de la comunicación. Esta entrada del blog tratará sobre el uso de archivos de audio de voz generados dinámicamente para una personalización completa de la interacción Agente <> Humano.

En una entrada anterior del blog se trataron los archivos de audio de voz generados estáticamente.

Resumen del proyecto

En esta publicación del blog, hablaremos sobre cómo usar Vonage AI Studio con un proveedor de síntesis de voz de terceros para generar dinámicamente archivos de voz basados en parámetros personalizados que se usan en todo un flujo de AI Studio. Para este blog, usaremos una aplicación de historia clínica electrónica (HCE) de juguete y demostraremos una llamada entrante de un usuario paciente al consultorio de un médico. La aplicación de Studio está diseñada para recopilar información sobre el usuario a través del identificador de línea de llamada (CLID) o el número de teléfono del usuario entrante. El agente de Studio utilizará un webhook para recopilar información sobre el paciente, como su nombre y apellidos, el número de identificación del paciente y si hay o no citas programadas. El usuario será saludado utilizando el Deepgram Aura TTS de Deepgram.

Requisitos previos

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Cómo crear un agente de voz

Paso 1: Crear su agente

Desde el Panel de AI Studioseleccione Crear Agente. Como se trata de un caso de uso de Voice, seleccione "Telephony".

ai-studio_agent_typeSelect Agent Type

Paso 2: Configure su agente

La configuración del agente es un primer paso necesario y puede encontrar más información aquí. En nuestro caso, estamos proporcionando algunas construcciones básicas del agente, incluyendo la localización, la asignación del agente a una clave API específica o subcuenta, y el idioma para el agente.

ai_studio_agent_detailsAgent DetailsTenga en cuenta que el agente de Voice/Telephony requiere que elija una Voz. Sin embargo, esta construcción de configuración no es pertinente porque usaremos voces de terceros (Deepgram). En este caso, no se cobrará a tu Account ningún uso de Vonage TTS, siempre y cuando utilices los enfoques mencionados aquí.

Paso 3: Elija su plantilla

Seleccione "Identificación de llamada". Utilizaremos la identificación de la línea de llamada entrante (CLID) de la persona que llama para proporcionar un saludo personalizado. Esta plantilla te ofrece un buen punto de partida. Para obtener más información sobre esta plantilla, puede ver este artículo.

Choose a TemplateChoose a Template

Paso 4: Elija Llamada entrante

Seleccione la opción Llamada entrante de llamada entrante. Nuestro agente de Voice responderá a una llamada entrante, pero esto no limita al agente a realizar únicamente llamadas entrantes. Por ejemplo, si desea enviar un correo electrónico de seguimiento una vez finalizada la interacción con el agente, puede hacerlo como parte de la opción Llamada entrante de llamadas entrantes. Más información sobre AI Studio Eventos de conversación.

Choose Inbound CallChoose Inbound Call

Voilà, ya estás listo para empezar a crear tu agente de Voice con las voces personalizadas de Deepgram. ¡En marcha!

Cómo integrar archivos de audio de texto a voz generados dinámicamente con AI Studio

Es importante entender que en un agente de telefonía se pueden utilizar dos nodos para el TTS personalizado. Puedes leer más sobre Hablar y el nodo Recoger entrada . Nos centraremos en el nodo Recoger entrada en el nodo

Utilizando este enfoque, los diseñadores conversacionales pueden crear archivos de audio de voz con el punto final de la API de cualquier proveedor y utilizar el archivo devuelto en un archivo de Recopilar entrada nodo.

En este caso, puede que le resulte importante ofrecer una experiencia de usuario totalmente personalizada. Esto significa que podría querer utilizar atributos sobre el usuario, recopilados a lo largo de la llamada, como parte del flujo TTS generado. Por ejemplo, en mis flujos de trabajo Existing Patient, quiero saludar personalmente y comunicarme con cada usuario por su nombre de pila, y quiero que el agente lea en voz alta algunos de esos atributos como parte de mis flujos. Tales ejemplos incluyen:

  • Hola, F_NAME. Es un placer tenerte hoy de nuevo con nosotros. Tengo su cita fijada para FECHA_CITAa las HORA_APTO. ¿Necesita ayuda?

  • Buenas noticias, F_NAMETengo su cita reprogramada para NUEVA CITA en NUEVA CITA. ¿Quiere que le envíe un mensaje de texto para confirmar?

  • Genial, tengo su número de móvil como MÓVIL_PACIENTE. ¿Sigue siendo correcto? Si es así, le enviaré un SMS recordatorio ahora y el día antes de la cita. Si no es así, sólo dígame que necesitamos cambiar su información de contacto y le ayudaré con eso.

Profundicemos en este enfoque. Es un poco más complejo crear archivos de voz dinámicos basados en la información recopilada del usuario almacenada en varios parámetros. Todos los proveedores de TTS basados en endpoints no proporcionan un servicio de almacenamiento en la nube, sino que pasan el archivo binario de audio devuelto directamente en la respuesta o en un notificador de eventos webhook. Este es especialmente el caso de Deepgram, donde puedes elegir recibir tu audio en un webhook, o como parte de una respuesta 200 a tu llamada API. Así que vas a construir un pequeño servicio de almacenamiento efímero back-end que se encargaría de la ruta de entrada que sirve el manejo de archivos de voz intermedios. Según tu enfoque (un administrador de rutas o un servidor de webhooks), podrías usar el servicio de Vonage Cloud Runtime de Activo de Vonage Cloud Runtime, o cualquier otro blob / cubo de almacenamiento no estructurado (AWS S3, etc). La idea aquí es hacer que el almacenamiento y uso de archivos sea temporal, de tal manera que estos archivos se limpien después de ser utilizados, mejorando los controles de seguridad y privacidad en tu aplicación. Ahora, vamos a explorar la solución.

En mi caso, debido a que mi aplicación es un sistema de Historia Clínica Electrónica (HCE), que maneja múltiples casos de uso como programación de citas, reprogramación, pagos y solicitudes de recetas, estoy creando un nodo webhook de propósito general (Deepgram_Nodo) que puedo utilizar en todos mis flujos. He añadido un nodo webhook para manejar el reconocimiento del paciente por su identificador de llamada entrante.

  1. Una vez que el nodo webhook preliminar de mi aplicación ha obtenido el nombre de pila de la persona que llama, asigno ese atributo JSON a un parámetro de Studio denominado $F_NOMBRE. Utilizaré este valor almacenado en ese parámetro para añadirlo a mi petición TTS a Deepgram. El nodo webhook Deepgram está configurado así.Deepgram Node Query ParamsDeepgram Node Query Params

  2. Observe que la configuración del cuerpo con formato JSON contiene mi texto genérico deseado, basado en el servicio de flujo, así como el personalizado $F_NOMBRE personalizado. Deepgram Webhook Node JSON BodyDeepgram Webhook Node JSON Body

  3. El sitio Mapeo de Respuesta en el nodo webhook es crítica porque usaré la respuesta 2xx recibida y mapearé esos atributos a otros parámetros de Studio para su uso posterior: Deepgram Node Response MappingDeepgram Node Response Mapping

  4. Tenga en cuenta que estoy mapeando el atributo URL devuelto a un nuevo parámetro, llamado $VOZ_SINTÉTICA. Este url es la URL de alojamiento para el archivo de audio. Dependiendo del proveedor de almacenamiento que esté utilizando (S3, etc), es importante que este atributo url tenga una estructura similar a la siguiente https://storagefile.com/filename.mp3. El analizador sintáctico de Studio buscará explícitamente la extensión de archivo .mp3 en el apéndice de la URL. Este será el parámetro utilizado en el siguiente nodo para reproducir el discurso sintetizado completo. Véase la siguiente captura de pantalla: Using the stored URL in the SYNTHETIC_VOICE parameterUsing the stored URL in the SYNTHETIC_VOICE parameter

  5. Este Recoger entrada está ahora listo para ser configurado con otras opciones que usted considere oportunas, tales como:

    1. Retry Prompt (que puede ser el mismo $VOZ_SINTÉTICA u otro parámetro.

    2. Además, es posible que desee configurar la entrada de respuesta de la persona que llama (voz, DTMF) y la detección de silencio.

    3. Además, en función de sus necesidades específicas, puede configurar Palabras clave de contexto y Ambigüedad de entidad para asegurarse de que su Agente interactúa de forma óptima con los humanos.

  6. Es una buena práctica después de usar la función Recopilar entradas añadir un nodo Clasificación si la respuesta del agente depende del input del usuario humano. Puedes aprender más sobre este nodo aquí. En este nodo, creas el conocimiento y el entrenamiento para que el agente sea capaz de manejar la intención del usuario.

Conclusión

Hoy en día, muchos proveedores de TTS incorporan LLM a sus procesos de síntesis del habla, lo que permite un habla más natural y expresiva. Antes, la TTS se basaba principalmente en métodos como la síntesis concatenada, que unía fragmentos de voz pregrabados, y la síntesis paramétrica, que utilizaba modelos estadísticos como los modelos ocultos de Markov (HMM). Estas técnicas anteriores solían dar como resultado voces más robóticas y con menos matices.

Los LLM mejoran la síntesis del habla aprovechando grandes cantidades de datos y arquitecturas avanzadas de redes neuronales para comprender y generar patrones de habla similares a los humanos. Analizan el texto en busca de contexto, sentimiento y ritmos de habla naturales, lo que permite una entonación, acento y emoción más precisos en el habla generada. El resultado son voces no sólo más claras y agradables de escuchar, sino también capaces de transmitir emociones sutiles y dinámicas de conversación naturales, lo que mejora notablemente la experiencia general del usuario.

En esta entrada del blog, exploramos cómo utilizar proveedores de texto a voz (TTS) de terceros junto con AI Studio para personalizar completamente la experiencia del usuario. Siempre agradecemos la participación de la comunidad. No dudes en unirte a nosotros en GitHub y en Slack de la comunidad de Vonage.

Compartir:

https://a.storyblok.com/f/270183/398x436/1c09fedd7d/tim-dentry.jpg
Tim DentryArquitecto de soluciones para clientes del sector sanitario

Tim es arquitecto de soluciones para clientes del sector sanitario y un apasionado de la IA/ML, especialmente en el ámbito del procesamiento/comprensión del lenguaje natural y los grafos de conocimiento. Fuera del trabajo, Tim disfruta viajando por todo el mundo, investigando sobre IA y compitiendo en bailes de salón.