Voix en direct
L'écran Voix en direct permet d'ouvrir une session vocale temps réel, de parler dans votre micro et de suivre la
transcription et la consommation de la session. Chemin du portail : /multimodal/voice. Les développeurs l'utilisent
pour tester le pipeline vocal avant qu'un agent ne s'en serve.
Ce que montre l'écran
Le titre de la page est Testeur voix en direct. La section Session temps réel contient :
- Pipeline : Écho (boucle locale) (
echo, par défaut) ou Transcription vocale (stt) ; - Voix :
alloy(par défaut),verse,aria,sage; - le bouton Démarrer au repos ; une fois la session ouverte, Couper le micro (ou Réactiver le micro) et Terminer ;
- un badge d'état : Inactif, Connexion ou Connecté ;
- l'identifiant de session après le démarrage, et la dernière erreur s'il y en a une.
La section Transcription affiche les lignes de Vous et de Agent au fil de l'eau (« La transcription s'affiche ici pendant que vous parlez. » avant la première ligne), puis la consommation de la session (unités et coût) quand le serveur l'envoie.
Le navigateur reçoit un jeton LiveKit, publie votre micro (annulation d'écho et réduction de bruit actives) et joue l'audio de l'agent. Un WebSocket de contrôle transporte les événements de transcription et de consommation ; s'il se ferme de façon inattendue, le portail se reconnecte un nombre limité de fois avec un nouveau jeton à usage unique.
Actions
| Bouton ou action | Ce qu'il fait | Appel API | Rôles |
|---|---|---|---|
| Démarrer | Crée la session avec le pipeline et la voix, rejoint la salle LiveKit, ouvre le canal de contrôle | POST /v1/realtime/sessions | tenant_admin, developer, agent |
| Reconnexion automatique | Demande un nouveau jeton WebSocket pour la session ouverte | POST /v1/realtime/sessions/{session_id}/token | tenant_admin, developer, agent |
| Couper le micro / Réactiver le micro | Coupe ou réactive le micro dans la salle (sans appel API) | aucun | le titulaire de la session |
| Terminer | Ferme le canal et la salle, puis termine la session et enregistre sa consommation | POST /v1/realtime/sessions/{session_id}/end | tenant_admin, developer, agent |
Rôles
Le portail affiche tous les boutons. Dans services/control-plane/src/eai/domains/realtime/__init__.py créer une
session, renouveler son jeton et la terminer exigent tenant_admin, developer ou agent, et la création passe par
la décision de politique realtime.session.create. Un utilisateur n'ouvre une session qu'en son propre nom.
Tâches courantes
Vérifier le chemin audio avec le pipeline écho
-
Démarrer une session. Le pipeline écho rejoue ce que vous dites, sans aucun modèle. Gardez Pipeline sur Écho (boucle locale), cliquez sur Démarrer et autorisez le micro dans le navigateur.
Résultat attendu : le badge passe à Connecté et l'identifiant de session s'affiche.
En cas d'échec : une erreur sous les boutons donne le code ; un accès au micro refusé arrête le démarrage.
-
La terminer. Cliquez sur Terminer.
Résultat attendu : le badge revient à Inactif et la consommation de la session s'affiche sous la transcription.
En cas d'échec : le serveur termine de toute façon une session déjà close.
Tester la transcription vocale
-
Enregistrer le consentement. Hors des environnements dev et test, la transcription exige un consentement actif du participant. Démarrez une session, copiez son identifiant et enregistrez le consentement dans Consentements vocaux.
Résultat attendu : un consentement avec Transcription autorisée cochée.
En cas d'échec : voir la page des consentements vocaux.
-
Parler. Choisissez Pipeline Transcription vocale, cliquez sur Démarrer et parlez.
Résultat attendu : des lignes de Vous apparaissent dans Transcription.
En cas d'échec :
consent_requiredsignifie qu'aucun consentement actif ne couvre la transcription.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
forbidden (403) sur Démarrer | Vous n'êtes pas tenant_admin, developer ou agent | Demandez le rôle developer |
invalid_request (400) avec pipeline | Pipeline inconnu | Utilisez echo ou stt |
| Erreur 503 sur Démarrer hors dev et test | Les identifiants LiveKit sont absents ou faibles | Configurez des identifiants LiveKit robustes sur le Control Plane |
livekit_unavailable (502) | Le serveur LiveKit est injoignable ou a refusé l'appel | Vérifiez le service LiveKit et les règles de sortie réseau |
| « Le canal d'événements temps réel a échoué » | Le WebSocket de contrôle n'a pas pu s'ouvrir | Vérifiez que la route WebSocket du Control Plane est joignable |
| « Le canal d'événements temps réel s'est fermé et n'a pas pu se reconnecter » | Les tentatives de reconnexion sont épuisées | Cliquez sur Terminer, puis de nouveau sur Démarrer |
session_ended (409) à la reconnexion | La session est terminée | Démarrez une nouvelle session |
consent_required (403) | Aucun consentement actif pour la transcription ou l'enregistrement | Enregistrez-le dans Consentements vocaux |
stt_failed (502) | L'adaptateur de transcription a échoué sur un segment audio | Réessayez ; vérifiez le modèle de transcription |