Une couche d’expression entre le LLM et la voix des agents
LiveKit Expressive mode ajuste automatiquement émotion, rythme et sons non verbaux des agents vocaux selon le contexte de la conversation.
Expressive mode ajoute à LiveKit Agents une couche chargée de piloter la manière dont un agent vocal prononce ses réponses. Plutôt que d’envoyer systématiquement un texte neutre au moteur TTS, le LLM peut désormais déterminer à partir du contexte si la réponse doit intégrer davantage de chaleur, d’enthousiasme, d’hésitation, une pause ou certains sons non verbaux.
Le système se place entre le LLM et le TTS. LiveKit injecte dans le prompt les instructions correspondant au moteur vocal utilisé afin que le modèle ajoute des balises de prosodie directement dans sa réponse. Le framework normalise ensuite ces indications, les convertit vers le format compris par le fournisseur TTS et les retire du transcript visible par l’utilisateur.
Cette couche permet de changer de fournisseur sans demander au développeur de gérer manuellement les différentes syntaxes. Fish Audio S2.1 Pro, Inworld TTS 2, les modèles Sonic de Cartesia et xAI TTS-1 sont pris en charge au départ. Expressive mode fonctionne avec n’importe quel LLM, mais nécessite côté voix un modèle disponible via LiveKit Inference et déclarant un dialecte de markup compatible.
LiveKit a également modifié la manière dont le texte est transmis à la synthèse vocale. Selon ses tests, envoyer chaque phrase séparément faisait perdre une partie du contexte émotionnel au TTS et pouvait provoquer des variations de tonalité d’une phrase à l’autre. Le framework regroupe donc plusieurs phrases avant synthèse afin de conserver davantage de cohérence sur l’ensemble d’une prise de parole. LiveKit indique ne pas avoir observé de coût de latence significatif avec un LLM rapide comme Gemma 4 31B.
Le comportement reste configurable. Les développeurs peuvent modifier le rythme, retirer les hésitations ou empêcher certains sons comme les rires, soupirs, respirations ou vocalisations. Des instructions personnalisées peuvent également compléter ou remplacer celles injectées automatiquement par LiveKit.
L’état expressif peut enfin être transmis à l’interface. LiveKit normalise les indications produites par certains fournisseurs vers onze catégories d’humeur afin d’alimenter par exemple un visualizer ou un indicateur visuel. Fish Audio, Inworld et Cartesia transmettent cette information via `lk.expression`. xAI peut modifier la prosodie de la voix, mais ne fournit pas actuellement ce signal d’expression à l’interface.
Expressive mode concerne uniquement les agents construits avec une pipeline STT, LLM et TTS. Les modèles speech-to-speech temps réel n’utilisent pas cette couche, puisqu’ils gèrent directement leurs caractéristiques vocales.