Agents vocaux en temps réel avec l'intelligence de pointe — Bohan Li, EliseAI

AAI Engineer
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00Je m'appelle Bo. Je vais vous présenter les agents vocaux en temps réel avec une intelligence
00:00:18de pointe. Nous allons voir comment nous, chez
00:00:22Elise AI, avons conçu notre architecture d'agent vocal pour obtenir du temps réel avec le
00:00:28niveau d'intelligence de pointe dont nous avons besoin. Donc, avant de commencer, je voulais
00:00:36établir des parallèles sur les raisons pour lesquelles nous avons opté pour des agents vocaux en cascade
00:00:42et surtout comparer cela aux voitures autonomes sur lesquelles je travaillais
00:00:48auparavant. Pour moi, les agents vocaux en cascade prennent tout leur sens lorsqu'on les analyse
00:00:53sous l'angle de la perception, qui, pour les voitures autonomes,
00:00:59correspond aux boîtes englobantes, à la caméra, au lidar. Pour la voix, il s'agit de
00:01:05la transcription, c'est-à-dire transformer efficacement ces signaux du monde réel
00:01:09en éléments de données que le modèle de langage ou le cerveau que vous utilisez peut
00:01:17traiter. La deuxième étape est la pile de planification, ce qui est assez direct.
00:01:23C'est ici que le modèle de langage prend les résultats de l'étape de perception pour produire
00:01:29les réponses que vous souhaitez renvoyer dans le monde réel. Enfin, il y a la couche de contrôle
00:01:36où, en conduite autonome, vous prenez la trajectoire produite par le planificateur pour
00:01:43la convertir en commandes réelles afin de piloter la voiture. Ici, nous transformons le texte en
00:01:50audio pour exprimer les pensées de nos agents vocaux. Et donc, je vais maintenant me pencher sur
00:02:00chacun de ces éléments. Nous avons développé quelques astuces intéressantes dans chacun de ces domaines pour
00:02:08améliorer la vitesse de nos agents vocaux sans sacrifier l'intelligence.
00:02:13La première partie concerne la couche de transcription. Nous avons inventé ce concept que nous appelons
00:02:19le transcripteur spéculatif en flux continu, où nous superposons efficacement un transcripteur
00:02:24rapide en flux continu comme Flux au-dessus (ou plutôt en dessous) de Scribe v2, une transcription
00:02:33par lots plus précise qui intègre davantage de contexte. C'est un peu plus lent, mais cela offre des détections plus exactes.
00:02:39Examinons un scénario. Dans ce cas, l'agent vient de demander :
00:02:44« Pouvez-vous donner votre nom et votre date de naissance ? » L'utilisateur va répondre et nous allons voir le déroulement
00:02:49au niveau du timing. D'abord, nous obtenons une première détection provenant de la couche de diffusion en continu.
00:02:57La couche précise, la couche corrective, ne se déclenche pas car le texte est identique.
00:03:05Nous recevons d'autres détections de texte en streaming, et dans ce cas, la couche corrective est en fait
00:03:11annulée car nous avons du nouveau texte. Donc, plus de contexte et plus d'audio l'emportent sur l'ancienne version précise.
00:03:21C'est ici qu'intervient la première correction. Comme la couche Scribe v2 comprend
00:03:27le contexte de la question, elle est capable de saisir qu'il s'agit d'un nom et d'une date de naissance.
00:03:34Ensuite, quelques détections supplémentaires. Ce ne sont que des ponctuations, on s'en fiche.
00:03:37Finalement, nous transmettons ce texte à l'agent.
00:03:44Passons maintenant à la couche du modèle de langage. Vu que nous utilisons des LLM lents mais
00:03:52intelligents, nous voulons vraiment réduire les allers-retours. Ce qui nous amène à effectuer
00:03:58beaucoup d'inférences, c'est l'appel d'outils. Une façon d'éviter cela est de confier les appels d'outils à des agents
00:04:05en arrière-plan et de réinjecter ces outils dans le contexte de l'agent principal pour qu'il croie
00:04:13avoir effectué l'appel lui-même, alors que ce n'est pas le cas. Rappelez-vous de la détection précédente : chacune de ces détections va déclencher
00:04:26une génération précoce de la part de l'agent, mais nous ne l'émettrons pas tant que nous n'aurons pas la confirmation que
00:04:38l'utilisateur a fini de parler. Dans ce cas, l'utilisateur dit « bien sûr ». L'agent sait que l'utilisateur va probablement ajouter quelque chose.
00:04:45Notre appel d'outil en arrière-plan, qui nous aide à identifier le nom et la date de naissance à partir de la détection utilisateur,
00:04:51ne se déclenche pas, donc rien de spécial. La détection instantanée suivante arrive, indiquant toujours pas vraiment de nom.
00:05:02Notre agent joue le jeu et continue.
00:05:06Ensuite, davantage de contexte revient. L'agent estime qu'il devrait y avoir un nom.
00:05:11Il va demander de l'épeler car il soupçonne une erreur de transcription.
00:05:16Toujours pas de nom ni de date de naissance. Puis enfin, rappelez-vous qu'il s'agit de notre détection
00:05:22instantanée finale corrigée par le transcripteur Scribe v2.
00:05:27Ici, la génération hâtive de l'agent qui avait été effectuée sans aucun appel d'outil va être annulée
00:05:34parce que l'agent en arrière-plan a enfin réussi à trouver le nom et la date de naissance recherchés.
00:05:38Il se relance et l'agent dispose désormais du contexte nécessaire.
00:05:45Vous voyez que nous faisons cela ici. L'appel d'outil comporte un peu
00:05:49d'intelligence. Nous allons par exemple corriger les erreurs de transcription des noms
00:05:53et effectuer une correspondance phonétique.
00:05:57Et une fois que nous avons compris qu'il s'agit de la fin de la prise de parole de l'utilisateur,
00:06:02nous l'émettons. C'est assez classique.
00:06:06Bien, la couche suivante est la synthèse vocale (TTS). Avec la synthèse vocale, l'objectif
00:06:12est de prendre ce qu'a dit l'agent, qui l'émet de manière
00:06:16continue. Nous devons donc produire l'audio aussi vite que possible. Idéalement, il est possible
00:06:24de diffuser l'audio avant même que l'agent n'ait fini de générer tout le texte. Cela permet de
00:06:31masquer la latence de la fin de la génération. Je vais donc lancer le flux
00:06:39de l'agent. Cela commence par U. Et avant d'aller plus loin, il y a
00:06:46ce nouveau concept que nous introduisons appelé le cache de préfixe. Le cache de préfixe
00:06:52analyse le flux de l'agent pour voir si nous avons déjà généré de l'audio pour cette séquence de mots
00:07:02lors d'une génération précédente ou peut-être lors de la même génération dans cet appel.
00:07:10Il voit le mot U. Pour ce cache de préfixe, nous ne voulons pas
00:07:17obtenir une correspondance immédiate sur chaque mot. Nous attendons d'avoir un peu plus de mots. Donc après
00:07:24trois mots, le cache de préfixe réalise sa première correspondance. Sur la droite, voici notre
00:07:31fournisseur standard de synthèse vocale, Cartesia, un moteur TTS avec prise en charge des WebSockets.
00:07:36Nous faisons donc passer l'agent par le cache et également par WebSocket.
00:07:45D'autres jetons arrivent, plus de cache, plus d'envois au WebSocket. Rien de spécial à ajouter.
00:07:51Et voici notre premier cas unique : nous trouvons un jeton qui provoque
00:07:59un échec du cache. C'est logique si l'on met en cache les générations précédentes. « You said your name
00:08:05is » est une phrase fréquente, mais une fois qu'on ajoute le nom, cela provoque un échec du cache.
00:08:12À ce stade, nous restituons notre audio mis en cache. « You said your name is » va donc
00:08:19être émis pendant que le reste du texte en streaming arrive. À ce moment-là, l'utilisateur entend l'agent.
00:08:25Il ne se rend compte de rien, il a juste l'impression d'avoir des temps de réponse très rapides.
00:08:32Le reste du texte s'écoule ensuite. À ce stade, nous avons déjà émis depuis le cache.
00:08:38Le cache a fait son travail. Nous pouvons envoyer le reste à Cartesia. Et voici l'astuce :
00:08:46Cartesia a vu toute la transcription jusqu'à présent. Pour Cartesia, elle ignore
00:08:56l'existence de ce cache de préfixe. Elle va simplement générer la phrase complète avec une
00:09:01prosodie naturelle standard. Mais ce que nous faisons, lorsque la génération revient, puisque nous avons déjà joué
00:09:08l'audio ici, c'est de supprimer la partie audio provenant de Cartesia à cet endroit
00:09:13pour ne jouer que la suite. L'utilisateur ressentira peut-être un tout petit hoquet. Je diffuserai de l'audio plus tard et
00:09:21vous verrez que vous ne le remarquerez probablement pas. Et nous prenons cette partie
00:09:28pour l'émettre directement après la fin de la lecture du premier audio. C'est donc fluide pour l'utilisateur.
00:09:35Voilà, c'était beaucoup de détails techniques. Je pense que le mieux est
00:09:43d'écouter un appel pour voir cela en action. J'ai donc enregistré un appel, écoutons le résultat.
00:09:53Bonjour, ici Bo, cabinet gynécologique Elise. Que puis-je pour vous ?
00:09:59Bonjour, je pense être enceinte et je voudrais planifier une échographie de confirmation.
00:10:03C'est une excellente nouvelle. Pouvez-vous me donner votre nom et votre date de naissance ?
00:10:08Bien sûr, c'est Elise Trial. Date de naissance, 2303.
00:10:15Merci. Êtes-vous une nouvelle patiente chez nous ?
00:10:24Oui. Bienvenue au cabinet gynécologique Bo. Puis-je vous envoyer un lien par SMS pour téléverser vos informations d'assurance ?
00:10:34D'accord. C'est envoyé. Prévenez-moi quand vous l'aurez reçu.
00:10:48J'ai bien reçu vos informations d'assurance. Le premier rendez-vous disponible est le jeudi
00:10:532 juillet à 10 h. Attendez, laissez-moi vérifier mon calendrier.
00:11:01Bien sûr, prenez votre temps. Avez-vous quelque chose pour la semaine prochaine ?
00:11:09Pour la semaine prochaine, je peux vous proposer une échographie avec le Dr Avery Stone à la clinique North le mardi
00:11:147 juillet à 14 h ou 15 h. L'un de ces créneaux vous convient-il ?
00:11:20Oui, 14 h me va. Parfait, votre rendez-vous est réservé. Nous avons hâte de vous voir.
00:11:29Merci, au revoir. Voilà, c'est à peu près tout.
00:11:35Vous pouvez voir que tout ce streaming et énormément de choses
00:11:43se produisent en arrière-plan. Et c'est précisément ce qui rend les agents vocaux passionnants.
00:11:48Il y a un travail considérable à fournir au niveau de la structure pour obtenir
00:11:55une conversation naturelle, ce que nous recherchons.
00:11:59Pour finir rapidement, je souhaite dire quelques mots sur Elise.
00:12:04Nos bureaux principaux sont à New York, et nous essayons d'étendre notre présence ici dans la Baie de San Francisco.
00:12:09C'est un style d'entreprise différent de ce que les gens s'imaginent lorsqu'ils pensent aux startups de l'IA à San Francisco,
00:12:23où nous sommes réellement très concentrés sur le simple fait d'aider les gens et de les aider là où ils en ont
00:12:31dans les domaines les plus critiques de la vie. Nous travaillons sur le logement, la santé, et nous réussissons très bien.
00:12:37Il y a un lien pour rejoindre notre équipe, et nous allons publier
00:12:45beaucoup de choses sur Twitter, vous pouvez donc nous suivre sur @Elyse.ai. Voilà, c'est tout.
00:12:57Nous allons publier un peu plus de contenus sur Twitter, et nous allons publier un peu plus de contenus sur Twitter.

