Snelstartgids voor Speech Engine
In deze handleiding bouw je een agent met spraakondersteuning met Speech Engine. Je stelt een server in die je LLM met ElevenLabs verbindt en koppelt vervolgens een browserclient, zodat gebruikers spraakgesprekken met je agent kunnen voeren.
Gebruik de ElevenLabs Speech Engine-skill om spraak toe te voegen aan je chatagent:
Hoe Speech Engine werkt
Speech Engine verbindt je LLM met ElevenLabs, zodat gebruikers met je agent kunnen praten en het antwoord kunnen horen. ElevenLabs verwerkt spraak-naar-tekst en tekst-naar-spraak; je server levert de LLM-logica.
Elke WebSocket-verbinding vertegenwoordigt één conversatie. Wanneer de gebruiker spreekt, transcribeert ElevenLabs de audio en stuurt het transcript naar je server. Je server geeft dit door aan je LLM en streamt vervolgens het antwoord terug. ElevenLabs zet de tekst om in spraak en speelt die af in de browser. De SDK verzorgt verbindingsbeheer, beurtwisseling en detectie van onderbrekingen.
Vereisten
Deze tutorial gebruikt de API van OpenAI voor de LLM. Je hebt een OpenAI API-sleutel nodig die is ingesteld in de omgevingsvariabele OPENAI_API_KEY.
Server instellen
Een API-sleutel maken
Maak hier een API-sleutel in het dashboard, die je gebruikt voor veilige toegang tot de API.
Sla de sleutel op als beheerd geheim en geef deze aan de SDK’s door als omgevingsvariabele via een .env-bestand, of rechtstreeks in de configuratie van je app, afhankelijk van je voorkeur.
De server beschikbaar maken
Speech Engine heeft een openbaar bereikbare URL nodig. Gebruik ngrok om je lokale server beschikbaar te maken. De server is nog niet gebouwd, maar ngrok moet eerst draaien zodat je de URL voor de volgende stap hebt.
Kopieer de doorstuur-URL (bijv. https://abc123.ngrok.io).
Een Speech Engine-instance maken
Gebruik de SDK om een Speech Engine-instance te maken en geef je ngrok-URL met het toegevoegde pad /ws door als WebSocket-URL.
Voer dit script uit en kopieer de Speech Engine-ID (bijv. seng_8k3m9xr4hjnfg983brhmhkd98n6) voor de volgende stap.
De server maken
Maak een bestand met de naam server.py of server.mts met de volgende inhoud. Hiermee stel je een server in, koppel je Speech Engine aan het pad /ws en gebruik je OpenAI om antwoorden te genereren.
De callback onTranscript / on_transcript ontvangt de volledige conversatiegeschiedenis en de huidige sessie. De TypeScript SDK biedt ook een AbortSignal dat wordt geactiveerd als de gebruiker midden in een antwoord onderbreekt. Door signal door te geven aan de OpenAI-aanroep, wordt de LLM-request bij onderbreking automatisch geannuleerd.
sendResponse() / send_response() accepteert een string, een async iterable of een stream van OpenAI, Anthropic of Google Gemini. De SDK haalt de tekstcontent automatisch op.
In het bovenstaande voorbeeld wordt het volledige transcript van de gebruiker aan de LLM doorgegeven. In een productieomgeving moet je guardrails toevoegen om promptinjectie of manipulatiepogingen te voorkomen.
Client instellen
Een tokenendpoint maken
Voeg een endpoint aan de serverkant toe dat een conversatietoken genereert. Zo blijft je API-sleutel uit de browser en gebruik je WebRTC voor de beste audiokwaliteit.
De conversatie-UI bouwen
Haal het conversatietoken op van je server en gebruik het om een sessie te starten.
React
JavaScript
Probeer het
Zorg dat er drie processen draaien:
- ngrok - stuurt door naar poort 3001
- Je Speech Engine-server -
python server.pyofnpx tsx server.mts - De tokenserver -
npx tsx token-server.mtsofpython token_server.py
Open je clientapplicatie in de browser en klik op Gesprek starten. Geef toegang tot de microfoon wanneer daarom wordt gevraagd en begin vervolgens te praten. Je hoort de agent via je speakers antwoorden.
Als je debug: true op de server hebt ingeschakeld, zie je inkomende transcripties en uitgaande antwoorden in de console.
Sessie-events
Het eerste agentbericht configureren
Standaard wacht de agent tot de gebruiker als eerste spreekt. Als je wilt dat de agent de gebruiker begroet wanneer de conversatie begint, stel je bij het starten van de sessie een eerste bericht in via de optie overrides op de client.
Het eerste bericht wordt door de agent uitgesproken zodra de verbinding tot stand is gebracht. Het activeert niet de callback onTranscript op je server — het wordt volledig aan de kant van ElevenLabs verwerkt.