Szybki start Speech Engine
Dodaj głos do agenta czatowego za pomocą SDK ElevenLabs.
Ten przewodnik pokaże ci, jak zbudować agenta głosowego za pomocą Speech Engine. Skonfigurujesz serwer, który połączy twój LLM z ElevenLabs, a potem klienta w przeglądarce, aby użytkownicy mogli rozmawiać głosowo z twoim agentem.
Użyj umiejętności ElevenLabs Speech Engine, aby dodać głos do agenta czatowego:
Jak działa Speech Engine
Speech Engine łączy twój LLM z ElevenLabs, dzięki czemu użytkownicy mogą 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 reprezentuje jedną rozmowę. Gdy użytkownik mówi, ElevenLabs transkrybuje audio i wysyła transkrypcję na twój serwer. Serwer przekazuje ją do LLM, a następnie przesyła odpowiedź strumieniowo. ElevenLabs zamienia tekst na mowę i odtwarza go w przeglądarce. SDK obsługuje zarządzanie połączeniami, kolejność wypowiedzi i wykrywanie przerwań.
Wymagania wstępne
Ten samouczek używa API OpenAI dla 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, którego użyjesz, aby bezpiecznie uzyskać dostęp do API.
Przechowuj klucz jako zarządzany sekret i przekaż go do SDK jako zmienną środowiskową w pliku .env lub bezpośrednio w konfiguracji aplikacji — zależnie od preferencji.
Udostępnij serwer
Speech Engine potrzebuje publicznie dostępnego adresu URL. Użyj ngrok, aby udostępnić lokalny serwer. Serwer nie jest jeszcze zbudowany, ale ngrok musi już działać, aby w kolejnym kroku użyć jego adresu URL.
Skopiuj adres URL przekierowania (np. https://abc123.ngrok.io).
Utwórz instancję Speech Engine
Użyj SDK, aby utworzyć instancję Speech Engine, przekazując adres URL ngrok z dodaną ścieżką /ws jako adres 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ą. Konfiguruje on serwer, podłącza Speech Engine pod ścieżką /ws i używa 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 strumień z OpenAI, Anthropic albo Google Gemini. SDK automatycznie wyodrębnia treść tekstową.
W powyższym przykładzie pełna transkrypcja użytkownika jest przekazywana do LLM. W środowisku produkcyjnym dodaj zabezpieczenia przed próbami 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 do najlepszej jakości audio używany jest WebRTC.
Zbuduj 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 do portu 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ć. Usłyszysz odpowiedź agenta przez głośniki.
Jeśli masz włączone debug: true na serwerze, w konsoli zobaczysz przychodzące transkrypcje i wychodzące odpowiedzi.
Zdarzenia sesji
Konfigurowanie pierwszej wiadomości agenta
Domyślnie agent czeka, aż użytkownik odezwie się pierwszy. Aby agent przywitał użytkownika po rozpoczęciu rozmowy, ustaw pierwszą wiadomość w opcji overrides klienta podczas uruchamiania sesji.
Pierwsza wiadomość jest wypowiadana przez agenta, gdy tylko połączenie zostanie nawiązane. Nie uruchamia callbacku onTranscript na serwerze — jest obsługiwana w całości po stronie ElevenLabs.
Konfigurowanie maksymalnego czasu trwania rozmowy
Domyślnie rozmowa kończy się po 600 sekundach (10 minutach). Speech Engine obsługuje rozmowy do 7200 sekund (2 godzin). Aby zezwolić na dłuższe rozmowy, zaktualizuj zasób Speech Engine, ustawiając wyższą wartość max_duration_seconds:
Możesz też ustawić to w panelu: otwórz Speech Engine, przejdź do karty Zaawansowane i ustaw Maksymalny czas trwania rozmowy w sekcji Zachowanie rozmowy.