핵심 요약

L'architecture en cascade des agents vocaux combine un transcripteur spéculatif, des appels d'outils en arrière-plan et un cache de préfixe pour éliminer la latence de génération et offrir des conversations fluides en temps réel.

하이라이트

  • Les agents vocaux en cascade reposent sur une architecture en trois couches distinctes : la perception, la planification et les contrôles.

  • Le transcripteur spéculatif en flux continu superpose un système rapide en streaming et un modèle batch précis pour corriger les erreurs de reconnaissance.

  • La transmission des appels d'outils à des agents d'arrière-plan évite les allers-retours multiples et réduit la latence des grands modèles de langage.

  • Le cache de préfixe compare le flux de l'agent textuel aux séquences audio déjà générées pour restituer instantanément la parole et masquer la latence.

  • La synthèse vocale via Cartesia génère la prosodie complète d'une phrase tandis que le système supprime la portion déjà jouée par le cache audio.

타임라인

Architecture en cascade des agents vocaux

  • Les agents vocaux adoptent une structure en cascade similaire à celle des véhicules autonomes.
  • La couche de perception transforme les signaux bruts en données exploitables grâce à la transcription.
  • La couche de planification utilise un modèle de langage pour produire les réponses textuelles.
  • La couche de contrôle convertit le texte final en flux audio pour exprimer les pensées de l'agent.

