← Retour
Module 05

Agents Vocaux

Le module central pour ton stage. Pipeline vocal, STT/TTS, Moshi/Kyutai, ecosysteme francais, architecture complete de l'agent Selectra.

01

Pourquoi les agents vocaux ?

Selectra recoit des milliers d'appels par jour. 200+ commerciaux passent les 2-3 premieres minutes de chaque appel a poser les memes questions : adresse, fournisseur actuel, numero PDL, consommation estimee. C'est repetitif, couteux, et les clients attendent parfois longtemps avant d'avoir quelqu'un.

L'agent vocal IA resout ca : il repond instantanement, 24/7, collecte les infos de qualification, et transfere au commercial humain avec un dossier pre-rempli. Le commercial gagne 2-3 minutes par appel et se concentre sur le conseil et la vente.

Concept cle

Le marche des agents vocaux en 2026

Les agents vocaux IA sont un des secteurs les plus dynamiques de l'IA. Selectra utilise deja Gladia(startup francaise) pour analyser les appels a posteriori avec du STT + LLM. L'etape suivante — et c'est probablement la ou tu interviens — c'est le temps reel.

02

Le pipeline classique : STT → LLM → TTS

L'architecture la plus repandue aujourd'hui pour un agent vocal suit ce pipeline en cascade :

Pipeline vocal classique (cascade)


  Client parle (audio)
        |
  ┌─────────────────┐
  │   STT           │  Speech-to-Text
  │   (Deepgram,    │  Audio → Texte
  │    Gladia,      │  ~100-300ms
  │    Whisper)      │
  └────────┬────────┘
           |
  ┌────────▼────────┐
  │   LLM           │  Raisonnement
  │   (Claude, GPT) │  Texte → Texte
  │                  │  ~200-1000ms
  │   + Tool calling │
  └────────┬────────┘
           |
  ┌────────▼────────┐
  │   TTS           │  Text-to-Speech
  │   (ElevenLabs,  │  Texte → Audio
  │    Voxtral,     │  ~100-300ms
  │    OpenAI TTS)  │
  └────────┬────────┘
           |
  Agent parle (audio)

  LATENCE TOTALE : 400ms - 1.6s
  (acceptable si < 1s, perceptible si > 1.5s)
python — STT avec Whisper (OpenAI) en 5 lignes
import whisper  # pip install openai-whisper

model = whisper.load_model("base")  # small, medium, large pour + de precision
result = model.transcribe("appel_client.wav", language="fr")
print(result["text"])
# → "Bonjour, je demenage a Lyon et j'ai besoin d'ouvrir un contrat d'electricite"

# Avec timestamps par segment
for segment in result["segments"]:
    print(f"[{segment['start']:.1f}s → {segment['end']:.1f}s] {segment['text']}")
python — TTS avec Coqui (open-source) ou API
# Option 1 : TTS open-source avec Coqui (pip install TTS)
from TTS.api import TTS
tts = TTS(model_name="tts_models/fr/css10/vits")
tts.tts_to_file("Bonjour, bienvenue chez Selectra.", file_path="reponse.wav")

# Option 2 : API ElevenLabs (pip install elevenlabs)
from elevenlabs import generate, save
audio = generate(
    text="Tres bien, quelle est l'adresse de votre nouveau logement ?",
    voice="Rachel",       # voix pre-faite ou clonee
    model="eleven_multilingual_v2"
)
save(audio, "reponse.mp3")
ComposantFournisseurLatenceForces
STTDeepgram~100ms (streaming)Ultra-rapide, streaming mot par mot
STTGladia (Solaria)<103msExcellent francais, utilise par Selectra
STTWhisper (OpenAI)~300-500msTres precis, mais plus lent (pas de streaming)
STTMistral Voxtral Transcribe<200msFrancais natif, open weights
LLMClaude Sonnet~300-500ms (streaming)Excellent suivi d'instructions
LLMGPT-4o mini~100-200msTres rapide, bon pour le routage
TTSElevenLabs~200msVoix tres naturelles, francais excellent
TTSMistral Voxtral TTS90ms first audioOpen weights, voice cloning 3s
TTSOpenAI TTS~200msBon rapport qualite/prix

