WebSocket
Maak realtime, interactieve spraakgesprekken met AI-agents
Deze documentatie is bedoeld voor ontwikkelaars die rechtstreeks integreren met de ElevenLabs WebSocket API. Voor meer gemak kun je overwegen de officiële SDK’s van ElevenLabs te gebruiken.
Met de ElevenAgents WebSocket API kun je realtime, interactieve spraakgesprekken met AI-agents voeren. Door een WebSocket-verbinding tot stand te brengen, kun je audio-invoer versturen en realtime audioreacties ontvangen, waarmee je levensechte gesprekservaringen creëert.
wss://api.elevenlabs.io/v1/convai/conversation?agent_id={agent_id}Authenticatie
Agent ID gebruiken
Voor openbare agents kun je de agent_id rechtstreeks in de WebSocket-URL gebruiken, zonder aanvullende authenticatie:
Een ondertekende URL gebruiken
Voor privéagents of gesprekken waarvoor autorisatie nodig is, haal je een ondertekende URL op vanaf je server. Die communiceert veilig met de ElevenLabs API via je API-sleutel.
Voorbeeld met cURL
Request:
Response:
WebSocket-events
Events van client naar server
De volgende events kunnen van de client naar de server worden verstuurd:
Contextuele updates
Stuur contextuele informatie zonder onderbreking om de gespreksstatus bij te werken. Hiermee kun je aanvullende context geven zonder de lopende gespreksstroom te verstoren.
Gebruiksscenario’s:
- Gebruikersstatus of -voorkeuren bijwerken
- Omgevingscontext geven
- Achtergrondinformatie toevoegen
- Interacties met de gebruikersinterface bijhouden
Belangrijke punten:
- Onderbreekt de huidige gespreksstroom niet
- Updates worden als tool calls opgenomen in de gespreksgeschiedenis
- Helpt context te behouden zonder de natuurlijke dialoog te onderbreken
Contextuele updates worden asynchroon verwerkt en vereisen geen directe reactie van de server.
Voorbeeldimplementatie in Next.js
Dit voorbeeld laat zien hoe je een client voor een op WebSocket gebaseerde gespreksagent implementeert in Next.js met de ElevenLabs WebSocket API.
Hoewel dit voorbeeld het pakket voice-stream gebruikt voor het verwerken van microfooninvoer, kun je
je eigen oplossing implementeren voor het opnemen en encoderen van audio. De focus ligt hier op het demonstreren
van de WebSocket-verbinding en eventafhandeling met de ElevenLabs API.
Vereiste afhankelijkheden installeren
Installeer eerst de benodigde pakketten:
Het pakket voice-stream regelt microfoontoegang en audiostreaming, en encodeert de audio automatisch in base64-indeling zoals vereist door de ElevenLabs API.
Dit voorbeeld gebruikt Tailwind CSS voor de styling. Voeg Tailwind als volgt toe aan je Next.js-project:
Volg daarna de officiële installatiehandleiding voor Tailwind CSS in Next.js.
Je kunt de className-attributen ook vervangen door je eigen CSS-stijlen.
Volgende stappen
- Audio afspelen: Implementeer je eigen systeem voor het afspelen van audio met Web Audio API of een library. Zorg dat je audio in een wachtrij verwerkt om overlap te voorkomen, omdat de WebSocket audio-events in chunks verstuurt.
- Foutafhandeling: Voeg logica voor opnieuw proberen en foutopstelmechanismen toe
- UI-feedback: Voeg visuele indicatoren toe voor stemactiviteit en verbindingsstatus
Latentiebeheer
Implementeer deze strategieën om vloeiende gesprekken te garanderen:
- Adaptieve buffering: Pas audiobuffering aan op basis van netwerkomstandigheden.
- Jitterbuffer: Implementeer een jitterbuffer om variaties in aankomsttijden van pakketten af te vlakken.
- Ping-pongmonitoring: Gebruik ping- en pong-events om de round-trip time te meten en pas dienovereenkomstig aan.
Best practices voor beveiliging
- Roteer API-sleutels regelmatig en gebruik omgevingsvariabelen om ze op te slaan.
- Implementeer rate limiting om misbruik te voorkomen.
- Leg duidelijk uit waarom je gebruikers om toegang tot de microfoon vraagt.
- Geoptimaliseerde chunking: Pas de duur van audiochunks aan om latentie en efficiëntie in balans te brengen.