L'organisation d'un agent vocal en temps réel s'inspire directement de la robotique et des voitures autonomes. La perception transcrit la voix, le modèle de langage planifie la réponse, et les contrôles génèrent la sortie audio. Cette structuration modulaire permet d'optimiser chaque composant individuellement sans perdre en intelligence globale.

Transcripteur spéculatif en flux continu

  • Le système associe un transcripteur rapide en streaming à une transcription batch plus lente et précise.
  • La couche corrective ajuste le texte en temps réel à mesure que le contexte de la conversation s'enrichit.
  • Les détections textuelles intermédiaires sont mises à jour ou annulées selon l'arrivée de nouveaux signaux audio.

Pour obtenir une transcription à la fois rapide et exacte, le système superpose deux niveaux de traitement. Un modèle rapide fournit un retour immédiat, tandis qu'un modèle plus lourd analyse le contexte global pour corriger les erreurs phonétiques ou contextuelles au fil de la phrase de l'utilisateur.

Appels d'outils par des agents d'arrière-plan

  • Les grands modèles de langage lents nécessitent une réduction drastique des allers-retours d'inférence.
  • Les agents d'arrière-plan exécutent les appels d'outils et injectent les résultats directement dans le contexte.
  • La génération précoce de l'agent principal est mise en attente jusqu'à la confirmation de la fin de parole de l'utilisateur.