Attention

La latence est TOUT en vocal.En conversation humaine, un silence de plus de ~800ms est percu comme anormal. Pour que l'agent semble naturel, il faut une latence totale <1s du moment ou le client finit de parler au moment ou l'agent commence a repondre. Le streaming (TTS commence avant que le LLM ait fini) est essentiel.

03

La revolution : Speech-to-Speech (Kyutai / Moshi)

Et si on supprimait completement les etapes intermediaires ? C'est exactement ce qu'a fait Kyutai, un labo de recherche francais finance par Xavier Niel (Free) et Eric Schmidt.

Concept cle

Moshi — le premier modele speech-to-speech open-source

elimine la cascade STT → LLM → TTS en traitant l'audio directement comme des tokens dans un seul modele neural. Resultat : ~200ms de latence et full-duplex (il peut ecouter et parler en meme temps).

Pipeline classique vs Speech-to-Speech


  CLASSIQUE (cascade)              SPEECH-TO-SPEECH (Moshi)
  ───────────────────              ──────────────────────────

  Audio ──▶ STT ──▶ LLM ──▶ TTS   Audio ──▶ ┌────────────┐ ──▶ Audio
           100ms   500ms   200ms              │   MOSHI    │
           ─────────────────────              │ (un seul   │
           Total: ~800ms+                     │  modele)   │
                                              └────────────┘
           Demi-duplex:                       Total: ~200ms
           L'un parle, l'autre
           ecoute. Pas les deux.              Full-duplex:
                                              Ecoute ET parle en
                                              meme temps. Peut
                                              s'interrompre.

Comment ca marche techniquement ?

1

Mimi (codec neural)

L'audio est compresse en tokens semantiques a 12.5 Hz grace au codec Mimi. Ces tokens capturent a la fois le contenu (les mots) et le style (l'intonation, l'emotion). C'est comme un tokenizer, mais pour l'audio.

2

Dual-stream Transformer (7B params)

Un seul Transformer traite simultanement deux flux : la voix de l'utilisateur ET la voix de Moshi. Ca permet le full-duplex — Moshi peut commencer a repondre avant que tu aies fini de parler.

3

Inner Monologue

Moshi genere du texte en interne avant de generer l'audio. Ca ameliore la qualite linguistique sans ajouter de latence perceptible — le texte est genere "dans la tete" du modele, pas en sortie.

python — Moshi (Kyutai) en local
# pip install moshi  (necessite un GPU avec >=16GB VRAM)
from moshi.client import Client

# Se connecter au serveur Moshi local
client = Client("localhost:8998")

# Moshi fonctionne en streaming bidirectionnel :
# tu envoies de l'audio, il repond en audio, en temps reel
import sounddevice as sd
import numpy as np

def callback(indata, outdata, frames, time, status):
    # Envoie l'audio du micro → recoit l'audio de Moshi
    response = client.send_audio(indata)
    outdata[:] = response  # joue la reponse dans les speakers

# Stream full-duplex : ecoute ET parle en meme temps
with sd.Stream(samplerate=24000, channels=1, callback=callback):
    print("Parle a Moshi... (Ctrl+C pour arreter)")
    sd.sleep(60000)  # 60 secondes de conversation
Pipeline classiqueMoshi (S2S)Gradium (commercial)
Latence400ms - 1.6s~200msSub-seconde
Full-duplexNonOuiOui
InterruptionsComplexe (VAD)NatifNatif
Qualite voixDepends du TTSCorrecte, en progresEn cours d'amelioration
Tool callingOui (via le LLM)LimiteEn developpement
Open-sourceDepends des composantsOui (CC BY 4.0)Non (API)
Production-readyOuiRechercheBientot

Attention

