このセクションでは、AOQ で CosyVoice にアクセスするための認証、メディア設定、接続確立、タスクイベントの処理を説明します。
AOQ で CosyVoice にアクセスする場合、クライアントは Data トラックでテキストとタスクイベントを送信し、Audio トラックで合成音声を受信します。
AppServer に環境変数
Token Plan を使用する場合、アクセスドメインの
次の JSON を UTF-8 にシリアライズし、
SDK は Audio トラックから音声を受信して再生します。
すべてのテキストを送信したら、
接続が不要になったら、受信済みの音声の再生完了を待ち、
前提条件
- AOQ 対応モデルを選択します。詳細な対応範囲は、モデルとプロトコルの対応範囲をご覧ください。
- リージョンとワークスペースを一致させ、業務 AppServer で API キーを設定して使用します。
- SDK のダウンロードからプラットフォーム用の AOQ SDK を導入します。以下の例は Android Java と Opus 転送を使用するため、Opus プラグインも導入してください。テキスト音声合成では、マイクやカメラの権限は不要です。
1. 接続認証情報の取得
トークンを事前取得する場合や認証フロー全体を確認する場合は、接続認証の詳細を参照してください。
DASHSCOPE_API_KEY を設定し、{endpoint} を選択したリージョンとワークスペースのアクセスドメインに置き換えます。CosyVoice は Inference 接続パスを使用します。次の例は cosyvoice-v3-plus を使用します。
WorkspaceId は token-plan 固定です。リクエストボディの clientIp は任意です。クライアントの実際のパブリック IP アドレスを入力すると、ゲートウェイが Relay アクセスポイントを選択できます。未入力の場合は、リクエストの送信元 IP を使用します。
API キーは AppServer にのみ保存します。AppServer は次の表の接続パラメーターをクライアントに返します。レスポンスの sidExpiresInSecs は、秒単位のセッション有効期間を示します。
| ゲートウェイのレスポンスフィールド | AoqConnectConfig のフィールド |
|---|---|
aoqTokenForClient | token |
sid | sid |
clientRelayCertFingerprint | certFingerprint |
clientRelayEndpoints | relayEndpoints。endpoint、port、route_index を項目ごとに変換 |
extraInfo.workspaceIdHash | workspaceIdHash |
2. SDK の初期化と接続
AoqCreateConfig で SDK の作業ディレクトリを設定し、AoqClientEngine.createEngine を呼び出してエンジンを作成し、コールバックを登録します。onConnectionStatusChange で接続状態を、onDataMsg でモデルイベントを、onError で SDK エラーを処理します。エンジン初期化と接続フィールドの完全な API リファレンスは、Android SDKをご覧ください。
AppServer が返した認証情報を connectConfig に設定したら、Data トラックを配信し、Audio トラックと Data トラックを購読します。この例では 24 kHz モノラル Opus デコードを設定してプレーヤーを起動します。モデルの出力形式はタスクイベントで指定し、SDK のデコード設定はメディアトラックの転送に使用します。
onConnectionStatusChange が AoqConnectionStatusConnected を返すのを待ってから、タスクを開始します。接続異常時はローカルのタスク状態を消去します。再接続には、新しい接続認証情報の取得が必要です。
3. 合成タスクの開始とイベントの処理
次の JSON を UTF-8 にシリアライズし、AoqDataMsg.data に書き込んで、sendDataMsg で Data トラックから送信します。タスクごとに新しい task_id を生成し、このラウンドのすべてのイベントで同じ値を使用します。選択したモデルに対応する音声を使用してください。
onDataMsg で header.event を読み取ります。task-started を受信したら、1 つ以上の continue-task を送信してテキストを提出します。
result-generated は Data トラック上のタスクイベントであり、音声は Audio トラックで転送します。task-failed を受信したら、header.error_code と header.error_message を読み取り、現在のタスクを終了します。
タスクパラメーターとイベントフィールドの詳細は、クライアントイベントとサーバーイベントをご覧ください。
4. タスクの終了とリソースの解放
すべてのテキストを送信したら、finish-task を送信します。接続を維持し、サーバーが残りのテキストを合成して task-finished を返すのを待ちます。
stopAudioPlayer、disconnect、AoqClientEngine.destroy の順に呼び出してリソースを解放します。