ナビゲーションにスキップ

テキスト読み上げとテキストtoダイアログのWebSocket比較

このガイドでは、ストリーミング音声に適したWebSocketの選び方と、2つのプロトコルの違いを説明します。

ElevenLabsは、合成音声をストリーミングするための2種類のWebSocketプロダクトを提供しています。各プロダクトには、単一ストリーム版と、複数の独立したストリームを1つの接続で多重化するマルチコンテキスト版があります。これらは異なる課題を解決し、異なるメッセージ形式を受け付け、対象モデルも異なります。

どのWebSocketを使うべきですか?

接続ごとに1つの音声(音声はURLで固定)でプレーンテキストをストリーミングし、FlashやMultilingual v2などのv3以外のモデル、任意のSSML、チャンクスケジュール、またはエージェント形式の割り込み処理向けのマルチコンテキスト版を利用したい場合は、テキスト読み上げ(TTS)WebSocketを使用してください。

表現力豊かな音声、チャンクごとのvoice_id、ターン境界(new_turn)、サーバー側でv3に使用されるダイアログ向けバッファリングなど、Eleven v3のダイアログ動作が必要な場合は、テキストtoダイアログ(TTD)WebSocketを使用してください。

同じEleven v3のダイアログ動作に加え、1つの接続上で複数の同時または交互のストリームが必要な場合は、TTDマルチコンテキストWebSocketを使用してください。たとえば、毎回新しいソケットを開かずにダイアログを中断・再開する必要がある会話型エージェントで利用できます。

バッチまたはHTTPストリーミングによるダイアログ(1回の呼び出しでリクエスト全体を送信)には、WebSocketではなくダイアログを作成またはダイアログをストリーミングを使用してください。

比較

テキスト読み上げWebSocketテキストtoダイアログWebSocket
APIリファレンスTTS stream-inputTTD WebSocket
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/stream-input
音声の選択パス内のvoice_idは1つ。ストリーミングされるすべてのテキストでその音声を使用最初のメッセージで1つ以上のvoicesをIDで登録。各inputs[]エントリーでvoice_idを指定
モデルFlash、Multilingual v2、その他の対応TTSモデル。このエンドポイントではeleven_v3とeleven_v4は利用不可。**model_idはeleven_v3またはeleven_v4で始まる必要があります **(例:eleven_v4、eleven_v4_turbo)
最初のクライアントメッセージスペースと任意のvoice_settings/generation_configで初期化(リアルタイムTTSガイドを参照)**voices**を含める必要があります(認証情報をヘッダーまたはクエリですでに送信していない場合は認証情報も必要)
継続的なテキスト送信text文字列を送信(通常は末尾にスペース)。flush、try_trigger_generationなどは任意。inputsを送信:{ text, voice_id, new_turn? }オブジェクト。flush、close_socket、**keep_alive**は任意
バッファリング/スケジューリングチャンク長スケジュールおよび関連するTTS WebSocketコントロールサーバーは十分なテキストが蓄積されるまで(おおよそ40文字かつ8単語)バッファリングしてからオーディオを出力します。**flush**を使用した場合を除きます
1つのソケットでの複数話者複数の並列TTSコンテキストにはmulti-context WebSocketを使用。複数話者ダイアログのセマンティクスには対応しませんeleven_v4では最大10件の音声を登録可能。eleven_v4_turboでは登録できる音声は1つのみ 。並列ダイアログストリームにはTTDマルチコンテキストWebSocketを使用
非アクティブ状態設定可能なinactivity_timeout(TTS WebSocketクエリ)固定で20秒。クライアントメッセージ間でkeep_aliveを送信しない場合
同時実行アクティブな生成時間のみがプランの同時実行制限にカウントされます。アイドル状態で開かれているソケットはカウントされません開いている各接続は、存続期間中ずっと別プールのダイアログセッションを1つ保持します。接続経由の生成は標準の同時実行数を消費しません
アラインメント任意のsync_alignment(APIリファレンスのTTSフィールド名)任意のsync_alignment。JSONレスポンスではsnake_caseフィールドを使用(例:is_final、char_start_times_ms)