Pour ton stage Selectra :le pipeline classique est le choix pragmatique. Moshi est de la recherche — extraordinaire pour comprendre et en parler en entretien, mais pas encore production-ready pour du tool calling en francais. Utilise le pipeline cascade (Deepgram/Gladia + Claude + ElevenLabs/Voxtral) pour ta demo, et mentionne Moshi/Gradium comme "le futur du domaine".

Concept cle

Gradium — le spin-off commercial

Gradium(Paris, $70M de seed en dec 2025) est le spin-off commercial de Kyutai. Meme equipe (Neil Zeghidour, Alexandre Defossez), meme techno, mais packagée en API B2B. Ils gèrent déjà des centaines de milliers d'appels telephoniques. C'est probablement le futur fournisseur pour des boites comme Selectra.

04

VAD et turn-taking — qui parle quand ?

Un des plus gros defis des agents vocaux : savoir quand le client a fini de parler pour commencer a repondre. C'est le et le .

Concept cle

Le dilemme du VAD

Si l'agent repond trop vite → il coupe la parole au client (irritant). S'il attend trop longtemps → silence genant. Le bon reglage depend du contexte : un client qui hesite sur un numero PDL a besoin de plus de temps qu'un client qui dit "oui".

TechniquePrincipeAvantageInconvenient
Silence thresholdAttendre N ms de silence avant de repondreSimple a implementerN fixe = trop court ou trop long selon le contexte
Endpointing avanceModele ML qui detecte la fin de phrase (prosodie, syntaxe)Plus naturel, s'adaptePlus complexe, necessite un bon modele
Semantic turn-taking (Gradium)Le modele comprend le CONTENU pour detecter la fin de penseeLe plus naturel, gere les hesitationsEtat de l'art, pas encore standard

En pratique pour ton agent Selectra :

config VAD — LiveKit
// Configuration VAD typique pour un agent de qualification
const vadConfig = {
  // Silence minimum avant de considerer que le client a fini
  silenceThreshold: 700,    // ms — augmenter a 1200 quand on attend un numero PDL

  // Seuil d'energie pour detecter la parole
  energyThreshold: 0.02,

  // Gestion des interruptions (barge-in)
  allowBargeIn: true,       // Le client peut couper l'agent
  bargeInThreshold: 300,    // ms de parole client pour interrompre

  // Padding
  speechPadding: 200,       // ms de marge apres la detection de silence
};

Attention

Le barge-in est essentiel :si un client dit "Non non, c'est pas ca" pendant que l'agent parle, l'agent doit s'arreter immediatement. Sans barge-in, le client se retrouve a ecouter une reponse fausse jusqu'au bout — c'est la pire experience utilisateur.

05

Architectures et frameworks

Tu n'as pas besoin de tout coder from scratch. Plusieurs frameworks gerent l'orchestration vocale pour toi.

FrameworkTypeAvantageInconvenientPrix
VapiPlatform (managed)Le plus simple — config par JSON, telephonie integreeMoins de controle, vendor lock-in~5c/min
LiveKit AgentsOpen-sourceFull controle, self-hosted possible, communaute activePlus de code a ecrireGratuit (self-hosted) ou hosted
Retell AIPlatformBonne qualite francais, API simpleMoins flexible que LiveKit~7c/min
Bland.aiPlatformOptimise pour les appels sortants (outbound)Moins bon en inbound~9c/min
Custom (WebSocket)DIYControle total, pas de dependanceBeaucoup de travail, gestion de la telephonieCout des APIs STT/LLM/TTS

Concept cle

Recommandation pour ton stage

Pour la demo : Vapi (le plus rapide a mettre en place, telephonie integree, bon francais). Pour un vrai projet technique : LiveKit Agents (open-source, plus de controle, impressionnant en entretien technique).

06

L'ecosysteme francais de la voix IA

La France est un des leaders mondiaux en voice AI. Connaitre cet ecosysteme est un atout enorme pour ton stage.

