Gemini Live コンテストのために Voxitale を構築しました。若い子ども向けの音声優先ストーリーテリングアプリです。
子どもが Amelia に話しかけ、彼らの声で物語を導きます。システムは挿絵入りの場面とナレーションをリアルタイムで生成します。
不思議な点は?
このプロジェクト全体での私のお気に入りの瞬間は、ラズベリーパイの WiFi を直したときでした。
説明します。
まず、私はコンサルタント的な話しぶりが大嫌いです。見かけだけ立派で中身のない洗練された言葉には我慢できません。だからこのプロジェクトを優雅なエンジニアリングの旅だったとふりをするつもりはありません。混沌としていました。速い展開でした。AIツールの山を駆使しました。いくつかの部分は本当に刺激的でした。いくつかの部分は、長時間にわたって端末を行き来するログのように感じられました。
その過程の途中で、実際に役立つ何かを学んだ瞬間がありました。
Voxitale の様子
エンジニアリングの話に入る前に、実際の体験がどんなふうに見えるかを説明します。
子どもが Amelia に話しかけ、彼らの声で物語を導きます。システムは挿絵入りの場面とナレーションをリアルタイムで生成します。
物語が進むにつれて、ページが生成され、最終的には絵本風の体験として組み立てられます。
親は物語のムード、ペース、語り手の声、そしてオプションのスマート照明効果などをコントロールできます。
目標は、物語づくりを 対話的に、受動的でない と感じさせることです。
なぜ Gemini Live コンテンツに出場したのか
私は ライブインタラクション を軸に何かを作る口実が欲しかったので、Gemini Live コンテストに応募しました。
Voxitale の前に、顧客対応のプロトタイプで Gemini Live をすでに試していました。RAG ルックアップを実行し、ウェブサイトのナビゲートを手伝い、さらにはビデオプレーヤーを制御することもできました。
動作しました。
しかし私をワクワクさせるには至りませんでした。
対話型ストーリーテリング部門はそれを実現しました。
ライブの語り手は、存在感を感じさせなければなりません。迅速に応答し、中断を処理し、幻想を生きたまま保つ必要があります。
同じ頃、契約が流れ落ちたことで、私がサイドプロジェクトから通常は得られない“中断のない時間”を突然手に入れることになりました。
私は以前に Gemini Live に触れていたので、これを管理できると考えました。
私は間違っていました。
リアルタイムのストーリーテリングは、見た目以上に難しいです。
私が作ったもの
Voxitale は、同時に走る二つの異なるテンポを持つシステムへと成長しました。
最初のテンポは、ライブ対話ループでした。
子どもがブラウザ上で話します。アプリはマイク音声を取り込み、WebSocket 経由で FastAPI バックエンドへストリーミングします。そのバックエンドは Gemini ネイティブ音声を使って Google ADK のライブエージェントを実行し、Amelia がリアルタイムで応答できるようにします。
目的は、順番を待つチャットボットとやり取りするのではなく、キャラクターと話しているかのように感じさせることでした。
2つ目のテンポは、創造的生成パイプラインで、ライブ音声対話と並行して動作します。
物語が進むにつれて、システムは直前に起きた出来事を説明する挿絵入りの場面とキャプションを生成します。セッションの終わりには、それらの要素が短い絵本風のムービーとして組み立てられます。
ElevenLabs のナレーションや Home Assistant の照明効果など、任意の統合が没入感を高めることができます。
これにより、システムは同時に二つの非常に異なるワークロードをサポートする必要がありました:
- 低遅延の音声対話
- 遅いメディア生成
システムを理解する最も簡単な方法は、アーキテクチャを見ることです。
クライアント層
ブラウザは React / Next.js のインターフェースを実行し、オーディオワークレットを使用してマイク音声をキャプチャし、WebSocket を介してバックエンドへストリーミングします。これにより、子どもは自然に話し、物語を中断したいときに妨げずに話すことができます。
アプリケーション層
バックエンドは Google Cloud Run 上で FastAPI を使用して動作します。このサービスは WebSocket 接続、API ルーティング、物語セッションのオーケストレーションを管理します。
エージェントとモデル層
エージェントは Google ADK を使い、Gemini Live と Vertex モデルを使用して動作します。
この層は、ストーリーテリングのロジック、プロンプトルール、ツールの実行を扱います。シーンのプロンプトを生成し、画像生成をトリガーし、ElevenLabs の音声や Home Assistant の照明といった統合を調整します。
データとメディア層
生成された場面と資産は Google Cloud Storage に格納され、セッションのメタデータとフィードバックは Firestore に格納されます。
セッションの終了時に Cloud Run のジョブがシーンとナレーションを組み合わせて、最終的な MP4 の絵本風動画を作成します。
私の開発ワークフロー
興味深いことに、Voxitale をコーディングするのに Gemini Live を使いませんでした。
Gemini が製品体験を支えましたが、私の開発ワークフローは複数のAIツールを使いました:
- Gemini Pro / Flash を用いた Google Anti-Gravity
- GPT-5.4 を使った OpenAI Codex
- 開発初期の Anthropic Opus と Sonnet
私は基本的に 直感的にコーディングする 形でシステムの大半を実装しました。
Gemini はフロントエンドの UI アイデアやブレインストーミング機能の提供に役立ちました。
OpenAI Codex がバックエンド作業とデバッグの大半を担当しました。
GPT-5.4 がリリースされると、バックエンドの推論に非常に強力だと分かり、最終的にはバックエンド作業の約90%が何らかの形で GPT-5.4 を関与していました。
AI に適切なコンテキストを与える
AI コーディングツールは、与えるコンテキスト次第でしか役立ちません。
WebSockets、Gemini Live、Google ADK、再接続ロジック、ストリーミングパイプラインは、モデルが信頼して即興できる領域ではありません。
そこで、ドキュメントを直接リポジトリに取り込み、モデルが参照できるように docs フォルダに配置しました。
ログ出力も極めて重要になりました。
デバッグの大半は、単純なループに従いました:
- 問題を説明する
- バックエンドのログを提供する
- フロントエンドのログを提供する
- モデルに障害の分析を任せる
- 修正をテストする
AI はデバッグをより速くしました。
しかし、それでもデバッグでした。
最も難しい技術的問題
最も難しいのは、ライブシステムを安定して感じさせることでした。
「インタラクティブな語り手」と聞くと、楽しい部分を想像します:
キャラクターの声
挿絵
子どもたちが筋を導く
しかし実際の仕事は、その下のすべてでした。
アーキテクチャの観点からは、実際には二つのシステムが同時に動作していました:
- リアルタイムの会話システム
- 創造的なメディア生成パイプライン
この二つのシステムが同期しているときだけ、プロジェクトは機能しました。
Raspberry Pi の瞬間
私はこのプロジェクトの Home Assistant 部分のために、再活用が必要な古い Raspberry Pi を持っていました。
アップグレードした後、WiFi が動かなくなりました。
約4時間ほどデバッグに費やしました。
最終的に、問題は Home Assistant と Weave に必要な 64 ビット版ではなく、32ビットOSを動かしていたことに起因していると気づきました。
皮肉なことに、そのデバッグセッションは、プロジェクト全体の中で最も楽しいエンジニアリングの瞬間でした。
華やかだったからではありません。
むしろ、解決策を自分自身が実際に所有していると感じたからです。
コンテストが教えてくれたこと
AI を活用した開発は圧倒的に強力です。
それは時間を圧縮し、1人の開発者が構築できる範囲を拡大します。
しかしアウトプットと所有権は同じものではありません。
AI は迅速に動作するシステムを作るのを助けます。Voxitale が存在するのはそれのおかげです。
しかし最も達成感を感じた部分は、私自身がシステムを深く理解して自分で推論できる部分でした。
Voxitale を試してみる
Voxitale は現在、Gemini Live コンテストの限定プロトタイプとして動作しています。
このシステムは、実際の計算コストが発生するライブ音声AIとメディア生成サービスに依存しているため、現在デモを無制限の公開トラフィックに開くことはできません。
Voxitale を試してみたい場合は、こちらからアクセスを申請できます:
https://forms.gle/f9BMGs38EDy3FxaK7
プロジェクトの技術アーキテクチャやコードに興味がある場合、コンテスト用プロトタイプはここで利用できます:
https://github.com/Smone5/back_to_someping
結び
Voxitale を作ることは、現代の開発はすべてのコードを一行ずつ書くことではなく、システムを調整することだということを私に思い出させてくれました。
モデル
フレームワーク
インフラ
パイプライン
タイミング
しかし、それは私にとって、単純なことを思い出させました。
私が今も最も楽しんでいる部分は、何が起きているかを理解しているときです。
そして時には、その瞬間は Raspberry Pi の WiFi を修正して生まれます。


