2025年12月29日
Agora Convo AI と AI Avatar (Akool) 連携で、リッチな会話エージェントをスピーディに実装する方法
アバターを使った会話エージェントは、カスタマーサポート、教育、エンターテイメントなど、多くの分野でより自然で魅力的なユーザー体験を提供します。しかし、ユーザーの発話に合わせて AI が応答を生成し、さらにアバターの口の動き(リップシンク)や表情をリアルタイムで同期させる処理は、開発者にとって大きな負担となりがちです。
この記事では、Agora Conversational AI (Convo AI) とサードパーティの AI Avatar サービスを連携させることで、この課題を解決する方法を紹介します。
※ 本記事は、Agora 公式ドキュメントを含む以下情報を基に、編集・構成しました。
・https://docs.agora.io/en/conversational-ai/models/avatar/overview・https://docs.agora.io/en/conversational-ai/models/avatar/akool
・https://docs.agora.io/en/conversational-ai/rest-api/agent/join
目次
[非表示]連携で可能になること
この連携により、開発者は音声認識 (ASR)、大規模言語モデル (LLM)、テキスト読み上げ (TTS) と、アバターの描画・リップシンクといった複雑なリアルタイム同期処理を自前で実装する手間を大幅に削減できます。結果として、AI による音声対話とアバター描画を組み合わせたリッチなユーザー体験を、よりスピーディに構築可能になります。
今回は、現在ベータサポートされている Akool を例に、具体的な連携方法と設定のポイントを解説します。
Agora Convo AI とは?
まず、Agora Convo AI について簡単におさらいします。
Agora Conversational AI (Convo AI) は、リアルタイムでの音声対話が可能な AI エージェントを構築するためのシステムです。主な役割は、以下の 3 つのコンポーネントをパイプラインとして連携させ、低遅延な会話を実現することです。
- ASR (音声認識): ユーザーの話し言葉をテキストに変換します。
- LLM (大規模言語モデル): ASR からのテキストを受け取り、応答内容(テキスト)を生成します。
- TTS (テキスト読み上げ): LLM が生成したテキストを音声データに変換します。
Convo AI は RESTful API を介して AI エージェントを設定・制御する仕組みを採用しています。具体的なワークフローや RESTful API での操作など、基本的な情報は以下のドキュメント・ブログ記事にて紹介していますので、併せてご覧ください:
- Conversational AI REST quickstart (Agora 公式: 英語)
- リアルタイム音声AI(会話型AI)を簡単に実現!Agora Conversational AI Engine 入門 その 2: RESTful API による AI エージェントの制御と LLM/TTS 連携
AI Avatar 連携によるパイプラインの変化
Convo AI が AI Avatar と連携すると、この処理パイプラインが変化します。
通常時(音声のみ)のパイプライン
AI Avatar を使わない場合、パイプラインはシンプルです。TTS で生成された音声 (オーディオ) は、Agora RTC (Real-Time Communication) チャンネルを通じてエンドユーザーに直接送信されます。
AI Avatar 連携時のパイプライン
AI Avatar (Akool など) と連携する場合、このパイプラインの末尾に AI Avatar サービスの処理が追加されます。
これにより、AI エージェント側では、ASR と LLM の処理は通常時と同様ですが、TTS 以降の処理が以下のように変化します:
- オーディオの転送: TTS で生成された音声データは、連携する AI Avatar サービス (Akool) へ送信されます。
- アバター生成: AI Avatar サービスは、受け取った音声をリアルタイムで解析し、その音声に同期した(リップシンクされた)アバターの映像 (ビデオ) を生成します。
- RTC への配信: AI Avatar サービスは、生成した音声と映像のストリームを Agora の SD-RTN™ を通じて RTC チャンネルに配信します。
- クライアントの受信: エンドユーザーは、この AI Avatar サービスから配信される音声・映像ストリームを受信し、対話します。
主な差分とメリット
開発者にとっての最大のメリットは、Convo AI の TTS が出力する音声と、AI Avatar サービスが生成する映像との間の複雑なリアルタイム同期処理を、Agora プラットフォーム側が吸収してくれる点です。
開発者は、サーバーサイドでこれら 2 つのサービスを連携させる設定(後述する JSON)を行うことで、クライアント側は「アバターが話している音声+映像ストリーム」を受信するだけでよくなります。
会話エージェントの実装アプローチ
アバターを使った会話エージェントの実装には、いくつかのアプローチが考えられます。
アプローチ 1: クラウド完結型
- Convo AI (ASR/LLM/TTS) と AI Avatar サービス (描画/リップシンク) が全てクラウド上で連携します。
- クライアントは、最終的に同期された音声・映像ストリームを受信し、再生するだけです。
アプローチ 2: クライアント描画型
- Convo AI からは音声ストリームのみ(あるいは音声とリップシンク用のメタデータ)を受信します。
- クライアントアプリ側では、アバターの 3D モデル(VRM など)を保持し、受信した音声データ等に基づいてリアルタイムで描画やリップシンク処理を実行します。
Agora Convo AI と AI Avatar の連携は、アプローチ 1 (クラウド完結型) を採用しており、特に開発のスピードとクライアント実装の簡潔さを重視する場合に適しています。
AI Avatar パートナー: Akool について
Convo AI が連携可能な AI アバターサービスの中から、今回は Akool を採用して、連携方法の解説を行います。
Akool は、米国カリフォルニア州に本社を置く AI 技術企業で、マーケティングや教育、企業向けに高品質なビジュアルコンテンツを作成するための AI プラットフォームを提供しています。
プラットフォームでは、フェイススワップや画像生成、ビデオ翻訳など多様な機能が提供されていますが、Agora Convo AI が連携するのは、その中の「Streaming Avatar」サービスです。これは、リアルタイムでの対話とリップシンクが可能な AI アバターを実現する機能です。
このサービスは、AI を活用したリアルな表情とリップシンク機能を持ち、様々なスタイルのプリセットアバターを利用できるほか、プラットフォームの機能としてカスタムアバターの作成もサポートしています。
Agora Convo AI と Akool の連携方法
ではここから、Agora Convo AI と Akool との連携方法について解説していきます。
※ 2025-10 時点では、この機能はベータ版のため、実際の仕様・機能が変わる場合があります。
1. 事前準備
事前準備として、Convo AI を RESTful API で制御する仕組みと、Agora VideoSDK で実装したクライアントサイドのアプリケーションが完成していることを想定して解説します。
この辺りについてもう少し詳しく知りたい方は、以下のブログ記事をご覧ください。
2. 必要情報の取得
AI アバターとの連携には、追加で以下の情報が必要になります。
- Akool API キー: Akool のサービスを利用するための API キーです。
注意: Akool 社から直接購入したキーは利用できない可能性があります。詳細はブイキューブにお問い合わせください。 - Akool アバター ID: 使いたいアバターの識別子です。
- アバター用の RTC uid と Token: Convo AI と Akool それぞれから同じチャンネルに接続するため、後者にも固有の uid (agora_uid) と Token (agora_token) を発行する必要があります。
3. 設定サンプル (JSON)
RESTful API (POST /projects/{appid}/join) に含めるリクエストボディ (JSON) を拡張する形で、Avatar 機能を有効にします。
以下は、Convo AI (ASR: Ares、LLM: Gemini、TTS: Cartesia) と Akool Avatar を連携させる場合の設定例です:
{
"name": "ai_avatar_test_agent",
"properties": {
"channel": "avatar_demo_channel",
"token": "<convo_ai_agent_rtc_token>",
"agent_rtc_uid": "1001",
"remote_rtc_uids": ["2001"], // ★ 受信対象のユーザーUID (※ "*" は使用不可)
/* Convo AI の設定 (ASR, LLM, TTS) */
"asr": {
"vendor": "ares",
"language": "ja-JP"
// ... 他のASR設定
},
"llm": {
"vendor": "custom",
"style": "openai",
"url": "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
"api_key": "<your_llm_api_key>"
"params": {
"model": "gemini-2.0-flash"
}
// ... 他のLLM設定
},
"tts": {
"vendor": "cartesia",
"params": {
"api_key": "<your_tts_api_key>",
"model_id": "sonic-2",
"output_format": {
"container": "raw",
/* ★ 注意点: Akool は 16000 Hz が必須 */
"sample_rate": 16000
}
// ... 他のTTS設定
}
},
/* ★ AI Avatar (Akool) の連携設定 ★ */
"avatar": {
"vendor": "akool",
"enable": true,
"params": {
"api_key": "<your_akool_api_key>",
"agora_uid": "1002", // アバター専用のUID(例)
"agora_token": "<avatar_rtc_token>", // アバター専用のToken
"avatar_id": "<your_akool_avatar_id>"
}
}
}
}
4. ポイントと注意点
アバター連携を正しく動作させるために、いくつかの重要な注意点があります。
avatar オブジェクトの設定
properties 配下に avatar オブジェクトを追加し、avatar.enable: true と avatar.vendor: "akool" を指定します。 params の中には、予め購入した Akool の API キーや、アバター用の uid、Token (必要な場合) 、アバター ID を設定します。
/* ★ AI Avatar (Akool) の連携設定 ★ */
"avatar": {
"vendor": "akool",
"enable": true,
"params": {
"api_key": "<your_akool_api_key>",
"agora_uid": "1002", // アバター専用のUID(例)
"agora_token": "<avatar_rtc_token>", // アバター専用のToken
"avatar_id": "<your_akool_avatar_id>"
}
}
この avatar オブジェクトのパラメータ詳細は、API リファレンス の properties.avatar セクションで確認できます。
remote_rtc_uids のワイルドカード禁止
AI Avatar を使う場合は、受信対象のユーザーの uid (remote_rtc_uids) を明示的に指定する必要があります。
ワイルドカード ("*") を使用すると、エラーが発生します。
"properties": {
// ... その他設定
"remote_rtc_uids": ["2001"], // ★ 受信対象のユーザーUID (※ "*" は使用不可)
// ... その他設定
TTS サンプルレートの指定
Akool では 16,000 Hz のサンプルレートのみをサポートしています。
以下サンプルコードのように、tts の設定で sample_rate: 16000 を明示的に指定してください。これが一致しない場合、エラーが発生します。
"tts": {
// ... 他のTTS設定
"output_format": {
/* ★注意点: Akool は 16000 Hz が必須 */
"sample_rate": 16000
}
// ... 他のTTS設定
}
},
uid とストリーム受信の管理
アバター連携時、見かけ上は 1 名の AI エージェントが参加するように見えますが、内部的には 2 つの uid を以下の用途としてチャンネルに接続します:
- 受信専用: Convo AI 側で、ユーザーからの音声を受信
- 送信専用: AI Avatar 側からユーザーへ、映像・音声を配信
受信専用 uid は properties.agent_rtc_uid、送信専用 uid は avatar.params.agora_uid でそれぞれ指定します。
クライアントアプリケーション側(ユーザー側)では、送信専用 uid からの音声・映像ストリームを(user-published イベントなどで)検知し、受信 (subscribe) するロジックを実装いただく必要があります。
AI Avatar 連携を実際に試してみる
今回紹介した機能について、手軽に体験いただけるデモが用意されています。
Agora Convo AI Web Demo
https://conversational-ai.agora.io/ (要サインアップ)
コーディング不要で、すぐに AI アバターとの会話体験可能なデモが用意されています。
Agora アカウントにサインイン後、設定ボタン ( ① ) を押し、パネル内 Settings > AI Avatar ( ② ) からアバターを選択後、通話開始ボタン ( ③ ) から会話を体験いただけます。
![]()
まとめ
今回は Agora Convo AI と AI Avatar (Akool) を連携させることで、開発者は音声と映像の複雑な同期処理を意識することなく、JSON 設定のみでリッチな会話型 AI アバターをアプリケーションに組み込む方法を紹介しました。
クライアント側の実装も、特定のアバター uid から配信される音声・映像ストリームを受信するだけと、非常にシンプルになります。
これにより、より人間らしいインタラクション (例: AI コンシェルジュや対話型デジタルサイネージ、など) が可能なチャットボットの実装がよりスピーディになります。
本記事では、Akool との連携を紹介しましたが、この他サポートしているプロバイダーとして HeyGen (アルファ版) もございます。
ぜひ、より魅力的で自然な AI エージェント体験の構築にお役立てください。
執筆者ブイキューブ