BoiteProduitApprocheLien avec Selectra
KyutaiMoshi (speech-to-speech)Modele end-to-end, full-duplex, open-sourceFutur de la techno, pas encore production
GradiumAudio Language Models APISpin-off commercial de Kyutai ($70M)Pourrait etre le fournisseur de Selectra demain
GladiaSolaria (STT)STT ultra-rapide (<103ms), 100 languesDEJA UTILISE par Selectra pour l'analyse d'appels
MistralVoxtral (STT + TTS)Open weights, voice cloning 3s, 90ms latenceAlternative open-source pour STT et TTS

Concept cle

Ce que tu dois savoir dire en entretien

"Selectra utilise deja Gladia pour l'analyse post-appel. L'etape suivante, c'est le temps reel. Le pipeline classique (Gladia STT + Claude + Voxtral TTS) permet de deployer un agent vocal en quelques semaines. A terme, les modeles speech-to-speech comme Moshi de Kyutai — un labo francais — vont revolutionner le domaine en supprimant la latence de cascade. Le spin-off commercial Gradium gere deja des centaines de milliers d'appels."

07

Architecture complete : l'agent vocal Selectra

Architecture de production


  ┌─────────────────────────────────────────────────────┐
  │                TELEPHONIE                           │
  │  Numero entrant → SIP trunk → WebSocket             │
  │  (Twilio, Vonage, ou Vapi integre)                  │
  └──────────────────────┬──────────────────────────────┘
                         │ audio stream
  ┌──────────────────────▼──────────────────────────────┐
  │              ORCHESTRATEUR VOCAL                     │
  │  (LiveKit Agents ou Vapi)                           │
  │                                                      │
  │  ┌──────────┐  ┌───────────┐  ┌──────────────────┐ │
  │  │   VAD    │  │   STT     │  │    TTS           │ │
  │  │ (silence │  │ (Gladia   │  │ (Voxtral TTS     │ │
  │  │  detect) │  │  Solaria) │  │  ou ElevenLabs)  │ │
  │  └──────────┘  └─────┬─────┘  └────────▲─────────┘ │
  │                      │ texte            │ texte     │
  │                ┌─────▼─────────────────┐│           │
  │                │      LLM + AGENT      ││           │
  │                │  (Claude via AI SDK)   ├┘           │
  │                │                        │            │
  │                │  Tools:                │            │
  │                │  - chercherPDL()       │            │
  │                │  - comparerOffres()    │            │
  │                │  - transfererHumain()  │            │
  │                │                        │            │
  │                │  RAG:                  │            │
  │                │  - FAQ Selectra        │            │
  │                │  - Tarifs actuels      │            │
  │                └────────────────────────┘            │
  └─────────────────────────────────────────────────────┘
                         │
  ┌──────────────────────▼──────────────────────────────┐
  │              BACKEND (Next.js)                       │
  │  - API routes pour les tools                        │
  │  - Base de donnees (fiches client)                  │
  │  - Dashboard temps reel (WebSocket)                 │
  │  - CRM integration                                 │
  └─────────────────────────────────────────────────────┘

Ce schema, c'est exactement ce qu'on a construit module par module :

ModuleBriqueRole dans l'agent
Module 1Fondations LLMComprendre comment le cerveau de l'agent fonctionne
Module 2Prompt EngineeringEcrire le system prompt de qualification
Module 3RAGDonner les tarifs actuels et la FAQ a l'agent
Module 4Tool Calling & AgentsChercher le PDL, comparer les offres, transferer
Module 5Pipeline vocalSTT + TTS + orchestration + telephonie
08

Quiz final

Quiz

Quelle est la latence acceptable pour un agent vocal en conversation ?

Quiz

Quelle est la difference fondamentale entre Moshi (Kyutai) et le pipeline classique ?

Quiz

Pour ta demo de stage Selectra, quelle stack recommandee ?

Module 05 termine

Tu connais maintenant tout le pipeline vocal : STT, LLM, TTS, orchestration, VAD, turn-taking. Tu connais l'ecosysteme francais (Kyutai, Gradium, Gladia, Mistral Voxtral) et tu as l'architecture complete de l'agent vocal Selectra. Tu es pret pour ton stage.