L'utilisation d'outils ralentit traditionnellement les modèles de langage. En déléguant ces requêtes à des processus parallèles en arrière-plan, l'agent principal maintient une fluidité maximale tout en effectuant les recherches de données nécessaires, comme la vérification de l'identité ou la correction orthographique.

Cache de préfixe et synthèse vocale optimisée

  • Le cache de préfixe analyse le flux textuel pour identifier les segments audio déjà générés.
  • La restitution immédiate des segments en cache masque la latence de génération du modèle.
  • Le moteur Cartesia génère la phrase complète tandis que le système supprime la partie déjà jouée pour assurer une transition transparente.

La latence de la synthèse vocale est masquée grâce à un système de cache intelligent qui réutilise des segments audio fréquents. Lorsque le texte s'écarte des tournures habituelles, le cache restitue instantanément le début de la phrase pendant que le service WebSocket génère la suite avec une prosodie naturelle.

Démonstration pratique et présentation d'Elise

  • Un appel enregistré illustre la prise de rendez-vous médicale gérée entièrement par l'agent vocal.
  • L'agent traite les informations d'assurance, confirme la date et propose des créneaux horaires en direct.
  • L'entreprise Elise développe des solutions conversationnelles appliquées à la santé et au logement.

La démonstration concrète montre un échange fluide entre un utilisateur et l'agent pour planifier une échographie. L'interaction intègre la collecte de données, la vérification d'assurance et la proposition de rendez-vous sans heurts perceptibles. L'organisation déploie ces technologies pour automatiser les flux critiques dans le secteur médical et immobilier.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기