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

Intégrer la synthèse vocale personnalisée avec Vonage AI Studio et Deepgram

Publié le August 14, 2024

Temps de lecture : 9 minutes

Intro

AI Studio offre une grande variété de langues et de styles vocaux intégrés à la synthèse vocale (Text-to-Speech - TTS). de langues et de styles vocaux intégrésaméliorés par le langage de balisage de la synthèse vocale (SSML) pour créer des énoncés semblables à ceux d'un être humain. Il existe de nombreuses autres options TTS que vous pouvez utiliser à la place. AI Studio vous offre la possibilité de vous connecter à n'importe quel tiers disposant de points d'extrémité d'API REST accessibles. Dans cet article, nous allons vous montrer comment connecter AI Studio à Deepgram.

Une expérience TTS attrayante et humaine est essentielle pour les agents vocaux, car elle favorise une interaction naturelle et relatable, donnant aux utilisateurs le sentiment d'être compris et appréciés. Ce niveau d'engagement améliore la satisfaction globale et la fidélité des clients, car il réduit la frustration et améliore l'efficacité de la communication.

Cet article de blog traite de l'utilisation de fichiers audio vocaux générés de manière statique dans le cadre d'un projet Speak ou Collecte d'entrée ou Collect Input. Un prochain article de blog traitera des les fichiers audio générés dynamiquement pour une personnalisation complète de l'interaction Agent <> Humain.

Aperçu du projet

Dans ce billet de blogue, nous verrons comment utiliser Vonage AI Studio avec un fournisseur de synthèse vocale tiers, illustré par une application de dossier de santé électronique (DSE) jouet. Nous ferons la démonstration d'un appel entrant d'un patient vers le cabinet d'un médecin. L'application Studio est conçue pour collecter des informations sur l'utilisateur via le Calling Line ID (CLID), ou le numéro de téléphone de l'utilisateur entrant. L'agent Studio utilisera un webhook pour collecter des informations sur le patient, telles que son nom et son prénom, son numéro d'identification et l'existence ou non de rendez-vous programmés. L'utilisateur sera accueilli à l'aide de la fonction Deepgram Aura TTS de Deepgram.

Conditions préalables

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.

Comment créer un agent Voice

Étape 1 : Créer votre agent

Depuis le AI Studio Dashboardsélectionnez Créer un agent. Puisqu'il s'agit d'un cas d'utilisation vocal, sélectionnez "Téléphonie".

ai-studio_agent_typeSelect Agent Type

Étape 2 : Configuration de l'agent

La configuration de l'agent est une première étape nécessaire et de plus amples informations sont disponibles ici. Dans notre cas, nous fournissons quelques constructions d'agent de base, notamment la localisation, l'affectation de l'agent à une clé API ou à un Subaccounts spécifique, et la langue de l'agent.

ai_studio_agent_detailsAgent DetailsVeuillez noter que l'agent Voice/Telephony demande que vous choisissiez une voix. Cependant, cette configuration n'est pas pertinente car nous utiliserons des voix de tiers (Deepgram). Dans ce cas, votre Account ne sera pas facturé pour l'utilisation de Vonage TTS, tant que vous utilisez les approches mentionnées ici.

Étape 3 : Choisissez votre modèle

Choisissez le modèle "Identification de l'appelant. Nous utiliserons l'identification de la ligne d'appel entrante (CLID) de l'appelant pour fournir un message d'accueil personnalisé. Ce modèle vous donne un bon point de départ.

Choose a TemplateChoose a TemplateÉtape 4 : Choisir l'appel entrant

Choisissez l'option Appel entrant . Notre agent vocal répondra à un appel entrant, mais cela ne contraint pas l'agent à n'effectuer que des appels entrants. Par exemple, si vous souhaitez envoyer un courriel de suivi une fois que l'engagement avec l'agent est terminé, vous pouvez le faire dans le cadre de l'option Appel entrant des appels entrants. En savoir plus sur AI Studio Événements de conversation.

Choose Inbound CallChoose Inbound Call

Voilà, vous êtes prêt à commencer à construire votre agent Voice avec les voix personnalisées de Deepgram. C'est parti !

Comment intégrer des fichiers audio de synthèse vocale à AI Studio ?

Il est important de comprendre que dans un agent de téléphonie, deux nœuds peuvent être utilisés pour un TTS personnalisé. Vous pouvez en savoir plus sur les nœuds Parler et le nœud Collecter l'entrée en cliquant sur les liens. Nous nous concentrerons sur le nœud Collecte des données pour ce billet de blog. Dans mon agent, comme décrit, il y a plusieurs nœuds présents avec lesquels l'appelant interagit, avant d'atteindre le nœud Collecter les données avant d'atteindre le nœud Collect Input. Voir ci-dessous :

Basic Flow InitiationBasic Flow Initiation

