Speech Engine
ElevenLabsで独自のチャットエージェントやLLMに音声を追加。
概要
ElevenLabs Speech Engineは、あらゆるチャットエージェントに音声機能を追加します。ElevenLabsがスピーチtoテキストとテキスト読み上げを処理し、サーバー側でLLMロジックを提供します。SDKが接続ライフサイクル、ターンテイキング、中断検出を管理するため、エージェントの動作に集中できます。
仕組み
Speech Engineは、WebSocket経由でサーバーをElevenLabsに接続します。各接続が1つの会話を表します。
- ユーザーがブラウザで話します。ElevenLabsがオーディオをキャプチャし、文字起こしします。
- 文字起こしは、完全な会話履歴とともにサーバーへ送信されます。
- サーバーが文字起こしをLLMに渡し、応答をストリーミングで返します。
- ElevenLabsがテキストを音声に変換し、ブラウザで再生します。
Speech Engineを使う場面
Speech Engineは、独自のLLMを使用し、自身のサーバー上で会話ロジックを制御したいデベロッパー向けに設計されています。次のような場合に利用できます。
- 既存のテキストベースのチャットエージェントに音声を追加する
- 特定のLLM、微調整済みモデル、またはカスタム推論パイプラインを使用する
- 会話ルーティング、コンテキスト管理、ツール呼び出しを完全に制御する
- 既存のサーバーアプリケーション(Express、FastAPIなど)に音声を統合する
ElevenLabsがLLM、ナレッジベース、ツールを提供するフルホステッドソリューションを求める場合は、代わりにElevenAgentsを使用してください。
主な機能
- あらゆるLLM - OpenAI、Anthropic、Google Gemini、またはテキストを生成する任意のモデルを使用できます。SDKはOpenAI、Anthropic、Geminiのストリーム形式からテキストを自動抽出します。
- 中断処理 - ユーザーが応答の途中で話し始めると、SDKは
AbortSignal(TypeScript)またはタスクキャンセル(Python)を介して進行中のLLMリクエストを自動的にキャンセルします。 - ストリーミング - 応答は生成されると同時にブラウザへストリーミングされます。文字列、非同期イテラブル、またはネイティブLLMストリームオブジェクトを渡せます。
- ターンテイキング - SDKが会話ターンを管理するため、サーバーは文字起こしに応答するだけで済みます。
会話時間
Speech Engineは最大40分(2,400秒)の会話に対応しています。デフォルトでは、会話は600秒(10分)で終了します。より長い会話を許可するには、APIの conversation.max_duration_seconds またはダッシュボードの Advanced タブにある Max conversation duration を増やしてください。詳細は、最大会話時間の設定をご覧ください。40分を超える会話が必要な場合は、チームにお問い合わせください。
IP許可リスト
サーバーがファイアウォールの内側にある場合や、IPベースのアクセス制御を使用している場合は、ElevenLabsのWebSocket接続の送信元となる静的IPを許可リストに追加できます。IPアドレスの完全な一覧は、IP許可リストをご覧ください。
IP許可リストを使用すると、サーバーはElevenLabsのシステムからのWebSocket接続のみを受け入れます。
よくある質問
どのLLMがサポートされていますか?
テキストを生成するあらゆるLLMに対応しています。SDKには、OpenAI(Responses APIおよびChat Completions API)、Anthropic Messages API、Google Gemini API向けのストリーム抽出機能が組み込まれています。その他のプロバイダーでは、プレーン文字列または文字列チャンクの非同期イテラブルを渡してください。
Speech EngineとElevenAgentsの違いは何ですか?
ElevenAgentsは、ElevenLabsがLLM、ナレッジベース、ツールを提供するフルホステッドプラットフォームです。Speech Engineは、独自のLLMを使用し、自身のサーバー上で会話ロジックを制御したいデベロッパー向けです。
どのサーバーフレームワークがサポートされていますか?
TypeScriptでは、Speech Engineを任意のNode.js HTTPサーバー(Express、Fastify、またはプレーンな http.createServer())に接続するか、スタンドアロンのWebSocketサーバーを実行できます。Pythonでは、SDKが engine.serve() によるスタンドアロンサーバーを提供します。また、 engine.create_session() を使用してFastAPI、Starlette、または任意のASGIフレームワークと統合することもできます。