Démarrage rapide de Speech Engine
Ajoutez la voix à votre agent conversationnel avec le SDK ElevenLabs.
Ce guide vous accompagne dans la conception d’un agent vocal avec Speech Engine. Vous configurez un serveur qui connecte votre LLM à ElevenLabs, puis un client navigateur afin que les utilisateurs puissent avoir des conversations vocales avec votre agent.
Utilisez la compétence ElevenLabs Speech Engine pour ajouter la voix à votre agent conversationnel :
Fonctionnement de Speech Engine
Speech Engine connecte votre LLM à ElevenLabs afin que les utilisateurs puissent parler à votre agent et l’entendre répondre. ElevenLabs gère la transcription de la parole et la synthèse vocale ; votre serveur fournit la logique du LLM.
Chaque connexion WebSocket représente une conversation. Lorsque l’utilisateur parle, ElevenLabs transcrit l’audio et envoie la transcription à votre serveur. Votre serveur la transmet à votre LLM, puis renvoie la réponse en streaming. ElevenLabs convertit le texte en parole et le lit dans le navigateur. Le SDK gère les connexions, les tours de parole et la détection des interruptions.
Prérequis
Ce tutoriel utilise l’API d’OpenAI pour le LLM. Vous avez besoin d’une clé API OpenAI définie dans la variable d’environnement OPENAI_API_KEY.
Configuration du serveur
Créer une clé API
Créez une clé API dans le Dashboard ici, que vous utiliserez pour accéder à l’API en toute sécurité.
Stockez la clé comme secret géré et transmettez-la aux SDK, soit sous forme de variable d’environnement via un fichier .env, soit directement dans la configuration de votre application, selon vos préférences.
Exposer le serveur
Speech Engine nécessite une URL accessible publiquement. Utilisez ngrok pour exposer votre serveur local. Le serveur n’est pas encore conçu, mais ngrok doit d’abord être exécuté pour que vous disposiez de l’URL nécessaire à l’étape suivante.
Copiez l’URL de transfert (par exemple, https://abc123.ngrok.io).
Créer une instance Speech Engine
Utilisez le SDK pour créer une instance Speech Engine, en transmettant votre URL ngrok avec le chemin /ws ajouté comme URL WebSocket.
Exécutez ce script et copiez l’ID Speech Engine (par exemple, seng_8k3m9xr4hjnfg983brhmhkd98n6) pour l’étape suivante.
Créer le serveur
Créez un fichier nommé server.py ou server.mts avec le contenu suivant. Il configure un serveur, associe Speech Engine au chemin /ws et utilise OpenAI pour générer des réponses.
Le rappel onTranscript / on_transcript reçoit l’historique complet de la conversation et la session actuelle. Le SDK TypeScript fournit également un AbortSignal qui se déclenche si l’utilisateur interrompt une réponse. Transmettre signal à l’appel OpenAI annule automatiquement la requête LLM en cas d’interruption.
sendResponse() / send_response() accepte une chaîne, un itérable asynchrone ou un flux provenant d’OpenAI, Anthropic ou Google Gemini. Le SDK extrait automatiquement le contenu textuel.
Dans l’exemple ci-dessus, la transcription complète de l’utilisateur est transmise au LLM. Dans un environnement de production, vous devez ajouter des garde-fous pour empêcher toute tentative d’injection ou de manipulation de prompt.
Configuration du client
Créer un endpoint de jeton
Ajoutez un endpoint côté serveur qui génère un jeton de conversation. Cela empêche votre clé API d’être exposée dans le navigateur et utilise WebRTC pour une qualité audio optimale.
Concevoir l’interface de conversation
Récupérez le jeton de conversation depuis votre serveur et utilisez-le pour démarrer une session.
React
JavaScript
Essayer
Assurez-vous que trois processus sont en cours d’exécution :
- ngrok : transfert vers le port 3001
- Votre serveur Speech Engine :
python server.pyounpx tsx server.mts - Le serveur de jetons :
npx tsx token-server.mtsoupython token_server.py
Ouvrez votre application cliente dans le navigateur et cliquez sur Démarrer la conversation. Autorisez l’accès au microphone lorsque vous y êtes invité, puis parlez. Vous devriez entendre l’agent répondre par vos haut-parleurs.
Si debug: true est activé sur le serveur, les transcriptions entrantes et les réponses sortantes s’afficheront dans la console.
Événements de session
Configurer le premier message de l’agent
Par défaut, l’agent attend que l’utilisateur parle en premier. Pour que l’agent salue l’utilisateur au début de la conversation, définissez un premier message dans l’option overrides du client lors du démarrage de la session.
Le premier message est prononcé par l’agent dès que la connexion est établie. Il ne déclenche pas le rappel onTranscript sur votre serveur : il est entièrement géré par ElevenLabs.
Configurer la durée maximale de la conversation
Par défaut, une conversation se termine après 600 secondes (10 minutes). Speech Engine prend en charge les conversations jusqu’à 7 200 secondes (2 heures). Pour autoriser des conversations plus longues, mettez à jour la ressource Speech Engine avec un max_duration_seconds plus élevé :
Vous pouvez également définir ce paramètre dans le Dashboard : ouvrez votre Speech Engine, accédez à l’onglet Avancé, puis définissez Durée maximale de la conversation dans Comportement conversationnel.