Vous pouvez voir les nœuds suivants avec lesquels l'appelant interagit.

  1. Le Démarrage Le nœud.

  2. Le patient_webhook est utilisé pour collecter des informations sur l'appelant à partir de la base de données du DSE.

  3. Un nœud conditionnel appelé Patient_existant est utilisé pour déterminer dans quel flux envoyer ensuite l'utilisateur. Dans ce cas, puisque le nœud webhook fait correspondre l'appelant entrant à un patient existant (via le nœud NUMÉRO DE TÉLÉPHONE DE L'APPELANT ), l'appelant est dirigé vers un flux qui permet l'automatisation en libre-service de la création, de la mise à jour et de l'annulation de rendez-vous, ainsi que des demandes de renouvellement d'ordonnance en libre-service.

  4. Le patient existant Collecter l'entrée est utilisé pour jouer le message d'accueil prédéfini provenant de Deepgram.

Grâce à cette approche, les concepteurs de conversations peuvent créer des fichiers audio vocaux à l'aide du point de terminaison API de n'importe quel fournisseur et utiliser le fichier renvoyé dans une application de type Collecter l'entrée de collecte d'entrées.

Comment créer des fichiers audio de synthèse vocale personnalisés avec Deepgram

Générer par programme de l'audio synthétisé à l'aide de l'API d'un fournisseur de TTS (par exemple, Deepgram) ou via son interface utilisateur. Ces fichiers seront renvoyés à votre application sous la forme d'un flux binaire, et vous pouvez encoder le flux sous une extension de fichier .mp3. Vous trouverez ci-dessous un exemple d'application qui peut être utilisée pour créer des fichiers audio par l'intermédiaire de l'API Aura de Deepgram.

Apprenez à démarrer avec l'API de synthèse vocale Aura de Deepgram l'API de synthèse vocale Aura de Deepgram.

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


dotenv_path = join(dirname(__file__), ".env")
load_dotenv(dotenv_path)

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

def deepgram_tts() :
    print("Démarrage du processus")
    '''
    Envoie des chaînes de texte à Deepgram pour la synthèse vocale et enregistre les fichiers MP3 obtenus.
    '''

    pour clé, texte dans SPEECH_PATTERNS.items() :
        print(f "Traitement de la clé : {clé}")
        payload = {"text" : text}
        response = requests.post(deepgram_url, headers=headers, json=payload)
        print(response.headers)

        if response.status_code == 200 :
            filename = f"{key}.mp3"
            # Assurez-vous d'utiliser `response.content` pour le contenu binaire !
            with open(filename, 'wb') as file :
                file.write(response.content)
            print(f "Fichier sauvegardé avec succès sous le nom de {nom de fichier}.")
        else :
            print(f "Erreur : {response.status_code} - {response.text}")


if __name__ == "__main__" :
    deepgram_tts()

Note - dans le code ci-dessus, l'importation de speech_patterns import SPEECH_PATTERNS est une référence à un fichier associé qui contient tous les modèles de discours que je souhaite envoyer à Deepgram, dans ce format :

SPEECH_PATTERNS = {
    "system_greeting" : "Hello, and welcome to Stonebridge Dermatology and Aesthetics" (Bonjour et bienvenue à Stonebridge Dermatologie et Esthétique),
    "patient_query" : "Hello it's nice to have you back with us... What would you like to accomplish today ?" (Bonjour, c'est un plaisir de vous revoir parmi nous... Qu'aimeriez-vous accomplir aujourd'hui ?),
    "repeat_query" : "Je n'ai pas compris... Pourriez-vous reformuler votre besoin ou utiliser votre téléphone pour entrer le chiffre approprié ?",
    "type_of_appointment" : "Super !  Quel type de rendez-vous souhaitez-vous prendre ?  Pour un médecin, veuillez indiquer soit médecin, soit docteur, soit ce qui vous préoccupe.  Par exemple, vous pouvez dire cancer de la peau.  Pour les services d'esthéticienne, veuillez dire esthéticienne ou conseillère, ou le nom du traitement que vous envisagez",
    "request_for_date" : "Understanding, Do you have a preferred date in mind ?",
    "appointment_time" : "Maintenant, veuillez m'indiquer une heure de rendez-vous qui vous convienne",
    "appointment_coordination" : "Très bien, merci !  Veuillez patienter quelques instants, le temps que je vérifie dans le système si cette date est disponible",
    "appointment_confirmation" : "Parfait.  J'ai votre nouvelle heure de rendez-vous.  Je vous enverrai un courriel de suivi avec les informations.  Nous serons heureux de vous voir à votre rendez-vous.  Maintenant, y a-t-il autre chose que je puisse faire pour vous aider ?"
}

Après avoir exécuté l'application ci-dessus, vous obtiendrez les fichiers .mp3 correspondants qui peuvent maintenant être utilisés pour télécharger vers AI Studio.

Comment ajouter des fichiers audio à AI Studio ?

Étape 1 : Enregistrer l'entrée de l'utilisateur dans un paramètre

Naviguez jusqu'au nœud Collect Input. Étant donné que j'ai créé un agent en libre-service pour les patients des médecins et des spécialistes afin de créer et de modifier des rendez-vous, j'intitulerai ce nœud "(Patient existant) de manière appropriée: Fixer la date et l'heure du rendez-vous." Ce nœud recueillera les informations de l'utilisateur nécessaires pour fixer le rendez-vous. Plus précisément, je recueille la date et l'heure préférées de l'utilisateur pour un rendez-vous, et je les assigne à un paramètre appelé APPT_DATE. Ce paramètre sera utilisé plus loin dans le flux.

Collect Input NodeCollect Input Node

Étape 2 : Téléchargement des fichiers audio

Sélectionnez le bouton radio "Audio". Une fois que vous avez fait cela, l'affichage se transforme en un menu d'invite vocale.

Select “Recording” for PromptSelect “Recording” for PromptDans la section Prompt, choisissez "Recording". À présent, vous allez ajouter le fichier de votre stockage local au stockage de fichiers intégré d'AI Studio, ou utiliser un fichier audio existant qui a déjà été stocké sur AI Studio. Dans mon cas, j'ai déjà téléchargé plusieurs fichiers, mais vous pouvez utiliser la fonction +Ajouter un enregistrement pour ajouter un nouvel enregistrement.

Prompt designation - Select Recording

Une fois cette étape franchie, la fenêtre modale indique que vous avez sélectionné un enregistrement à faire écouter à l'utilisateur, comme indiqué ci-dessous. En outre, vous pouvez voir la transcription réelle du fichier (fournie par Vonage AI). Cette visualisation de l'interface utilisateur permet de s'assurer que les fichiers audio sont correctement associés à vos nœuds de flux.

Recording SelectedRecording Selected

Étape 3 : Configuration des autres nœuds

Vous pouvez ensuite utiliser les autres fonctions de ce nœud comme vous le feriez normalement. Par exemple :

  1. Régler le nombre de tentatives (le nombre de fois que l'enregistrement est lu)

  2. Définir un message de relance (par exemple, si vous souhaitez que l'agent énonce "Je suis désolé, je n'ai pas entendu" comme message secondaire).

  3. Entrée de la réponse de l'appelant : Permet de désigner la réponse vocale, la réponse DTMF ou les deux.

  4. En outre, il est possible d'affiner le langage naturel de manière à ce que l'agent soit "formé" à votre contexte d'utilisation personnalisé (mots clés, etc.).

Veillez à appuyer sur le bouton "Enregistrer et quitter", et voilà ! Vous disposez maintenant d'un TTS personnalisé pour personnaliser davantage votre agent.

Conclusion

Aujourd'hui, de nombreux fournisseurs de TTS intègrent les LLM dans leurs pipelines de synthèse vocale, ce qui permet d'obtenir une parole plus naturelle et plus expressive. Auparavant, la synthèse vocale était principalement basée sur des méthodes telles que la synthèse concaténative, qui assemblait des extraits de discours préenregistrés, et la synthèse paramétrique, qui utilisait des modèles statistiques tels que les modèles de Markov cachés (HMM). Ces premières techniques ont souvent donné lieu à des voix plus robotiques et moins nuancées.

Les LLM améliorent la synthèse vocale en exploitant de vastes quantités de données et des architectures de réseaux neuronaux avancés pour comprendre et générer des modèles vocaux semblables à ceux de l'homme. Ils analysent le texte en fonction du contexte, des sentiments et des rythmes naturels de la parole, ce qui permet d'obtenir une intonation, un stress et une émotion plus précis dans la parole générée. Il en résulte des voix non seulement plus claires et plus agréables à écouter, mais aussi capables de transmettre des émotions subtiles et une dynamique de conversation naturelle, ce qui améliore considérablement l'expérience globale de l'utilisateur.

Dans cet article de blog, nous avons exploré la manière d'utiliser des fournisseurs de synthèse vocale tiers en conjonction avec AI Studio pour personnaliser entièrement l'expérience de l'utilisateur. La participation de la communauté est toujours la bienvenue. N'hésitez pas à nous rejoindre sur GitHub et sur Communauté Vonage Slack.

Partager:

https://a.storyblok.com/f/270183/398x436/1c09fedd7d/tim-dentry.jpg
Tim DentryArchitecte de solutions pour les clients du secteur de la santé

Tim est un architecte de solutions pour les clients du secteur de la santé et un passionné d'IA/ML, en particulier dans le domaine du traitement et de la compréhension du langage naturel et des graphes de connaissances. En dehors de son travail, Tim aime voyager dans le monde entier, faire de la recherche sur l'IA et il pratique la danse de salon en compétition.