Krótki przewodnik po Speech Engine
Krótki przewodnik po Speech Engine
Dodaj głos do agenta czatu za pomocą SDK ElevenLabs.
Ten przewodnik pokazuje, jak stworzyć agenta głosowego z użyciem Speech Engine. Skonfigurujesz serwer, który połączy Twój LLM z ElevenLabs, a potem klienta w przeglądarce, by użytkownicy mogli rozmawiać głosowo z agentem.
Użyj umiejętności ElevenLabs Speech Engine, aby dodać głos do agenta czatu:
Jak działa Speech Engine
Speech Engine łączy Twój LLM z ElevenLabs, aby użytkownicy mogli rozmawiać z agentem i słyszeć jego odpowiedzi. ElevenLabs obsługuje zamianę mowy na tekst i zamianę tekstu na mowę, a Twój serwer zapewnia logikę LLM.
Każde połączenie WebSocket odpowiada jednej rozmowie. Gdy użytkownik mówi, ElevenLabs transkrybuje audio i wysyła transkrypcję na Twój serwer. Serwer przekazuje ją do LLM, a potem streamuje odpowiedź z powrotem. ElevenLabs zamienia tekst na mowę i odtwarza ją w przeglądarce. SDK obsługuje zarządzanie połączeniem, zmianę tur i wykrywanie przerwań.
Wymagania wstępne
Ten samouczek używa API OpenAI jako LLM. Potrzebujesz klucza API OpenAI ustawionego w zmiennej środowiskowej OPENAI_API_KEY.
Konfiguracja serwera
Utwórz klucz API
Utwórz klucz API w panelu tutaj, aby bezpiecznie uzyskać dostęp do API.
Przechowuj klucz jako zarządzany sekret i przekaż go do SDK jako zmienną środowiskową przez plik .env lub bezpośrednio w konfiguracji aplikacji — zależnie od preferencji.
Udostępnij serwer
Speech Engine wymaga publicznie dostępnego URL-a. Użyj ngrok, aby udostępnić lokalny serwer. Serwer nie jest jeszcze gotowy, ale ngrok musi działać wcześniej, aby mieć URL do następnego kroku.
Skopiuj URL przekierowania, np. https://abc123.ngrok.io.
Utwórz instancję Speech Engine
Użyj SDK, aby utworzyć instancję Speech Engine, przekazując URL ngrok z dopisaną ścieżką /ws jako URL WebSocket.
Uruchom ten skrypt i skopiuj ID Speech Engine, np. seng_8k3m9xr4hjnfg983brhmhkd98n6, do następnego kroku.
Utwórz serwer
Utwórz plik o nazwie server.py lub server.mts z poniższą zawartością. Skonfigurujesz w nim serwer, podłączysz Speech Engine pod ścieżką /ws i użyjesz OpenAI do generowania odpowiedzi.
Callback onTranscript / on_transcript otrzymuje pełną historię rozmowy i bieżącą sesję. TypeScript SDK udostępnia też AbortSignal, który uruchamia się, gdy użytkownik przerwie odpowiedź. Przekazanie signal do wywołania OpenAI automatycznie anuluje żądanie LLM po przerwaniu.
sendResponse() / send_response() przyjmuje ciąg znaków, asynchroniczny iterowalny obiekt lub stream z OpenAI, Anthropic albo Google Gemini. SDK automatycznie wyodrębnia treść tekstową.
W powyższym przykładzie do LLM przekazywana jest pełna transkrypcja użytkownika. W środowisku produkcyjnym dodaj zabezpieczenia, aby zapobiec próbom prompt injection lub manipulacji.
Konfiguracja klienta
Utwórz endpoint tokenu
Dodaj endpoint po stronie serwera, który generuje token rozmowy. Dzięki temu klucz API nie trafia do przeglądarki, a WebRTC zapewnia najlepszą jakość audio.
Stwórz interfejs rozmowy
Pobierz token rozmowy z serwera i użyj go, aby rozpocząć sesję.
React
JavaScript
Wypróbuj
Upewnij się, że działają trzy procesy:
- ngrok — przekierowuje na port 3001
- Twój serwer Speech Engine —
python server.pylubnpx tsx server.mts - Serwer tokenów —
npx tsx token-server.mtslubpython token_server.py
Otwórz aplikację kliencką w przeglądarce i kliknij Rozpocznij rozmowę. Gdy pojawi się prośba, zezwól na dostęp do mikrofonu, a potem zacznij mówić. Odpowiedź agenta usłyszysz w głośnikach.
Jeśli na serwerze masz włączone debug: true, w konsoli zobaczysz logi przychodzących transkrypcji i wychodzących odpowiedzi.
Zdarzenia sesji
Konfiguracja pierwszej wiadomości agenta
Domyślnie agent czeka, aż użytkownik odezwie się pierwszy. Aby agent przywitał użytkownika na początku rozmowy, ustaw pierwszą wiadomość w opcji overrides klienta podczas uruchamiania sesji.
Pierwsza wiadomość jest wypowiadana przez agenta zaraz po nawiązaniu połączenia. Nie uruchamia callbacku onTranscript na serwerze — jest obsługiwana w całości po stronie ElevenLabs.