JavaScript SDKリファレンス
JavaScript SDKリファレンス
Speech Engine JavaScript SDKのクラス、メソッド、イベント。
このページでは、Speech Engine JavaScript SDK(@elevenlabs/elevenlabs-js)の公開APIについて説明します。
Speech Engineリソースを取得する
エンジンIDでSpeechEngineResourceを取得します。返されるオブジェクトには、既存のHTTPサーバーへの接続、スタンドアロンサーバーの起動、個別セッションの作成を行うメソッドが含まれます。
SpeechEngineResource
プロパティ
attach
既存のNode.js HTTPサーバーに接続し、指定されたパスでSpeech Engine接続の受け付けを開始します。すでにHTTPサーバー(Express、Fastify、または通常のhttp.createServer()など)があり、既存のルートと並行してSpeech Engineを追加する場合に使用します。
WebSocketアップグレード、パスルーティング、リクエスト検証を自動的に処理します。close()メソッドにより、HTTPサーバーに影響を与えずに接続の受け付けを停止できるSpeechEngineAttachmentを返します。
クライアントから直接使用できるショートカットもあり、get()とattach()を1回の呼び出しにまとめられます。
verifyRequest
受信リクエストがElevenLabs Speech Engine APIから送信されたことを検証します。X-Elevenlabs-Speech-Engine-Authorizationヘッダーに含まれる、APIキーのSHA-256ハッシュで署名された有効なJWTを確認します。
WebSocketアップグレードを自分で管理する場合にのみ必要です。attach()またはSpeechEngineServerを使用する場合、検証は自動的に処理されます。
戻り値: Promise<boolean> — リクエストが有効な場合はtrue。
createSession
受け付けたWebSocketをSpeechEngineSessionでラップします。カスタムサーバーとの統合や、WebSocketを手動で処理する場合に使用します。
戻り値: SpeechEngineSession
SpeechEngineServer
既存のHTTPサーバーを必要とせず、Speech Engine接続を受け付けるスタンドアロンWebSocketサーバーです。サーバーの用途がSpeech Engine接続の処理のみである場合に使用します。
既存のHTTPサーバー(Express、Fastifyなど)と統合する場合は、代わりにengine.attach()を使用してください。
コンストラクターオプション
start
設定したポートでスタンドアロンWebSocketサーバーを起動します。disableAuth: trueを設定していない限り、設定済みのAPIキーを使用してElevenLabs APIに対して各受信接続を検証します。
stop
WebSocketサーバーを停止し、すべてのアクティブな接続を閉じます。
handleConnection
サーバーのコールバックを接続した状態で、既存のWebSocketをSpeechEngineSessionでラップします。独自のWebSocketサーバーを管理し、個別の接続をラップする場合に使用します。
戻り値: SpeechEngineSession
SpeechEngineSession
単一のWebSocket接続をラップします。各接続は1つの会話を表します。セッションは文字起こしとライフサイクルの変更に関するイベントを発行し、LLMレスポンスを返送するメソッドを提供します。
新しい文字起こしが届くと、前の文字起こしハンドラーの中断シグナルが発火し、進行中のLLM呼び出しを中断します。
プロパティ
on
イベントのハンドラーを登録します。チェーン用にセッションを返します。
off
以前に登録したハンドラーを削除します。
once
一度だけ発火し、その後自身を削除するハンドラーを登録します。
sendResponse
テキスト読み上げ合成用のLLMレスポンスをSpeech Engine APIに返送します。onTranscriptハンドラー内で呼び出す必要があります。ハンドラー外で呼び出すと警告が発行され、送信せずに戻ります。
SDKは、以下のLLMストリーム形式からテキストを自動検出して抽出します。
close
セッションと基盤となるWebSocket接続を閉じます。
SpeechEngineAttachment
engine.attach()によって返されます。接続先のHTTPサーバーには影響を与えず、WebSocketサーバーのライフサイクルを制御します。
close
新しい接続の受け付けを停止し、HTTPサーバーからアップグレードリスナーを削除して、基盤となるWebSocketサーバーを閉じます。
コールバック
attach()またはSpeechEngineServerに渡すコールバックオブジェクトです。すべてのコールバックは任意です。
onTranscriptハンドラーは、ユーザーがレスポンスの途中で割り込んだときに発火するAbortSignalを受け取ります。
認証を無効にする
デフォルトでは、attach()とSpeechEngineServerの両方が、すべての受信接続でX-Elevenlabs-Speech-Engine-Authorizationヘッダーを検証します。サーバーの前段に、ElevenLabsからの受信トラフィックをすでに制限するインフラストラクチャ層(通常はElevenLabsの送信元IP範囲に限定したIP許可リスト)がある場合は、disableAuth: trueを渡してJWT検証をスキップできます。
認証を無効にすると、サーバーは到達可能なすべてのクライアントを受け入れ、起動時にconsole.warnを出力します。
IP許可リスト、カスタムヘッダー値、または同等のネットワークレベルの制限をサーバーの前段に設定している場合にのみ、disableAuth: trueを使用してください。
設定しない場合、インターネット上の誰でもセッションを開き、コンピューティングリソースとダウンストリームLLMの割り当てを消費できます。
イベント
コールバックではなくsession.on()を直接使用する場合、イベント名とそのハンドラーシグネチャは以下のとおりです。
型安全に使用するためのイベント名定数を利用できます。
TranscriptMessage
会話履歴内の単一メッセージです。完全な文字起こしは、各ターンでonTranscriptに渡されます。
ワイヤープロトコル
参考として、WebSocket接続を介してやり取りされるJSONメッセージを以下に示します。SDKはシリアライズとデシリアライズを自動的に処理します。