WebSocket を使用して Qwen-TTS リアルタイム音声合成サービスに接続します。本ドキュメントでは、サービスエンドポイント、リクエストヘッダー、インタラクションフローについて説明します。
モデルの概要と選択ガイドについては、「リアルタイム音声合成」をご参照ください。
Qwen-TTS Realtime API は WebSocket プロトコルを使用します。Java および Python アプリケーションは、DashScope SDK を使用することで WebSocket 処理をスキップできます。その他の言語では、WebSocket ライブラリを使用して直接接続できます。
サービスエンドポイント
以下の URL を使用します。model クエリパラメーターでモデルを指定します。
Singapore
WebSocket URL:wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
China (Beijing)
WebSocket URL:wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
URL は wss:// プロトコルを使用する必要があります。Authorization ヘッダーを設定し (「リクエストヘッダー」をご参照ください)、model クエリパラメーターを使用してモデルを指定します。
リクエストヘッダー
以下のリクエストヘッダーを設定します。
|
パラメーター |
型 |
必須 |
説明 |
|
Authorization |
string |
はい |
形式: |
|
user-agent |
string |
いいえ |
サーバー側のソース追跡用のクライアント識別子です。 |
|
X-DashScope-WorkSpace |
string |
いいえ |
Alibaba Cloud Model Studio の ワークスペース ID です。 |
Authorization は WebSocket ハンドシェイク時に検証されます。API キーが無効またはない場合、ハンドシェイクは HTTP 401/403 で失敗します。
インタラクションフロー
クライアントイベントとサーバーイベントの詳細については、「クライアントイベント」および「サーバーイベント」をご参照ください。
API は 2 つのモードをサポートします。
-
ServerCommit モード:サーバーがテキストセグメンテーションと合成タイミングを自動的に決定します。
-
Commit モード:クライアントが各テキストセグメントを送信するタイミングを制御します。合成をトリガーするには、
input_text_buffer.commitを明示的に呼び出す必要があります。
モードの詳細
-
ServerCommit モードでは、
input_text_buffer.appendを呼び出してテキストをバッファリングします。システムは合成タイミングを自動的に決定します。 -
ServerCommit モードで
input_text_buffer.commitを呼び出すと、現在のバッファが即座に合成されます。その後、セッションは ServerCommit モードに戻ります。 -
Commit モードでは、
input_text_buffer.appendのみでは合成はトリガーされません。合成を開始するには、input_text_buffer.commitを呼び出す必要があります。
主な手順:
-
接続:クライアントが WebSocket 接続を開きます。サーバーは準備が完了すると
session.createdを返します。 -
セッション設定:クライアントは
session.updateを送信して、音声、フォーマット、モードを設定します。 -
テキスト入力:クライアントは
input_text_buffer.appendを送信して、テキストをバッファに追加します。 -
合成トリガー:
-
ServerCommit モードでは、合成が自動的に開始されます。クライアントは
input_text_buffer.commitを呼び出して、即座に合成を強制できます。 -
Commit モードでは、
input_text_buffer.commitのみが合成をトリガーします。
-
-
音声生成:サーバーは
response.createdを送信し、response.audio.doneが送信されるまで、response.audio.deltaイベントとして base64 エンコードされた音声をストリーミングします。 -
セッションの終了:クライアントは
session.finishを送信してリソースを解放します。サーバーはsession.finishedを返し、接続を閉じます。
接続後、サーバーは以下の session.created イベントを返します。
{
"event_id": "event_xxx",
"type": "session.created",
"session": {
"object": "realtime.session",
"mode": "server_commit",
"model": "qwen3-tts-flash-realtime",
"voice": "Cherry",
"response_format": "pcm",
"sample_rate": 24000,
"id": "sess_xxx"
}
}