Quickstart di Speech Engine
Questa guida ti accompagna nella creazione di un agente con funzionalità vocali usando Speech Engine. Configurerai un server che collega il tuo LLM a ElevenLabs, quindi un client per browser che permette agli utenti di conversare a voce con il tuo agente.
Usa la skill Speech Engine di ElevenLabs per aggiungere la voce al tuo agente di chat:
Come funziona Speech Engine
Speech Engine collega il tuo LLM a ElevenLabs, così gli utenti possono parlare con il tuo agente e ascoltarne le risposte. ElevenLabs gestisce speech-to-text e text-to-speech; il tuo server fornisce la logica LLM.
Ogni connessione WebSocket rappresenta una conversazione. Quando l’utente parla, ElevenLabs trascrive l’audio e invia la trascrizione al tuo server. Il server la passa al tuo LLM, quindi trasmette la risposta in streaming. ElevenLabs converte il testo in parlato e lo riproduce nel browser. L’SDK gestisce la connessione, i turni di conversazione e il rilevamento delle interruzioni.
Prerequisiti
Questo tutorial usa l’API di OpenAI per l’LLM. Devi impostare una chiave API OpenAI nella variabile d’ambiente OPENAI_API_KEY.
Configurazione del server
Crea una chiave API
Crea qui una chiave API nella dashboard, che userai per accedere all’API in modo sicuro.
Archivia la chiave come secret gestito e passala agli SDK come variabile d’ambiente tramite un file .env oppure direttamente nella configurazione della tua app, a seconda delle tue preferenze.
Esponi il server
Speech Engine richiede un URL accessibile pubblicamente. Usa ngrok per esporre il tuo server locale. Il server non è ancora stato creato, ma ngrok deve essere già in esecuzione per avere l’URL necessario al passaggio successivo.
Copia l’URL di inoltro (ad es. https://abc123.ngrok.io).
Crea un'istanza di Speech Engine
Usa l’SDK per creare un’istanza di Speech Engine, passando l’URL ngrok con il path /ws aggiunto come URL WebSocket.
Esegui questo script e copia l’ID di Speech Engine (ad es. seng_8k3m9xr4hjnfg983brhmhkd98n6) per il passaggio successivo.
Crea il server
Crea un file denominato server.py o server.mts con il seguente contenuto. Questo configura un server, collega Speech Engine al path /ws e usa OpenAI per generare risposte.
Il callback onTranscript / on_transcript riceve l’intera cronologia della conversazione e la sessione corrente. L’SDK TypeScript fornisce anche un AbortSignal che si attiva se l’utente interrompe la risposta a metà. Passando signal alla chiamata OpenAI, la richiesta LLM viene annullata automaticamente in caso di interruzione.
sendResponse() / send_response() accetta una stringa, un iterabile asincrono o uno stream da OpenAI, Anthropic o Google Gemini. L’SDK estrae automaticamente il contenuto testuale.
Nell’esempio precedente, la trascrizione completa dell’utente viene passata all’LLM. In un ambiente di produzione dovresti aggiungere guardrail per prevenire tentativi di prompt injection o manipolazione.
Configurazione del client
Crea un endpoint token
Aggiungi un endpoint lato server che genera un token di conversazione. In questo modo la chiave API non viene esposta nel browser e puoi usare WebRTC per la migliore qualità audio.
Crea l'interfaccia della conversazione
Recupera il token di conversazione dal tuo server e usalo per avviare una sessione.
React
JavaScript
Provalo
Assicurati che siano in esecuzione tre processi:
- ngrok - inoltro alla porta 3001
- Il tuo server Speech Engine -
python server.pyonpx tsx server.mts - Il server token -
npx tsx token-server.mtsopython token_server.py
Apri la tua applicazione client nel browser e fai clic su Avvia conversazione. Quando richiesto, autorizza l’accesso al microfono, poi parla. Dovresti sentire l’agente rispondere dagli altoparlanti.
Se hai attivato debug: true sul server, vedrai le trascrizioni in entrata e le risposte in uscita registrate nella console.
Eventi della sessione
Configurare il primo messaggio dell’agente
Per impostazione predefinita, l’agente attende che l’utente parli per primo. Per fare in modo che saluti l’utente all’avvio della conversazione, imposta un primo messaggio nell’opzione overrides del client all’avvio della sessione.
Il primo messaggio viene pronunciato dall’agente non appena viene stabilita la connessione. Non attiva il callback onTranscript sul tuo server: viene gestito interamente da ElevenLabs.