Azure Voice Live API を探索する
Voice Live API を使用すると、開発者はリアルタイムの双方向通信を使用して音声対応アプリケーションを作成できます。 このユニットでは、そのアーキテクチャ、構成、実装について説明します。
Voice Live API の主な機能
Voice Live API は、WebSocket 接続を使用したリアルタイム通信を提供します。 音声認識、テキスト読み上げ合成、アバター ストリーミング、オーディオ処理などの高度な機能がサポートされています。
- JSON 形式のイベントは、会話、オーディオ ストリーム、応答を管理します。
- イベントは、クライアント イベント (クライアントからサーバーに送信) とサーバー イベント (サーバーからクライアントに送信) に分類されます。
主な機能は次のとおりです。
- PCM16 や G.711 などの複数の形式をサポートするリアルタイムオーディオ処理。
- OpenAI 音声や Azure カスタム音声などの高度な音声オプション。
- ビデオとアニメーションに WebRTC を使用したアバター統合。
- ノイズリダクションとエコーキャンセルを内蔵。
注
Voice Live API は、Microsoft Foundry リソース用に最適化されています。 完全な機能の可用性と最高の Microsoft Foundry 統合エクスペリエンスには、Microsoft Foundry リソースを使用することをお勧めします。
サポートされているモデルとリージョンの表については、 Voice Live API の概要を参照してください。
Voice Live API に接続する
Voice Live API では、Microsoft Entra (キーレス) と API キーの 2 つの認証方法がサポートされています。 Microsoft Entra は、Microsoft Foundry リソースにトークン ベースの認証を使用します。 取得した認証トークンは、Bearer ヘッダーを持つAuthorization トークンを使用して適用します。
Microsoft Entra ID で推奨されるキーレス認証では、 Cognitive Services ユーザー ロールをユーザー アカウントまたはマネージド ID に割り当てる必要があります。 トークンは、Azure CLI または Azure SDK を使用して生成します。 トークンは、https://ai.azure.com/.default スコープまたはレガシ https://cognitiveservices.azure.com/.default スコープで生成する必要があります。 WebSocket 接続要求の Authorization ヘッダーのトークンを、 Bearer <token>形式で使用します。
キー アクセスの場合、API キーは 2 つの方法のいずれかで提供できます。 プリハンドシェイク接続では、 api-key 接続ヘッダーを使用できます。 このオプションはブラウザー環境内では使用できません。 または、要求 URI に対して api-key クエリ文字列パラメーターを使用することもできます。 https/wss を使用する場合、クエリ文字列パラメーターは暗号化されます。
注
プリハンドシェイク接続の api-key 接続ヘッダーは、ブラウザー環境では使用できません。
WebSocket エンドポイント
使用するエンドポイントは、リソースへのアクセス方法によって異なります。 AI Foundry プロジェクト (エージェント) への接続またはモデルへの接続を介してリソースにアクセスできます。
-
プロジェクト接続: エンドポイントは次の値です。
wss://<your-ai-foundry-resource-name>.services.ai.azure.com/voice-live/realtime?api-version=2025-10-01 -
モデル接続: エンドポイントが
wss://<your-ai-foundry-resource-name>.cognitiveservices.azure.com/voice-live/realtime?api-version=2025-10-01。
エンドポイントはすべてのモデルで同じです。 唯一の違いは、必要な model クエリ パラメーターです。または、エージェント サービスを使用する場合は agent_id パラメーターと project_id パラメーターです。
Voice Live API イベント
クライアント イベントとサーバー イベントは、音声ライブ API 内での通信と制御を容易にします。 主なクライアント イベントは次のとおりです。
-
session.update: セッション構成を変更します。 -
input_audio_buffer.append: バッファーにオーディオ データを追加します。 -
response.create: モデル推論を使用して応答を生成します。
サーバー イベントは、フィードバックと状態の更新を提供します。
-
session.updated: セッション構成の変更を確認します。 -
response.done: 応答生成の完了を示します。 -
conversation.item.created: 新しい会話アイテムが追加されたときに通知します。
クライアント/サーバー イベントの完全な一覧については、 Voice Live API リファレンスを参照してください。
注
イベントを適切に処理することで、クライアントとサーバー間のシームレスな対話が保証されます。
Voice Live API のセッション設定を構成する
多くの場合、新しく確立された Voice ライブ API セッションで呼び出し元によって送信される最初のイベントは、 session.update イベントです。 このイベントは、さまざまな入力と出力の動作を制御します。 セッション設定は、 session.update イベントを使用して動的に更新できます。 開発者は、音声の種類、モダリティ、ターン検出、およびオーディオ形式を構成できます。
構成の例
{
"type": "session.update",
"session": {
"modalities": ["text", "audio"],
"voice": {
"type": "openai",
"name": "alloy"
},
"instructions": "You are a helpful assistant. Be concise and friendly.",
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
"input_audio_sampling_rate": 24000,
"turn_detection": {
"type": "azure_semantic_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 500
},
"temperature": 0.8,
"max_response_output_tokens": "inf"
}
}
ヒント
インテリジェントなターン検出と会話フローの改善には、Azure セマンティック VAD を使用します。
音声ライブ API を使用してリアルタイムオーディオ処理を実装する
リアルタイム オーディオ処理は、音声ライブ API のコア機能です。 開発者は、特定のクライアント イベントを使用してオーディオ バッファーを追加、コミット、クリアできます。
- オーディオの追加: 入力バッファーにオーディオ バイトを追加します。
- オーディオをコミットする: 文字起こしまたは応答の生成のためにオーディオ バッファーを処理します。
- 音声をクリアする: バッファーからオーディオ データを削除します。
ノイズリダクションとエコーキャンセルは、オーディオ品質を向上させるために構成することができます。 例えば次が挙げられます。
{
"type": "session.update",
"session": {
"input_audio_noise_reduction": {
"type": "azure_deep_noise_suppression"
},
"input_audio_echo_cancellation": {
"type": "server_echo_cancellation"
}
}
}
注
ノイズリダクションは、入力オーディオをフィルタリングすることでVAD精度とモデル性能を向上させます。
音声ライブ API を使用してアバター ストリーミングを統合する
Voice Live API は、対話型アプリケーション用の WebRTC ベースのアバター ストリーミングをサポートしています。 開発者は、ビデオ、アニメーション、ブレンドシェイプの設定を構成できます。
-
session.avatar.connectイベントを使用して、クライアントの SDP オファーを提供します。 - ビデオの解像度、ビットレート、コーデックの設定を構成します。
- ブレンドシェイプやビセームなどのアニメーション出力を定義します。
構成の例
{
"type": "session.avatar.connect",
"client_sdp": "<client_sdp>"
}
ヒント
アバターの操作で高い視覚品質を得るには、高解像度のビデオ設定を使用します。