Conversation vocale temps réel
Pipeline optimisé : micro utilisateur → Scribe STT → Orion LLM streaming → TTS ultra-réaliste. Latence totale end-of-speech → first audio : ~0,6 seconde.
Architecture du pipeline
Le mode Call unifie STT, LLM et TTS en une seule route streaming (SSE). Le serveur bufferise par phrase et renvoie les chunks audio mp3 au fur et à mesure.
Browser (VAD détecte silence)
↓ POST multipart (audio blob)
/api/snippet/[shopId]/realtime-turn
↓
├─ 1. STT Scribe streaming (~150ms)
├─ 2. Gemma Analyser (routing) (~100ms en parallèle)
├─ 3. LLM streaming (Flash/Haiku) (first token ~180ms)
└─ 4. TTS streaming par phrase (first audio ~170ms)
(modèle ultra-rapide v2.5)
↓ SSE events
Browser Audio Queue (lecture séquentielle)Latence totale mesurée
Fin de parole utilisateur → premier audio Orion : ~0,6 s en moyenne. Les 4 étapes du pipeline s’exécutent en streaming parallèle, avec sentence buffering pour que Orion commence à parler dès la première phrase générée.Events SSE streamés
Le client écoute les events via un ReadableStream. Chaque event contient un type et des données spécifiques.
| Event | Payload | Description |
|---|---|---|
| transcript | { text: string } | Résultat du STT (ce que l'utilisateur a dit) |
| expression | { value: string } | Émotion détectée (happy | sad | surprised | neutral) |
| token | { text: string } | Token LLM (pour subtitle live) |
| audio | { chunk: string, format: "mp3" } | Chunk audio base64 (à jouer séquentiellement) |
| done | - | Fin du tour de parole |
| error | { message: string } | Erreur (STT, LLM ou TTS) |
Activer le mode Call
Depuis Paramètres → Mode d'affichage dans le dashboard :
Chat
Focus
Call
Combinaisons valides
{chat}, {focus}, {chat + call}, {focus + call}. Chat et Focus sont mutuellement exclusifs (radio), Call s'ajoute indépendamment.Voice Activity Detection (VAD)
Le client détecte automatiquement la fin de phrase (900 ms de silence) pour déclencher le tour de parole. Aucun bouton à presser.
// Paramètres VAD par défaut (snippet) const SPEAK_THRESHOLD = 35 // sur 255 (seuil d'activité) const SILENCE_MS = 900 // durée de silence avant STT const MIN_SPEECH_MS = 400 // durée min pour valider (anti-toux) // AudioContext analyser frequencyData → RMS → threshold
Choix de la voix
Chaque compte sélectionne une voix dans un catalogue de voix ultra-réalistes, H/F, en français. La voix se configure depuis Paramètres → Call → Voix et est sauvegardée dans shop.call_voice_id.
| Voix | Genre | Langue | Usage conseillé |
|---|---|---|---|
| Sarah | F | FR / EN | Accueil, e-commerce, SAV chaleureux |
| Lucie | F | FR | Services, conseil, prise de rendez-vous |
| Emilie | F | FR | Ton naturel, proximité client, retail |
| Augustin | H | FR | B2B, tech, voix posée professionnelle |
| Edouard | H | FR | Énergique, accrocheur, restauration |
| Joseph | H | FR | Profond, premium, luxe, spa |
Pas de clonage de voix
Orion ne propose pas de clonage de voix personnalisé. Nous fournissons uniquement une sélection de voix pré-validées, ultra-réalistes et sous licence. Cela garantit qualité constante, conformité RGPD/droits à l’image et latence optimale (modèles pré-compilés).Expressions faciales (blob 3D)
Le blob 3D affiché pendant le call réagit aux émotions pilotées par le LLM et aux fréquences audio en temps réel :
Listen
Ondulations sur médiums
Speak
Pulsation radiale + aigus
Think
Ondes circulaires douces
Idle
Respiration smooth
Quotas TTS & STT
Les quotas sont inclus dans les tiers Orion Voice (voir documentation Orion Voice). Ils se réinitialisent tous les 30 jours.
Quota épuisé
Si TTS ou STT épuisé → l'endpoint retourne HTTP 402. Le mode Call est désactivé jusqu'à la réinitialisation ou l'upgrade du forfait.