銅像と会話:マルチモーダルなElevenAgents搭載アプリの構築
- 執筆者
- Joe Reeve
- 公開日
- 最終更新日
聴くこの記事を聴く
像を撮影し、描かれている人物を特定します。その後、それぞれの人物が時代に合った個性的な声で話す、リアルタイムの音声会話を楽しめます。
これが、ElevenLabsのボイスデザインAPIとAgent APIで構築できるものです。この記事では、コンピュータビジョンと音声生成を組み合わせ、公共モニュメントをインタラクティブな体験に変えるモバイルWebアプリのアーキテクチャを解説します。ここで紹介する内容はすべて、以下のAPIとコードサンプルで再現できます。
チュートリアルを飛ばして、1つのプロンプトで構築する
以下のアプリ全体は、1つのプロンプトから構築されたものです。空のNextJSプロジェクトでClaude Opus 4.5(high)を使い、 Cursor で一発生成に成功することをテスト済みです。すぐに独自のアプリを作りたい場合は、以下をエディタに貼り付けてください。
ドキュメントへのリンクの代わりに、ElevenLabs Agent Skills も利用できます。これらはドキュメントに基づいており、さらに優れた結果が得られる場合があります。
ここからは、そのプロンプトで生成される内容を詳しく解説します。
仕組み
パイプラインは5つのステップで構成されます。
- 画像を撮影する
- 作品と登場人物を特定する(OpenAI)
- 歴史を調査する(OpenAI)
- 各人物に固有の音声を生成する(ElevenAPI)
- WebRTC経由でリアルタイムの音声会話を開始する(ElevenAgents)
ビジョンで像を特定する
ユーザーが像を撮影すると、その画像 がOpenAIの画像認識対応モデルに送信されます。構造化されたシステムプロンプトにより、作品名、場所、作者、制作年、そして重要な情報である各人物の詳細な音声説明を抽出します。システムプロンプトには、想定するJSON出力形式が含まれています。
ロンドンのウェストミンスター橋にあるブーディカ像の写真では、応答は次のようになります。
効果的な音声説明を書く
音声説明の品質は、生成される音声の品質を直接左右します。 ボイスデザインのプロンプトガイド で詳しく解説していますが、含めるべき主な属性は、音質マーカー("Perfect audio quality.")、年齢と性別、トーン/声質(低い、響きのある、しゃがれた声)、正確なアクセント(単に"British"ではなく"thick Celtic British accent")、話すペースです。より具体的なプロンプトほど、正確な結果が得られます。たとえば、"a tired New Yorker in her 60s with a dry sense of humor"は、常に"an older female voice"より優れた結果をもたらします。
ガイドから注目すべきポイントをいくつか紹介します。アクセントの強さを表すには"strong"ではなく"thick"を使い、"foreign"のような曖昧な表現は避けてください。架空または歴史上の人物には、実在するアクセントを参考として指定できます(例:"an ancient Celtic queen with a thick British accent, regal and commanding")。
次のボイスデザイン
ボイスデザインAPI は、テキスト説明から新しい合成音声を生成します。音声サンプル やクローンは必要ありません。そのため、元となる音声が存在しない歴史上の人物に適しています。
手順は2ステップです。
プレビューを生成する
textパラメータは重要です。より長く、人物に合ったサンプルテキスト(50語以上)を使うと、より安定した結果が得られます。一般的な挨拶ではなく、その人物に合った台詞にしてください。 ボイスデザインのプロンプトガイド で、さらに詳しく解説しています。
音声を保存する
プレビューを生成したら、その中から1つを選び、永続的な音声を作成します。
複数の人物がいる像では、音声作成を並列で実行します。5人分の音声でも、ほぼ1人分と同じ時間で生成できます。
複数音声対応のElevenLabs Agentを構築する
音声を作成したら、次はリアルタイムで人物ごとの音声を切り替えられる ElevenLabs Agent を設定します。
複数音声の切り替え
supportedVoices配列で、エージェントが利用できる音声を指定します。Agentsプラットフォームが音声の切り替えを自動で処理します。LLMの応答から別の人物が話していると判断されると、TTS エンジンがそのセグメントを正しい音声に振り分けます。
グループ会話のためのプロンプトエンジニアリング
複数の人物を、順番に進むQ&Aではなく本物のグループのように感じさせるには、意図的なプロンプト設計が必要です。
WebRTCによるリアルタイム音声会話
最後の要素はクライアント接続です。ElevenLabs Agentsは、低レイテンシーの音声会話にWebRTCをサポートしています。WebSocketベースの接続より明らかに高速で、自然な会話のターンテイキングに重要です。
サーバー側:会話トークンを取得する
クライアント側:セッションを開始する
useConversationフックは、音声のキャプチャ、ストリーミング、音声アクティビティ検出、再生を処理します。
Web検索で調査を深める
会話を始める前に、より詳しい歴史的背景を知りたいユーザー向けに、OpenAIのWeb検索ツールを使った強化リサーチモードを追加できます。
得られた知見
このプロジェクトは、テキスト、リサーチ、ビジョン、オーディオといった異なるAIモダリティを組み合わせることで、デジタルと現実世界の両方にまたがる体験を構築できることを示しています。教育、仕事、そして楽しみのために、より多くの人がマルチモーダルエージェントの未開拓の可能性を探求することを期待しています。
構築を始める
このプロジェクトで使用したAPI、 ボイスデザイン、 ElevenAgents、OpenAIは、すべて現在利用できます。




