Démarrage rapide de Speech Engine
Ajoutez la voix à votre agent conversationnel avec le SDK ElevenLabs.
Ce guide vous accompagne dans la création 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 skill 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 entendre ses réponses. ElevenLabs gère la transcription 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 diffuse la réponse en continu. 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 devez définir une clé API OpenAI 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 créé, mais ngrok doit d’abord être exécuté afin que vous disposiez de l’URL pour 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 indiquant 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 les 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 la réponse en cours. Transmettre signal à l’appel OpenAI annule automatiquement la requête du LLM en cas d’interruption.
sendResponse() / send_response() accepte une chaîne de caractères, 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 prévenir 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. Votre clé API reste ainsi hors du navigateur et WebRTC garantit la meilleure qualité audio.
Créer l'interface de conversation
Récupérez le jeton de conversation depuis votre serveur et utilisez-le pour démarrer une session.
React
JavaScript
Tester
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 cela vous est demandé, puis parlez. Vous devriez entendre la réponse de l’agent via vos haut-parleurs.
Si debug: true est activé sur le serveur, les transcriptions entrantes et les réponses sortantes s’affichent 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 au 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 conversation
Par défaut, une conversation se termine après 600 secondes (10 minutes). Speech Engine prend en charge des conversations allant jusqu’à 2 400 secondes (40 minutes). Pour autoriser des conversations plus longues, mettez à jour la ressource Speech Engine avec une valeur max_duration_seconds plus élevée :
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 conversation dans Comportement conversationnel.
Les conversations de plus de 40 minutes ne sont pas prises en charge et peuvent être interrompues, même si
max_duration_seconds est défini sur une valeur plus élevée. Si vous avez besoin de conversations plus longues, contactez notre
équipe.