Speech Engine-snabbstart
Lägg till röst i din chattagent med ElevenLabs SDK.
Den här guiden visar hur du bygger en röststyrd agent med Speech Engine. Du konfigurerar en server som ansluter din LLM till ElevenLabs och kopplar sedan in en webbläsarklient så att användare kan ha röstkonversationer med din agent.
Använd ElevenLabs Speech Engine-skill för att lägga till röst i din chattagent:
Så fungerar Speech Engine
Speech Engine ansluter din LLM till ElevenLabs så att användare kan prata med din agent och höra den svara. ElevenLabs hanterar tal-till-text och text-till-tal; din server tillhandahåller LLM-logiken.
Varje WebSocket-anslutning representerar en konversation. När användaren talar transkriberar ElevenLabs ljudet och skickar transkriptet till din server. Din server skickar det till din LLM och streamar sedan svaret tillbaka. ElevenLabs omvandlar texten till tal och spelar upp den i webbläsaren. SDK:t hanterar anslutningar, turordning och avbrottsidentifiering.
Förutsättningar
Den här självstudien använder OpenAI:s API för LLM:en. Du behöver en OpenAI API-nyckel som anges i miljövariabeln OPENAI_API_KEY.
Serverkonfiguration
Skapa en API-nyckel
Skapa en API-nyckel i kontrollpanelen här, som du använder för att säkert få åtkomst till API:et.
Spara nyckeln som en hanterad hemlighet och skicka den till SDK:erna antingen som en miljövariabel via en .env-fil eller direkt i appens konfiguration, beroende på vad du föredrar.
Exponera servern
Speech Engine behöver en offentligt åtkomlig URL. Använd ngrok för att exponera din lokala server. Servern är inte byggd än, men ngrok måste köras först så att du har URL:en för nästa steg.
Kopiera vidarebefordrings-URL:en (t.ex. https://abc123.ngrok.io).
Skapa en Speech Engine-instans
Använd SDK:t för att skapa en Speech Engine-instans och skicka med din ngrok-URL med sökvägen /ws tillagd som WebSocket-URL.
Kör det här skriptet och kopiera Speech Engine-ID:t (t.ex. seng_8k3m9xr4hjnfg983brhmhkd98n6) till nästa steg.
Skapa servern
Skapa en fil med namnet server.py eller server.mts med följande innehåll. Det här konfigurerar en server, kopplar Speech Engine till sökvägen /ws och använder OpenAI för att generera svar.
Callbacken onTranscript / on_transcript tar emot hela konversationshistoriken och den aktuella sessionen. TypeScript SDK:t tillhandahåller också en AbortSignal som aktiveras om användaren avbryter mitt i ett svar. Om du skickar signal till OpenAI-anropet avbryts LLM-begäran automatiskt vid avbrott.
sendResponse() / send_response() accepterar en sträng, en asynkron itererbar samling eller en stream från OpenAI, Anthropic eller Google Gemini. SDK:t extraherar textinnehållet automatiskt.
I exemplet ovan skickas användarens fullständiga transkript till LLM:en. I en produktionsmiljö bör du lägga till skyddsräcken för att förhindra försök till promptinjektion eller manipulering.
Klientkonfiguration
Skapa en tokenändpunkt
Lägg till en ändpunkt på serversidan som genererar en konversationstoken. Det håller din API-nyckel utanför webbläsaren och använder WebRTC för bästa ljudkvalitet.
Bygg konversationsgränssnittet
Hämta konversationstoken från din server och använd den för att starta en session.
React
JavaScript
Prova det
Kontrollera att tre processer körs:
- ngrok - vidarebefordrar till port 3001
- Din Speech Engine-server -
python server.pyellernpx tsx server.mts - Tokenservern -
npx tsx token-server.mtsellerpython token_server.py
Öppna din klientapplikation i webbläsaren och klicka på Starta konversation. Ge åtkomst till mikrofonen när du uppmanas och börja sedan prata. Du bör höra agenten svara via dina högtalare.
Om du har debug: true aktiverat på servern visas inkommande transkript och utgående svar i konsolen.
Sessionshändelser
Konfigurera agentens första meddelande
Som standard väntar agenten på att användaren ska tala först. Om du vill att agenten ska hälsa användaren när konversationen startar anger du ett första meddelande i alternativet overrides på klienten när du startar sessionen.
Det första meddelandet uttalas av agenten så snart anslutningen har upprättats. Det aktiverar inte callbacken onTranscript på din server – det hanteras helt på ElevenLabs sida.