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

Génération dynamique de la parole avec des fournisseurs tiers dans AI Studio

Publié le September 3, 2024

Temps de lecture : 8 minutes

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 ce blog, nous allons montrer comment utiliser les voix synthétiques Deepgram générées dynamiquement avec AI Studio.

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 dynamiquement pour une personnalisation complète de l'interaction Agent <> Humain.

Un article de blog précédent traitait des fichiers audio vocaux générés de manière statique.

Aperçu du projet

Dans ce billet de blog, nous verrons comment utiliser Vonage AI Studio avec un fournisseur de synthèse vocale tiers pour générer dynamiquement des fichiers vocaux en fonction de paramètres personnalisés qui sont utilisés tout au long d'un flux AI Studio. Pour ce blogue, nous utiliserons une application de dossier de santé électronique (DSE) jouet, et nous ferons la démonstration d'un appel entrant d'un utilisateur 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 "Identification de l'appelant". Nous utiliserons l'identifiant de la ligne d'appel entrant (CLID) de l'appelant pour fournir un message d'accueil personnalisé. Ce modèle vous offre un bon point de départ. Pour plus d'informations sur ce modèle, vous pouvez consulter cet article.

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 générés dynamiquement à 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 et le nœud Collect Input. Nous nous concentrerons sur le nœud Collecte des données .

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.

Dans ce cas d'utilisation, il peut être important de fournir une interface utilisateur entièrement personnalisée. Cela signifie que vous voudrez peut-être utiliser les attributs de l'utilisateur, collectés tout au long de l'appel, dans le cadre du flux TTS généré. Par exemple, dans mes flux de patients existants, je veux saluer personnellement chaque utilisateur et communiquer avec lui par son prénom, et je veux que l'agent lise certains de ces attributs dans le cadre de mes flux. Voici quelques exemples :

  • Bonjour, F_NAME. C'est un plaisir de vous retrouver parmi nous aujourd'hui. Votre rendez-vous est actuellement fixé à DATE_DU_RENDEZ-VOUSà APPT_TIME. Avez-vous besoin d'aide ?

  • Bonne nouvelle, NOM_Fvotre rendez-vous a été reporté à la date suivante DATE_DU_NOUVEAU_RENDEZ-VOUS à NOUVELLE_HEURE_APPTE. Souhaitez-vous que je vous envoie un message de confirmation ?

  • Très bien, j'ai votre numéro de portable en tant que PATIENT_MOBILE. Est-ce toujours correct ? Si c'est le cas, je vous enverrai un rappel par SMS maintenant et la veille du rendez-vous. Si ce n'est pas le cas, faites-moi savoir que nous devons modifier vos coordonnées et je vous aiderai à le faire.

Nous allons nous pencher sur cette approche. Il est un peu plus complexe de créer des fichiers vocaux dynamiques basés sur les informations collectées auprès de l'utilisateur et stockées dans divers paramètres. Tous les fournisseurs de TTS axés sur les points d'accès ne fournissent pas d'installation de stockage dans le nuage ; ils transmettent le fichier audio binaire renvoyé directement dans la réponse ou dans un notificateur d'événement de type webhook. C'est particulièrement le cas pour Deepgram, où vous pouvez choisir de recevoir votre audio sur un webhook, ou dans le cadre d'une réponse 200 à votre appel API. Vous allez donc mettre en place un petit service de stockage éphémère en arrière-plan qui s'occupera de la route entrante et du traitement des fichiers vocaux intermédiaires. En fonction de votre approche (un gestionnaire de route ou un serveur de webhook), vous pouvez utiliser le service de stockage éphémère de Vonage Cloud Runtime. Asset de Vonage Cloud Runtime, ou tout autre blob / réservoir de stockage non structuré (AWS S3, etc.). L'idée ici est de rendre le stockage et l'utilisation des fichiers temporaires, de sorte que ces fichiers sont nettoyés après leur utilisation, ce qui améliore les contrôles de sécurité et de confidentialité dans votre application. Explorons maintenant la solution.

Dans mon cas, parce que mon application est un système de dossier médical électronique (DME), qui traite de multiples cas d'utilisation tels que la prise de rendez-vous, la reprogrammation, les paiements et les demandes d'ordonnance, je crée un nœud webhook à usage général (Deepgram_Node) que je peux utiliser pour tous mes flux. J'ai ajouté un nœud webhook pour gérer la reconnaissance du patient par son numéro d'appel entrant.

  1. Une fois que le nœud webhook préliminaire de mon application a récupéré le prénom de l'appelant entrant, je mappe cet attribut JSON dans un paramètre Studio appelé $F_NAME. J'utiliserai la valeur stockée dans ce paramètre pour l'ajouter à ma requête TTS adressée à Deepgram. Le nœud webhook de Deepgram est configuré comme suit.Deepgram Node Query ParamsDeepgram Node Query Params

  2. Notez que la configuration du corps formatée en JSON contient le texte générique que je souhaite, basé sur l'entretien du flux, ainsi que le texte personnalisé $F_NAME personnalisé. Deepgram Webhook Node JSON BodyDeepgram Webhook Node JSON Body

  3. La cartographie des réponses Mappage de la réponse dans le nœud webhook est critique car je vais utiliser la réponse 2xx reçue et mapper ces attributs à d'autres paramètres de Studio pour une utilisation ultérieure : Deepgram Node Response MappingDeepgram Node Response Mapping

  4. Notez que j'associe l'attribut URL renvoyé à un nouveau paramètre, appelé $SYNTHETIC_VOICE. Ce paramètre url est l'URL d'hébergement du fichier audio. Selon le fournisseur de stockage que vous utilisez (S3, etc.), il est important que cet attribut url corresponde à une structure similaire à celle-ci : https://storagefile.com/filename.mp3. L'analyseur de Studio recherchera explicitement l'extension de fichier .mp3 dans l'appendice de l'URL. Il s'agit du paramètre utilisé dans le nœud suivant pour lire l'intégralité du discours synthétisé. Voir la capture d'écran ci-dessous : Using the stored URL in the SYNTHETIC_VOICE parameterUsing the stored URL in the SYNTHETIC_VOICE parameter

  5. Ceci Collecter les entrées est maintenant prêt à être configuré avec d'autres paramètres comme vous le souhaitez, par exemple :

    1. Invite de réessai (qui peut être la même) $SYNTHETIC_VOICE ou un autre paramètre.

    2. En outre, vous pouvez configurer l'entrée de la réponse de l'appelant (parole, DTMF) et la détection du silence.

    3. En outre, en fonction de vos besoins spécifiques, vous pouvez configurer les mots-clés de contexte et l'ambigüité des entités pour vous assurer que votre agent interagit de manière optimale avec les humains.

  6. C'est une bonne pratique après avoir utilisé la fonction Collecter les entrées d'ajouter un nœud de Classification si la réponse de votre agent dépend de l'entrée de l'utilisateur humain. Vous pouvez en savoir plus sur ce nœud ici. Dans ce nœud, vous créez les connaissances et la formation nécessaires à l'agent pour qu'il puisse gérer l'intention de l'utilisateur.

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.