Riferimento SDK JavaScript
Questa pagina documenta l’API pubblica dell’SDK JavaScript Speech Engine (@elevenlabs/elevenlabs-js).
Ottenere una risorsa Speech Engine
Recupera una SpeechEngineResource tramite l’ID del motore. L’oggetto restituito fornisce metodi per collegarsi a un server HTTP esistente, avviare un server autonomo o creare singole sessioni.
SpeechEngineResource
Proprietà
attach
Collegati a un server HTTP Node.js esistente e inizia ad accettare connessioni Speech Engine nel path specificato. Usalo se disponi già di un server HTTP (ad esempio Express, Fastify o un semplice http.createServer()) e vuoi aggiungere Speech Engine alle route esistenti.
Gestisce automaticamente gli upgrade WebSocket, il routing dei path e la verifica delle richieste. Restituisce un SpeechEngineAttachment il cui metodo close() interrompe l’accettazione delle connessioni senza influire sul server HTTP.
È disponibile una scorciatoia direttamente sul client, che combina get() e attach() in un’unica chiamata:
verifyRequest
Verifica che una richiesta in arrivo provenga dall’API Speech Engine di ElevenLabs. Controlla l’header X-Elevenlabs-Speech-Engine-Authorization alla ricerca di un JWT valido firmato con l’hash SHA-256 della tua chiave API.
È necessario solo quando gestisci personalmente l’upgrade WebSocket. Se utilizzi attach() o SpeechEngineServer, la verifica viene gestita automaticamente.
Restituisce: Promise<boolean> — true se la richiesta è valida.
createSession
Racchiude un WebSocket accettato in una SpeechEngineSession. Usalo per l’integrazione con server personalizzati o per la gestione manuale dei WebSocket.
Restituisce: SpeechEngineSession
SpeechEngineServer
Un server WebSocket autonomo che accetta connessioni Speech Engine senza richiedere un server HTTP esistente. Usalo se l’unico scopo del tuo server è gestire le connessioni Speech Engine.
Per l’integrazione con un server HTTP esistente (ad esempio Express, Fastify), utilizza invece engine.attach().
Opzioni del costruttore
start
Avvia il server WebSocket autonomo sulla porta configurata. Verifica ogni connessione in arrivo tramite l’API ElevenLabs usando la chiave API configurata, a meno che non sia stato impostato disableAuth: true.
stop
Arresta il server WebSocket e chiude tutte le connessioni attive.
handleConnection
Racchiude un WebSocket esistente in una SpeechEngineSession con le callback del server già collegate. Usalo quando gestisci il tuo server WebSocket e vuoi racchiudere singole connessioni.
Restituisce: SpeechEngineSession
SpeechEngineSession
Racchiude una singola connessione WebSocket. Ogni connessione rappresenta una conversazione. La sessione emette eventi per le trascrizioni e le modifiche del ciclo di vita e fornisce metodi per inviare risposte LLM.
Quando arriva una nuova trascrizione, viene attivato il segnale di interruzione del gestore della trascrizione precedente, interrompendo qualsiasi chiamata LLM in corso.
Proprietà
on
Registra un gestore per un evento. Restituisce la sessione per il concatenamento.
off
Rimuove un gestore registrato in precedenza.
once
Registra un gestore che viene eseguito una volta e poi si rimuove.
sendResponse
Invia una risposta LLM all’API Speech Engine per la sintesi Text to Speech. Deve essere chiamato all’interno di un gestore onTranscript. Se lo chiami al di fuori di un gestore, emette un avviso e termina senza inviare nulla.
L’SDK rileva ed estrae automaticamente il testo dai seguenti formati di stream LLM:
close
Chiude la sessione e la connessione WebSocket sottostante.
SpeechEngineAttachment
Restituito da engine.attach(). Controlla il ciclo di vita del server WebSocket senza influire sul server HTTP a cui è stato collegato.
close
Interrompe l’accettazione di nuove connessioni, rimuove il listener di upgrade dal server HTTP e chiude il server WebSocket sottostante.
Callback
L’oggetto callback passato a attach() o SpeechEngineServer. Tutte le callback sono facoltative.
Il gestore onTranscript riceve un AbortSignal che viene attivato quando l’utente interrompe la risposta a metà.
Disabilitare l’autenticazione
Per impostazione predefinita, sia attach() sia SpeechEngineServer verificano l’header X-Elevenlabs-Speech-Engine-Authorization su ogni connessione in arrivo. Se il tuo server si trova dietro un livello dell’infrastruttura che limita già il traffico in arrivo a ElevenLabs (in genere una lista di indirizzi IP consentiti limitata agli intervalli di uscita di ElevenLabs), puoi saltare la verifica JWT passando disableAuth: true:
Quando l’autenticazione è disabilitata, il server accetta qualsiasi client che riesca a raggiungerlo ed emette un console.warn all’avvio.
Usa disableAuth: true solo se davanti al server hai una lista di indirizzi IP consentiti, valori di header personalizzati o una restrizione equivalente
a livello di rete. Senza una di queste protezioni, chiunque su internet può aprire una
sessione e consumare le tue risorse di calcolo e la quota LLM a valle.
Eventi
Quando utilizzi direttamente session.on() invece delle callback, questi sono i nomi degli eventi e le firme dei rispettivi gestori.
Le costanti dei nomi degli eventi sono disponibili per un utilizzo type-safe:
TranscriptMessage
Un singolo messaggio nella cronologia della conversazione. La trascrizione completa viene passata a onTranscript a ogni turno.
Protocollo wire
A titolo di riferimento, questi sono i messaggi JSON scambiati tramite la connessione WebSocket. L’SDK gestisce automaticamente la serializzazione e la deserializzazione.