WebSocket 接続を使用して、CosyVoice リアルタイム音声合成サービスにアクセスします。本リファレンスでは、インタラクションワークフロー、サービスエンドポイント、およびリクエストヘッダーについて説明します。
DashScope SDK は現在、Java および Python のみをサポートしています。その他のプログラミング言語の場合は、WebSocket 接続を使用してサービスと通信してください。
ユーザーガイド: モデルの詳細および選定に関する推奨事項については、「音声合成」をご参照ください。
サービスエンドポイント
サービスでは、以下の固定 WebSocket URL を使用します。
シンガポール
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
WorkspaceId は、実際のワークスペース IDに置き換えてください。
中国 (北京)
wss://dashscope.aliyuncs.com/api-ws/v1/inference
必ず wss:// プロトコルを使用してください。上記の URL は固定です。権限付与の詳細については、「リクエストヘッダー」をご参照ください。
シンガポールリージョン向けのレガシドメイン wss://dashscope-intl.aliyuncs.com はまもなく非推奨になります。できるだけ早く、新しいドメイン wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com に移行してください。
リクエストヘッダー
リクエストには、以下のヘッダーを含めてください。
|
パラメーター |
タイプ |
必須 |
説明 |
|
Authorization |
文字列 |
はい |
|
|
user-agent |
文字列 |
いいえ |
サーバー側でのリクエスト追跡用のクライアント識別子。 |
|
X-DashScope-WorkSpace |
文字列 |
いいえ |
Alibaba Cloud Model Studio ワークスペース ID。 |
|
X-DashScope-DataInspection |
文字列 |
いいえ |
データ検査を有効にするかどうか。指定しない場合、デフォルトで |
権限付与は WebSocket ハンドシェイク中に検証されます。API キーが無効または欠落している場合、ハンドシェイクは HTTP 401/403 エラーで失敗します。
インタラクションワークフロー
クライアント側およびサーバー側のイベントの詳細については、「クライアントイベント」および「サーバー側イベント」をご参照ください。
クライアントとサーバーは、以下のシーケンスでやり取りを行います。
-
接続の確立:クライアントがサーバーとの WebSocket 接続を確立します。
-
タスクの開始:クライアントが run-task イベントを送信してタスクを開始します。
-
確認の待機:クライアントがサーバーから task-started イベントを受信し、タスクが開始され、以降のステップを進められることを示します。
-
合成用テキストの送信:
クライアントは、合成するテキストを含む 1 つ以上の continue-task イベントを順番に送信します。サーバーは完全な文を受け取ると、result-generated イベントおよび音声ストリームを返します。テキスト長の制約については、continue-task イベントの
textフィールドをご参照ください。説明複数の continue-task イベントを送信できます。テキストセグメントは順序通りに送信してください。サーバーは受信したテキストを自動的に文に分割します。
-
完全な文は即座に合成され、クライアントはサーバーから音声を受信します。
-
不完全な文は、完全になるまでバッファーされます。サーバーは不完全な文に対して音声を返しません。
finish-task イベントを送信すると、サーバーはバッファーされたすべてのコンテンツを強制的に合成します。
-
-
音声の受信:
binaryチャンネルを通じて音声ストリームを受信します。 -
タスク終了の通知:
すべてのテキストを送信した後、クライアントは finish-task イベントを送信し、引き続き音声ストリームを受信します。このステップは必須であり、省略すると音声が不完全になる可能性があります。
-
タスク完了イベントの受信:
クライアントがサーバーから task-finished イベントを受信し、タスクが完了したことを示します。
-
接続の終了:クライアントが WebSocket 接続を閉じます。
各タスクごとに新しい接続を作成するのではなく、複数のタスクで WebSocket 接続を再利用してください。
単一の合成タスク内では、run-task、すべての continue-task、および finish-task イベントで同じ task_id を使用する必要があります。新しいタスクごとに、新しい task_id(例:UUID)を生成してください。異なる task_id 値を使用すると、音声の破損やタスクの失敗が発生する可能性があります。