https://a.storyblok.com/f/270183/1368x665/62443164d6/text-to-speech_asp-net_ai-studio-integration_deepgram.png

Integra texto a voz personalizado con Vonage AI Studio y Deepgram

Publicado el August 14, 2024

Tiempo de lectura: 8 minutos

Introducción

AI Studio ofrece una amplia variedad de idiomas integrados 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 de TTS que quizá prefieras utilizar. AI Studio te ofrece la flexibilidad de conectarte con cualquier tercero que tenga puntos finales de API REST accesibles. En este post, vamos a demostrar cómo conectar AI Studio con Deepgram.

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 eficiencia de la comunicación.

Esta entrada del blog cubrirá el uso de archivos de audio de voz generados estáticamente como parte de Hablar o Recopilar entrada nodo. En una próxima entrada del blog hablaremos de archivos de audio de voz generados dinámicamente para la personalización completa de la interacción Agente <> Humano.

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, ilustrado con una aplicación de historia clínica electrónica (HCE) de juguete. Demostraremos una llamada entrante de un paciente al consultorio de un médico. La aplicación 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 la plantilla "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 es un buen punto de partida.

Choose a TemplateChoose a TemplatePaso 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 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 en los enlaces. Nos centraremos en el nodo Recopilar datos en esta entrada. En mi agente, como se ha descrito, hay varios nodos presentes con los que interactúa la persona que llama, antes de pulsar el nodo Recoger entrada nodo. Véase más abajo:

Basic Flow InitiationBasic Flow Initiation

Puede ver los siguientes nodos con los que interactúa la persona que llama.

  1. En Inicio nodo.

  2. La dirección patient_webhook se utiliza para recopilar información sobre la persona que llama desde la base de datos backend de la HCE.

  3. Un nodo condicional llamado Paciente_existente se utiliza para determinar a qué flujo enviar al usuario a continuación. En este caso, dado que el nodo webhook relaciona la llamada entrante con un paciente existente (a través del nodo NÚMERO_TELÉFONO_DE_LA_LLAMADA ), la persona que llama es enviada a un flujo que proporciona automatización de autoservicio para la creación, actualización y cancelación de citas, así como solicitudes de autoservicio de reposición de recetas.

  4. El_paciente_existente Recoger entrada se utiliza para reproducir el saludo predefinido que se obtuvo de Deepgram.

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.

Cómo crear archivos de audio de texto a voz personalizados con Deepgram

Genere audio sintetizado mediante programación utilizando la API de un proveedor de TTS (por ejemplo, Deepgram) o a través de su interfaz de usuario. Estos archivos se devolverán a tu aplicación como un flujo binario, y puedes codificar el flujo como un archivo de extensión .mp3. A continuación se muestra un ejemplo de aplicación que se puede utilizar para crear archivos de audio a través de la API de Deepgram Aura de Deepgram.

Aprenda cómo empezar con API de conversión de texto a voz Aura de Deepgram.

importar solicitudes
importar os
from os.path import join, dirname
from dotenv import load_dotenv
from speech_patterns import SPEECH_PATTERNS


dotenv_path = join(dirname(__archivo__), ".env")
load_dotenv(ruta_dotenv)

deepgram_contraseña = os.environ.get('deepgram_contraseña')
deepgram_url = "https://api.deepgram.com/v1/speak?model=aura-asteria-en"
cabeceras = {
    "Content-Type": "application/json",
    "Authorization": f "Token {deepgram_password}"  }

def deepgram_tts():
    print("Iniciando el proceso")
    '''
    Envía cadenas de texto a Deepgram para la síntesis de voz y guarda los archivos MP3 devueltos.
    '''

    para clave, texto en SPEECH_PATTERNS.items():
        print(f "Procesando clave: {clave}")
        payload = {"texto": texto}
        response = requests.post(deepgram_url, headers=headers, json=payload)
        print(respuesta.cabeceras)

        if response.status_code == 200:
            filename = f"{key}.mp3"
            # ¡Asegúrate de utilizar `response.content` para el contenido binario!
            con open(nombredearchivo, 'wb') como archivo:
                file.write(response.content)
            print(f "Archivo guardado correctamente como {nombre_archivo}.")
        si no:
            print(f "Error: {código_estado.respuesta} - {texto.respuesta}")


