WebSocket
Créez des conversations vocales interactives en temps réel avec des agents IA
Cette documentation s’adresse aux développeurs intégrant directement l’API WebSocket d’ElevenLabs. Pour plus de simplicité, envisagez d’utiliser les SDK officiels fournis par ElevenLabs.
L’API WebSocket d’ElevenAgents permet de créer des conversations vocales interactives en temps réel avec des agents IA. En établissant une connexion WebSocket, vous pouvez envoyer des entrées audio et recevoir des réponses audio en temps réel, pour créer des expériences conversationnelles réalistes.
wss://api.elevenlabs.io/v1/convai/conversation?agent_id={agent_id}Authentification
Utiliser l’ID de l’agent
Pour les agents publics, vous pouvez utiliser directement agent_id dans l’URL WebSocket, sans authentification supplémentaire :
Utiliser une URL signée
Pour les agents privés ou les conversations nécessitant une autorisation, obtenez une URL signée depuis votre serveur, qui communique de manière sécurisée avec l’API ElevenLabs à l’aide de votre clé API.
Exemple avec cURL
Requête :
Réponse :
Événements WebSocket
Événements du client vers le serveur
Les événements suivants peuvent être envoyés du client vers le serveur :
Mises à jour contextuelles
Envoyez des informations contextuelles sans interrompre la conversation afin de mettre à jour son état. Vous pouvez ainsi fournir un contexte supplémentaire sans perturber le déroulement de la conversation en cours.
Cas d’utilisation :
- Mise à jour du statut ou des préférences de l’utilisateur
- Fourniture d’un contexte environnemental
- Ajout d’informations générales
- Suivi des interactions avec l’interface utilisateur
Points clés :
- N’interrompt pas le déroulement de la conversation en cours
- Les mises à jour sont intégrées sous forme d’appels d’outils dans l’historique de la conversation
- Aide à préserver le contexte sans rompre le dialogue naturel
Les mises à jour contextuelles sont traitées de manière asynchrone et ne nécessitent pas de réponse directe du serveur.
Exemple d’implémentation Next.js
Cet exemple montre comment implémenter un client d’agent conversationnel basé sur WebSocket dans Next.js à l’aide de l’API WebSocket d’ElevenLabs.
Bien que cet exemple utilise le package voice-stream pour gérer l’entrée du microphone, vous pouvez
implémenter votre propre solution pour capturer et encoder l’audio. L’objectif est ici de présenter
la connexion WebSocket et la gestion des événements avec l’API ElevenLabs.
Installer les dépendances requises
Commencez par installer les packages nécessaires :
Le package voice-stream gère l’accès au microphone et le streaming audio, en encodant automatiquement l’audio au format base64 requis par l’API ElevenLabs.
Cet exemple utilise Tailwind CSS pour la mise en forme. Pour ajouter Tailwind à votre projet Next.js :
Suivez ensuite le guide officiel de configuration de Tailwind CSS pour Next.js.
Vous pouvez également remplacer les attributs className par vos propres styles CSS.
Prochaines étapes
- Lecture audio : implémentez votre propre système de lecture audio à l’aide de Web Audio API ou d’une bibliothèque. Pensez à gérer la mise en file d’attente audio pour éviter les chevauchements, car le WebSocket envoie les événements audio par segments.
- Gestion des erreurs : ajoutez une logique de nouvelle tentative et des mécanismes de récupération après erreur.
- Retours de l’interface : ajoutez des indicateurs visuels d’activité vocale et de statut de connexion.
Gestion de la latence
Pour garantir des conversations fluides, mettez en œuvre les stratégies suivantes :
- Mise en mémoire tampon adaptative : ajustez la mise en mémoire tampon audio selon les conditions réseau.
- Tampon de gigue : implémentez un tampon de gigue afin de lisser les variations des temps d’arrivée des paquets.
- Surveillance ping-pong : utilisez les événements ping et pong pour mesurer le temps aller-retour et ajuster les paramètres en conséquence.
Bonnes pratiques de sécurité
- Renouvelez régulièrement les clés API et utilisez des variables d’environnement pour les stocker.
- Implémentez une limitation du débit pour prévenir les abus.
- Expliquez clairement votre intention lorsque vous demandez aux utilisateurs l’accès au microphone.
- Segmentation optimisée : ajustez la durée des segments audio pour équilibrer latence et efficacité.