TTS WebSocketが適している場合

  • レイテンシまたは対応言語のために、すでにFlashまたはMultilingual v2を統合している。
  • 接続ごとにナレーター音声1つを使用し、フレームごとにテキストを送るシンプルなプロトコルが必要。
  • 割り込みと並列発話のためにマルチコンテキストのオーケストレーションが必要(マルチコンテキストガイド)。

TTS WebSocketの詳しい手順は、リアルタイムでオーディオを生成を参照してください。

TTD WebSocketが適している場合

  • Eleven v4のダイアログ(表現タグ、会話に適したテンポ、複数話者のセリフ)を対象としている。
  • 新しい接続を開かずに、行ごとに話す音声を変更できる台本ベースまたはLLM生成のダイアログをストリーミングする。
  • サーバー側でのv4専用ダイアログ生成に対して、WebSocket形式の増分入力を使用したい。

実際に試す手順は、リアルタイムテキストtoダイアログを参照してください。プロトコルの詳細はAPIリファレンスにあります。

マルチコンテキストWebSocket

どちらのプロダクトにも、複数の独立したストリームを1つのWebSocket接続で多重化するマルチコンテキスト版があります。各コンテキストはクライアントが選択したcontext_idで識別され、独自のテキストをバッファリングし、そのcontext_idが付いたオーディオチャンクを出力します。TTSコンテキストは接続URLのvoice_idを共有しますが、TTDコンテキストは独自の音声と設定を登録します。割り込み処理を伴う同時または交互の生成が必要な場合に、この形式を使用してください。たとえば、接続を切断せずに進行中の発話をキャンセルして新しい発話を開始する必要がある音声エージェントに適しています。

TTSマルチコンテキストWebSocketTTDマルチコンテキストWebSocket
APIリファレンスTTS multi-stream-inputTTD multi-stream-input
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/multi-stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/multi-stream-input
モデルFlash、Multilingual v2、その他の対応TTSモデル。eleven_v3とeleven_v4は利用不可。model_idはeleven_v3で始まる必要があります (例:eleven_v3、eleven_v3_conversational)。このエンドポイントではeleven_v4はサポートされていません。
コンテキスト1つの接続上で複数の並列TTSコンテキスト接続ごとに同時に最大5コンテキスト
コンテキストごとの音声すべてのコンテキストでURLに固定されたvoice_idを1つ使用context_idの最初のメッセージで登録:eleven_v3_conversationalでは1、eleven_v3では最大10
メッセージごとのルーティングすべてのメッセージにcontext_idを含めるすべてのメッセージにcontext_idを含める(close_socketのみを含むメッセージは例外)
コントロールメッセージコンテキストごとにflush、close_context、close_socket、keep_aliveコンテキストごとにflush、close_context、close_socket、keep_alive
非アクティブ状態コンテキストごとに設定可能なinactivity_timeoutそのコンテキストに対してkeep_aliveを送信しない場合、コンテキストごとに固定で20秒
認証接続レベル(ヘッダー、クエリ、または最初のメッセージ)接続レベル(ヘッダー、クエリ、または最初のメッセージ)— コンテキストごとではありません

TTDマルチコンテキストWebSocketが適している場合

  • Eleven v3のダイアログ動作(表現力豊かな音声、チャンクごとのvoice_id、ターン境界)と、1つの接続での同時または交互のストリームが必要。
  • 毎回新しいソケットを開かずにダイアログを中断・再開する必要がある会話型エージェントを構築している。
  • 1つの認証済み接続上で、複数の独立したv3ダイアログセッションを分岐させたい。たとえば、並列のシーンや話者など。

単一ストリームのTTD WebSocketについては、リアルタイムテキストtoダイアログを参照してください。TTSマルチコンテキストWebSocketについては、マルチコンテキストWebSocketガイドを参照してください。TTDマルチコンテキストエンドポイントのプロトコル詳細は、APIリファレンスにあります。

関連ガイド