Votre agent vocal attend que le LLM ait fini de rédiger sa réponse avant de parler. Pendant ce temps, l'appelant attend. Ce délai — souvent 600 à 1 200 ms — est la principale cause de CSAT bas et de taux d'abandon élevé. Le streaming LLM le réduit de 40 à 60 % sans changer de modèle.
Dans un pipeline classique STT/LLM/TTS, les trois étapes sont séquentielles : le STT transcrit la parole, le LLM génère la réponse en entier, puis le TTS synthétise l'audio. L'appelant entend la réponse uniquement quand les trois étapes sont terminées. La latence totale est la somme des trois.
Le token streaming casse cette séquentialité. Dès que le LLM produit ses premiers tokens, ils sont envoyés au moteur TTS qui commence à synthétiser l'audio. L'appelant entend le début de la réponse avant même que le LLM ait terminé de la générer. C'est l'un des leviers d'optimisation de latence les plus efficaces disponibles en 2026 — et l'un des moins exploités dans les déploiements d'agents vocaux.
Ce guide explique le fonctionnement du streaming LLM, la technique du chunking TTS, l'architecture d'un pipeline entièrement streamé, les risques à anticiper en production, et les métriques pour mesurer le gain réel.
Pourquoi la latence est le problème numéro un d'un agent vocal IA
Une pause de plus de 1 200 ms dans une conversation téléphonique est perçue comme anormale par 78 % des appelants. Au-delà de 1 500 ms, le taux d'abandon augmente de façon significative. (Source : études telephony UX, 2024–2025)
La psychologie de la latence téléphonique
La conversation téléphonique humaine tolère des silences de 200 à 400 ms entre un énoncé et sa réponse. Au-delà, le cerveau interprète le silence comme un problème de connexion, une incompréhension ou un dysfonctionnement. Un agent vocal qui répond en 1 seconde est perçu comme lent. Un agent qui répond en 1,5 secondes est perçu comme cassé.
Contrairement au chat, où l'utilisateur voit les points clignotants pendant la génération, l'appelant entend uniquement le silence. Il n'y a aucun signal visuel pour indiquer que la réponse est en cours de génération. La latence perçue est donc directement corrélée au CSAT et au taux d'escalade vers un agent humain.
Décomposition de la latence dans un pipeline non-streamé
| Étape | Latence typique (P50) | Latence optimisée | Nature |
|---|---|---|---|
| Endpointing VAD | 100–200 ms | 80–120 ms | Détection fin de parole |
| STT transcription | 150–300 ms | 80–150 ms | Streaming ou batch selon modèle |
| RAG retrieval | 50–200 ms | 30–80 ms | Recherche vectorielle, optionnel |
| LLM inférence complète | 400–1 200 ms | 250–600 ms | Dépend de la longueur de réponse |
| TTS synthèse complète | 200–500 ms | 100–250 ms | Dépend de la longueur audio |
| Total (TTFA) | 900–2 400 ms | 540–1 200 ms | — |
Le goulot d'étranglement est clair : la latence LLM (inférence complète) est la plus variable et souvent la plus élevée, car elle dépend de la longueur de la réponse générée. Une réponse de 100 tokens prend 2 à 3 fois plus de temps qu'une réponse de 30 tokens. Sans streaming, l'appelant paie ce prix à chaque tour de parole.
Token streaming LLM : le mécanisme fondamental
Le streaming est le mode de génération dans lequel chaque token est envoyé au client dès qu'il est produit, sans attendre la fin de la réponse complète.
Comment fonctionne le streaming
Un LLM génère sa réponse token par token — c'est la nature autoregressive du décodage transformer. Sans streaming, ces tokens sont accumulés en mémoire côté serveur et envoyés d'un bloc à la fin. Avec le streaming, le serveur LLM envoie chaque token au client via une connexion persistante (SSE — Server-Sent Events, ou WebSocket) dès qu'il est produit.
Le client reçoit donc un flux de tokens, pas une réponse monolithique. Les premiers tokens arrivent après le TTFT (Time to First Token), qui est indépendant de la longueur totale de la réponse. C'est cette propriété qui ouvre la porte à la parallélisation avec le TTS.
Time to First Token (TTFT) : la métrique clé du streaming
Le TTFT est le délai entre l'envoi de la requête au LLM et la réception du premier token. Il est déterminé par le temps d'inférence du modèle pour générer ce premier token, qui dépend principalement de la taille du modèle, de la charge du serveur, et de la longueur du contexte (prompt + historique). Le TTFT est indépendant de la longueur de la réponse — un LLM qui génère 200 tokens aura le même TTFT qu'un LLM qui génère 20 tokens, à contexte identique.
| Modèle (provider) | TTFT médian (charge normale) | TTFT P95 |
|---|---|---|
| GPT-4o (OpenAI) | 200–400 ms | 600–900 ms |
| Claude 3.5 Sonnet (Anthropic) | 200–450 ms | 600–1 000 ms |
| Gemini 2.0 Flash (Google) | 150–300 ms | 400–700 ms |
| Llama 3.3 70B (Groq) | 80–200 ms | 250–500 ms |
| Mistral Large (Mistral) | 150–350 ms | 500–800 ms |
| LLM local 7B (vLLM, GPU H100) | 50–150 ms | 200–400 ms |
Les modèles plus rapides (Groq, modèles locaux) offrent des TTFT plus bas — ce qui réduit directement le TTFA. Pour les agents vocaux à faible tolérance de latence, le choix du provider LLM et de l'infrastructure d'hébergement est un levier d'optimisation clé, indépendamment du streaming.
Chunking TTS : comment transformer le flux de tokens en audio en temps réel
Le chunking TTS est la technique qui accumule les tokens reçus en streaming jusqu'à former un segment de texte syntaxiquement cohérent, puis l'envoie au moteur TTS pour synthèse immédiate.
Pourquoi on ne peut pas synthétiser token par token
Chaque appel à une API TTS a un coût de latence fixe (initialisation, réseau) et un coût de qualité : un moteur TTS a besoin d'un minimum de contexte textuel pour générer une intonation naturelle. Synthétiser un token à la fois ("Bon", "jour", ",", "comment") produirait un audio haché, robotique, avec des pauses anormales entre chaque mot. Il faut trouver la taille de chunk optimale.
Stratégies de chunking
Trois stratégies existent, chacune avec ses compromis :
- Chunking par taille fixe : envoyer au TTS tous les N tokens reçus (typiquement 15 à 25). Simple à implémenter, mais peut couper une phrase en milieu de mot ou de proposition — dégradant la prosodie.
- Chunking par frontière syntaxique : accumuler les tokens jusqu'au prochain signe de ponctuation (point, virgule, point-virgule, deux-points). Le chunk correspond à une proposition ou une phrase courte. C'est la stratégie recommandée pour la qualité audio — elle produit des intonations naturelles.
- Chunking adaptatif : combiner les deux approches — frontière syntaxique de préférence, mais taille maximale en fallback pour éviter les chunks trop longs si le LLM génère des phrases sans ponctuation intermédiaire. C'est l'approche état de l'art en 2026.
Taille optimale de chunk : le compromis latence / qualité
| Taille du chunk | Latence du premier audio | Qualité prosodique | Recommandation |
|---|---|---|---|
| 1–5 tokens | Très faible | Mauvaise (haché) | À éviter |
| 10–15 tokens | Faible | Correcte | Acceptable pour latence critique |
| 15–30 tokens | Modérée | Bonne | Recommandé (compromis optimal) |
| 30–60 tokens | Élevée | Très bonne | Si latence non critique |
| Réponse complète | Maximale (= sans streaming) | Excellente | Mode non-streamé — déconseillé |
Architecture du pipeline streamé complet
Un pipeline STT → LLM → TTS entièrement streamé fonctionne ainsi :
- Le STT transcrit la parole de l'appelant en streaming (transcription partielle + finale) et envoie le texte final dès que l'endpointing VAD détecte la fin de l'énoncé.
- Le LLM reçoit la transcription et commence à générer sa réponse en mode streaming. Les premiers tokens arrivent après le TTFT (150 à 400 ms selon le modèle).
- Le moteur de chunking accumule les tokens reçus. Dès qu'un premier chunk valide est formé (frontière syntaxique ou N tokens), il est envoyé au TTS.
- Le TTS synthétise le premier chunk et envoie l'audio à l'appelant. L'appelant entend le début de la réponse. Le LLM continue de générer.
- Les chunks suivants sont synthétisés et enchaînés en temps réel. L'appelant perçoit une réponse fluide et continue, sans silence intermédiaire.
Le gain de latence perçue (TTFA) est typiquement de 40 à 60 % par rapport au pipeline non-streamé, sur les mêmes modèles LLM et TTS. Ce gain augmente avec la longueur de la réponse — plus la réponse est longue, plus le streaming est avantageux.
Risques et complexités du streaming LLM en production
1. La gestion du barge-in en cours de streaming
Le barge-in — la capacité de l'appelant à interrompre l'agent en cours de réponse — est plus complexe à gérer dans un pipeline streamé. Sans streaming, interrompre l'agent signifie annuler la synthèse TTS d'un seul bloc audio. Avec streaming, il peut y avoir plusieurs chunks TTS en file d'attente ou en cours de diffusion. L'implémentation correcte requiert :
- La détection du barge-in par le module VAD, même pendant la diffusion audio de l'agent.
- L'interruption immédiate du flux audio en cours de lecture.
- L'annulation de tous les chunks TTS en file d'attente et non encore diffusés.
- L'annulation de la génération LLM en cours (via l'interruption de la connexion SSE ou WebSocket).
- La mise à jour du contexte de conversation avec la partie de la réponse effectivement entendue par l'appelant — pas la réponse complète générée.
Ce dernier point est critique : si l'appelant n'a entendu que les deux premiers chunks avant d'interrompre, le modèle LLM ne doit pas considérer que la réponse complète a été transmise. Le contexte conversationnel doit être tronqué au point d'interruption réel.
2. La prosodie inter-chunks
Quand deux chunks TTS sont enchaînés, la jointure entre la fin du premier chunk et le début du second doit être acoustiquement naturelle. Les moteurs TTS stateless (qui ne gardent pas de mémoire d'un appel à l'autre) peuvent produire des discontinuités prosodiques aux jointures — un changement de rythme ou de ton perceptible. La solution est d'utiliser des moteurs TTS avec contexte persistant (stateful streaming), ou de transmettre les tokens de contexte du chunk précédent au début du chunk suivant pour assurer la continuité prosodique.
3. La gestion des hallucinations en cours de streaming
Dans un pipeline non-streamé, il est possible de soumettre la réponse complète du LLM à un garde-fou avant de la synthétiser. Dans un pipeline streamé, les premiers chunks sont déjà synthétisés et diffusés avant que la réponse complète soit disponible. Une hallucination ou une erreur factuelle dans les premiers tokens ne peut pas être interceptée a posteriori — l'appelant l'a déjà entendue.
Les contre-mesures en production incluent le grounding préventif (vérifier la requête contre la base de connaissance avant de lancer la génération) et la conception de prompts qui placent les informations factuelles clés en fin de réponse plutôt qu'en début. Un monitoring post-appel reste nécessaire pour détecter les cas ayant échappé à ces filtres.
4. La compatibilité avec les function calls
Quand le LLM doit appeler une API métier (CRM, prise de rendez-vous, vérification de compte), le function call est généralement émis en fin de génération LLM — pas en début. Dans un pipeline streamé orienté voix, cela signifie que les chunks de texte précédant le function call ont déjà été synthétisés et diffusés. L'agent a déjà commencé à répondre verbalement avant de savoir qu'il doit appeler une API. La conception du prompt doit anticiper ce comportement : les formulations de type "Je vérifie votre dossier, un instant..." doivent précéder syntaxiquement le function call dans la génération.
Mesurer le gain réel du streaming LLM : métriques et instrumentation
Les métriques clés à instrumenter
Pour mesurer l'impact du streaming LLM sur la latence perçue, quatre métriques sont nécessaires :
- TTFT (Time to First Token) : délai entre l'envoi de la requête LLM et la réception du premier token. Mesure la réactivité du modèle.
- TTFA (Time to First Audio) : délai entre la fin de l'énoncé de l'appelant et l'émission du premier son de la réponse de l'agent. C'est la latence perçue — la métrique business principale.
- Chunk latency : délai de synthèse de chaque chunk TTS. Mesure la réactivité du moteur TTS sur des inputs courts.
- Inter-chunk gap : silence entre la fin d'un chunk audio et le début du suivant. Doit rester inférieur à 50 ms pour être imperceptible.
Tableau comparatif : avec et sans streaming
| Scénario | TTFA (P50) | TTFA (P95) | Réponse 30 tokens | Réponse 100 tokens |
|---|---|---|---|---|
| Sans streaming | 950 ms | 1 800 ms | 750 ms | 1 400 ms |
| Streaming + chunking 20 tokens | 520 ms | 900 ms | 520 ms | 520 ms |
| Gain relatif | –45 % | –50 % | –31 % | –63 % |
Le gain est particulièrement marqué pour les réponses longues, car le TTFA en mode streamé est indépendant de la longueur de réponse — il dépend uniquement du TTFT + latence du premier chunk TTS, qui reste constante.
Impact sur les métriques business
Plusieurs déploiements d'agents vocaux IA en production documentent les effets mesurables du passage au streaming LLM : réduction du taux d'abandon de 12 à 22 %, augmentation du CSAT de 8 à 18 points, et diminution du taux de plaintes liées à des "pauses longues" de 40 à 60 %. Ces chiffres varient selon le secteur (les utilisateurs de services bancaires ont une tolérance de latence plus faible que les appelants d'un service après-vente) et le volume d'appels traités par jour.
Stack technique et implémentation du streaming LLM
Côté LLM : activer le streaming
Le streaming LLM s'active via le paramètre stream: true dans l'appel API pour OpenAI et la plupart des providers. La réponse arrive sous forme de Server-Sent Events (SSE), chaque événement contenant un delta de tokens. En Python avec le SDK OpenAI :
stream=Truedansclient.chat.completions.create()- Itération sur
chunk.choices[0].delta.contentpour accumuler les tokens - Détection de fin de génération via
finish_reason
Pour les modèles open source auto-hébergés, vLLM et TGI exposent des endpoints SSE compatibles OpenAI qui supportent le streaming natif. Les connexions WebSocket sont préférées pour les agents vocaux temps réel car elles permettent une communication bidirectionnelle (utile pour le barge-in).
Côté TTS : choisir un moteur adapté au streaming
Tous les moteurs TTS ne sont pas optimisés pour des inputs courts en streaming. Les critères à évaluer pour le chunking TTS :
- Latence d'initialisation : délai entre l'envoi du chunk texte et le début de la génération audio. Doit être inférieur à 150 ms.
- Support du contexte persistant : capacité à maintenir la prosodie inter-chunks (ElevenLabs Streaming, Cartesia, Play.ai supportent ce mode).
- API streaming native : certains TTS exposent un mode streaming qui génère l'audio par segments, réduisant davantage la latence.
Moteurs TTS recommandés pour le streaming en production
| Moteur TTS | Latence premier chunk | Streaming natif | Contexte inter-chunks |
|---|---|---|---|
| ElevenLabs Streaming | 80–150 ms | Oui | Oui (stateful) |
| Cartesia Sonic | 50–120 ms | Oui | Oui |
| OpenAI TTS (gpt-4o-audio) | 100–200 ms | Oui | Partiel |
| Azure Neural TTS | 120–250 ms | Oui (SSML streaming) | Non |
| Google Cloud TTS | 150–300 ms | Partiel | Non |
Le pipeline streaming de TALKR : architecture de production
TALKR implémente nativement un pipeline entièrement streamé dans tous ses agents vocaux déployés en production. L'architecture repose sur trois composants clés :
- STT streaming : transcription partielle en temps réel avec endpointing VAD adaptatif, envoi de la transcription finale dès la détection de fin de parole.
- Chunking adaptatif : détection des frontières syntaxiques (ponctuation, longueur maximale) pour former des chunks optimaux — entre 12 et 28 tokens selon la complexité du contenu.
- TTS streaming avec contexte persistant : les chunks successifs partagent un contexte prosodique commun pour assurer la continuité acoustique de la réponse.
Le barge-in est géré à tous les niveaux : interruption du flux audio, annulation des chunks en file d'attente, interruption de la génération LLM, et mise à jour du contexte conversationnel avec la partie effectivement entendue. Le TTFA médian des agents TALKR en production est inférieur à 700 ms sur le premier tour de parole, et inférieur à 350 ms sur les tours suivants — une fois le contexte de conversation établi.
Vos agents vocaux répondent en moins de 700 ms ?
TALKR déploie des agents vocaux IA avec pipeline streaming natif. Faites auditer la latence de votre stack actuelle.
Demander un audit latenceQuestions fréquentes — Streaming LLM et latence agent vocal IA
Qu'est-ce que le token streaming dans un LLM ?
Le token streaming est le mode de génération dans lequel le LLM envoie chaque token au client dès qu'il est produit, sans attendre la fin de la réponse complète. Le premier token arrive après le TTFT (Time to First Token), indépendamment de la longueur totale de la réponse. C'est ce qui permet de lancer la synthèse TTS avant que la réponse complète soit générée.
En quoi le streaming LLM réduit-il la latence d'un agent vocal IA ?
Sans streaming, le TTS attend la réponse LLM complète avant de synthétiser l'audio. Avec le streaming et le chunking TTS, le TTS commence à synthétiser les premiers tokens dès qu'un chunk de texte suffisant est disponible. L'appelant entend la réponse commencer avant que le LLM ait terminé de la générer. En pratique, le TTFA (Time to First Audio) est réduit de 40 à 60 %.
Comment fonctionne le chunking TTS en streaming ?
Le moteur de chunking accumule les tokens reçus en streaming du LLM jusqu'à détecter une frontière syntaxique (ponctuation) ou atteindre une taille maximale (15 à 30 tokens). Ce chunk est envoyé au TTS pour synthèse immédiate. L'audio du chunk est diffusé à l'appelant pendant que le LLM continue de générer les tokens suivants. Les chunks s'enchaînent de façon transparente.
Quels sont les risques du streaming LLM pour un agent vocal en production ?
Trois risques principaux : le chunking trop précoce dégrade la prosodie (audio haché) ; le barge-in devient plus complexe à gérer (annulation de chunks en file d'attente) ; les hallucinations dans les premiers tokens ne peuvent pas être interceptées après diffusion. Ces risques sont maîtrisables avec une architecture correctement conçue.
Qu'est-ce que le TTFT et le TTFA ?
Le TTFT (Time to First Token) est le délai entre l'envoi de la requête au LLM et la réception du premier token — métrique clé de la réactivité LLM. Le TTFA (Time to First Audio) est le délai entre la fin de l'énoncé de l'appelant et le premier son de la réponse de l'agent — la latence perçue par l'utilisateur. TTFA = TTFT + latence du premier chunk TTS. L'objectif est un TTFA inférieur à 800 ms.
Tous les LLMs supportent-ils le streaming ?
La quasi-totalité des LLMs accessibles via API supportent le streaming en 2026 : OpenAI GPT-4o, Claude, Gemini, Mistral, Llama via Groq ou Together AI, et les modèles open source déployés avec vLLM ou TGI. Le streaming s'active via le paramètre stream: true dans l'appel API.
Le streaming LLM est-il compatible avec le RAG ?
Oui. La phase de retrieval doit être complète avant de lancer la génération en streaming — on ne peut pas streamer pendant la recherche vectorielle. En pratique : (1) transcription STT, (2) retrieval RAG (50 à 150 ms), (3) construction du prompt, (4) lancement du streaming LLM, (5) chunking et synthèse TTS en parallèle. Le retrieval ajoute une latence initiale mais ne bloque pas le streaming une fois lancé.
Comment TALKR implémente-t-il le streaming LLM dans ses agents vocaux ?
TALKR intègre nativement le pipeline STT streaming → LLM streaming → chunking adaptatif → TTS streaming dans tous ses déploiements. Le barge-in est géré à tous les niveaux (interruption audio, annulation des chunks en queue, mise à jour du contexte tronqué). Le TTFA médian est inférieur à 700 ms sur le premier tour et inférieur à 350 ms sur les tours suivants.
Pour aller plus loin
- Speech-to-Speech IA : les modèles voix-à-voix vont-ils remplacer le pipeline STT/LLM/TTS ?
- Comment monitorer un agent vocal IA en production : hallucinations, latence et qualité des appels
- Optimiser les coûts d'un agent vocal IA en production : LLM, STT, TTS et téléphonie
- Barge-in, détection de silence et gestion du tour de parole dans un agent vocal IA