LiveKit Agents : bâtir des agents IA vocaux temps réel en open source
La majorité des agents IA déployés aujourd’hui restent textuels : un chat, des outils, un LLM. La voix change la donne, autant pour l’expérience utilisateur que pour l’architecture. Latences en dizaines de millisecondes, interruptions naturelles, gestion d’un état audio bidirectionnel : rien ne se règle avec une boucle HTTP classique. LiveKit Agents, framework Apache 2.0 publié par LiveKit, propose une réponse mûre et entièrement open source pour bâtir ces agents.
Ce que LiveKit Agents apporte
LiveKit est d’abord connu pour son serveur WebRTC open source utilisé par OpenAI, Character.AI et de nombreuses plateformes de visio. LiveKit Agents est la couche orchestration au-dessus, écrite en Python et TypeScript. Le framework prend en charge trois choses qui posent problème dès que l’on quitte le texte.
Le transport audio temps réel. Les flux audio entrants et sortants passent par WebRTC, avec gestion native du jitter, du bruit, de l’écho et de la perte de paquets. L’agent reçoit des trames PCM prêtes à être envoyées au STT, et publie un flux TTS qui peut être interrompu à tout moment par l’utilisateur, sans coupure ni latence perceptible.
Le pipeline voix. Le framework expose une abstraction VoicePipelineAgent qui orchestre la chaîne STT, LLM, TTS. Chaque brique est interchangeable : Faster Whisper ou Deepgram côté STT, n’importe quel modèle compatible OpenAI côté LLM, Piper ou Cartesia côté TTS. Le pipeline gère les VAD (Voice Activity Detection), les turn-taking, la barge-in, sans code spécifique.
L’intégration multimodale. Depuis fin 2024, LiveKit Agents supporte directement l’API Realtime d’OpenAI (modèle gpt-realtime), ainsi que les modèles audio natifs de Google et Anthropic. Une seule abstraction MultimodalAgent couvre le cas où le LLM gère lui-même audio entrant et sortant, sans STT ni TTS séparés.
Pourquoi c’est intéressant pour une stack open source
LiveKit Agents brille particulièrement quand on veut rester souverain et opérer en auto-hébergement. Plusieurs combinaisons sont éprouvées :
- STT : Faster Whisper local (déjà traité dans un précédent article), ou whisper.cpp pour les environnements contraints,
- LLM : Ollama, vLLM ou SGLang via une API compatible OpenAI, avec LiteLLM en façade,
- TTS : Piper en local pour le français, ou Coqui TTS pour les voix clonées,
- Transport : serveur LiveKit auto-hébergé (Docker, distribution unique).
Toute la chaîne tourne sans appel externe, sans clé API tierce, et sans dépendance à un fournisseur de cloud audio.
Un exemple minimal
Un agent vocal qui répond en français en s’appuyant sur Ollama tient en une vingtaine de lignes :
from livekit.agents import AgentSession, Agent
from livekit.plugins import openai, silero, piper
async def entrypoint(ctx):
agent = Agent(
instructions="Tu es un assistant francophone, concis et chaleureux.",
stt=openai.STT(base_url="http://localhost:8000/v1", model="whisper-1"),
llm=openai.LLM(base_url="http://localhost:11434/v1", model="qwen2.5:7b"),
tts=piper.TTS(model="fr_FR-upmc-medium"),
vad=silero.VAD.load(),
)
session = AgentSession()
await session.start(agent=agent, room=ctx.room)
await session.generate_reply(instructions="Salue l'utilisateur.")
Le code reste lisible parce que toute la mécanique audio, VAD, interruptions, est portée par le framework. L’attention reste sur le comportement de l’agent.
Cas d’usage où la voix devient pertinente
Sur un site comme askem.eu, la voix n’est pas systématique. Elle prend du sens dans des cas précis :
- standard téléphonique automatisé (couplé à Twilio ou un SIP open source comme FreeSWITCH),
- assistant interne pour techniciens en intervention, mains occupées,
- interface accessible pour utilisateurs malvoyants ou en situation de mobilité,
- compagnon d’apprentissage ou de coaching, où la conversation orale change la dynamique,
- prototype d’agent multimodal voix plus vision, en interaction directe avec un opérateur.
Le framework couvre aussi les déploiements téléphoniques entrants et sortants via l’intégration SIP native, ce qui permet de monter un voicebot connecté à un numéro géographique sans plateforme tierce.
Articulation avec les outils déjà couverts
LiveKit Agents s’insère naturellement dans une stack open source agentique. Les outils déjà présentés se branchent sans friction :
- LangGraph ou Pydantic AI pour la logique métier de l’agent (outils, mémoire, branchements), appelée depuis le
VoicePipelineAgent, - Mem0 ou Letta pour la mémoire persistante entre conversations,
- Langfuse pour tracer les tours de parole et mesurer la latence par étape,
- MCP pour exposer les outils métier internes à l’agent, voix ou texte indifféremment.
Limites à connaître
Le framework reste exigeant techniquement. Quelques points de vigilance :
- la latence cible (sous la seconde de bout en bout) impose un STT local rapide et un LLM faiblement chargé ; sur CPU, c’est jouable mais limite, GPU recommandé,
- les modèles français de Piper restent corrects mais en dessous d’une voix premium type ElevenLabs ; pour de la production grand public, prévoir une comparaison,
- l’API Realtime d’OpenAI offre la meilleure qualité actuelle mais sort du périmètre open source et engage en coût et en données,
- le déploiement WebRTC ajoute une dépendance réseau (ports UDP, TURN) qu’il faut anticiper, surtout derrière un reverse proxy.
En résumé
LiveKit Agents donne enfin à l’open source une réponse crédible pour les agents IA vocaux, là où le secteur s’était longtemps replié sur des stacks propriétaires. Pour un projet qui veut tester la voix sans s’enfermer, c’est aujourd’hui la base la plus solide : transport audio mûr, pipeline modulaire, support natif des LLM multimodaux, et compatibilité avec l’écosystème open source déjà en place. La voix n’est plus un frontière interdite, elle devient un canal de plus pour les agents.
Liens utiles : github.com/livekit/agents, docs.livekit.io/agents, serveur LiveKit auto-hébergé sur github.com/livekit/livekit.