if __name__ == "__main__":
    deepgram_tts()

Nota - en el código anterior, el import de speech_patterns importar SPEECH_PATTERNS es una referencia a un archivo asociado que tiene todos mis patrones de habla deseados que serán enviados a Deepgram, en este formato:

SPEECH_PATTERNS = {
    "system_greeting": "Hola y bienvenido a Dermatología y Estética Stonebridge",
    "patient_query": "Hola es un placer tenerle de nuevo con nosotros... ¿Qué le gustaría conseguir hoy?",
    "repeat_query": "No lo he entendido...¿Le importaría exponer de nuevo su necesidad, o simplemente utilizar su teléfono para introducir el dígito correspondiente?",
    "type_of_appointment": "¡Genial!  ¿Qué tipo de cita desea concertar?  Para un médico, diga médico o doctor, o lo que le preocupa.  Por ejemplo, podría decir cáncer de piel.  Para los servicios de estética, por favor diga esteticista o consultor, o el nombre del tratamiento que tiene en mente",
    "request_for_date": "Entendido, ¿Tiene en mente una fecha preferida?",
    "hora_cita": "Ahora, por favor, dígame una hora de cita que le venga bien",
    "appointment_coordination": "¡Genial, gracias!  Por favor, espere unos momentos mientras compruebo en el sistema si está disponible",
    "cita_confirmacion": "Perfecto.  Tengo su nueva hora de cita.  Le enviaré un correo electrónico de seguimiento con la información.  Estaremos encantados de verle en su cita.  Ahora, ¿hay algo más en lo que pueda ayudarle?".
}

Una vez que hayas ejecutado la aplicación anterior, obtendrás los archivos .mp3 correspondientes que podrás cargar en AI Studio.

Cómo añadir archivos de audio a AI Studio

Paso 1: Guardar la entrada del usuario en un parámetro

Navegue hasta el nodo Collect Input. Como he construido un agente de autoservicio para que los pacientes de médicos y especialistas creen y cambien citas, titularé este nodo "(Paciente existente) apropiadamente: Establecer fecha y hora de cita." Este nodo recogerá la información del usuario necesaria para fijar la cita. Específicamente, estoy recolectando la fecha y hora preferida del usuario para una cita, y asignándola a un parámetro llamado APPT_DATE. Este parámetro se utilizará más adelante en el flujo.

Collect Input NodeCollect Input Node

Paso 2: Cargar los archivos de audio

Seleccione el botón de radio "Audio". Una vez hecho esto, la vista cambia a un menú de voz.

Select “Recording” for PromptSelect “Recording” for PromptEn la sección "Prompt", elige "Recording". Ahora, añadirás el archivo desde tu almacenamiento local al almacenamiento de archivos integrado de AI Studio, o utilizarás un archivo de audio existente que ya se haya almacenado en AI Studio. En mi caso, ya tengo varios archivos que he subido, pero puedes utilizar el botón +Añadir grabación para añadir una nueva grabación.

Prompt designation - Select Recording

Una vez que hayas completado ese paso, el modal muestra que has seleccionado una grabación para reproducir para el usuario, como se muestra a continuación. Además, una característica útil de esto es que puedes ver la transcripción real del archivo (provista por Vonage AI). Esta visualización de la interfaz de usuario garantiza que asignes los archivos de audio adecuadamente a tus nodos de flujo.

Recording SelectedRecording Selected

Paso 3: Configurar otros nodos

A continuación, puede utilizar las demás funciones de este nodo como lo haría normalmente. Por ejemplo:

  1. Ajuste el número de reintentos (el número de veces que se reproduce la grabación)

  2. Establezca un aviso de reintento (por ejemplo, si desea que el agente enuncie "Lo siento, no lo he oído" como aviso secundario).

  3. Entrada de respuesta del llamante: Permite designar la respuesta de voz, la respuesta DTMF o ambas.

  4. Además, hay algunos refinamientos de lenguaje natural que puede querer añadir para que el Agente esté "entrenado" en sus palabras clave de contexto de caso de uso personalizadas, etc.

Asegúrate de pulsar el botón "Guardar y Salir", y ¡voilá! Ahora dispone de TTS personalizado para personalizar aún más su Agente.

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.