はじめに
Unity を使って、
AIキャラクターが自動で喋り続ける VTuber スタジオアプリ「キャラっとAI!!」
を開発しています。一般の方はご存知ないかと思いますがtoB向けにご紹介しているサービスとなります。
- 視聴者コメントにリアルタイム返信
- コメントがなくても AI が一人語り
- 朝・夜など時間帯に合わせて雰囲気も変化
- マルチLLM/マルチTTS/マルチ配信プラットフォーム対応
といった機能を、全部 Unity の中に詰め込んだスタジオです。
この記事では、実装の細かいロジックは避けつつ、
- どんな構成で動いているのか
- 各コンポーネントがどう連携しているのか
を 図解中心で紹介します。
1. 全体アーキテクチャ
まずは、全体のつながりをざっくり図にします。
役割のざっくりまとめ
-
Unity アプリ
- コメント受付・AI応答・TTS・アニメーション・配信画面の描画
-
Backend
- ライセンス周りや一部の永続化(Supabase + Edge Functions)
-
視聴者
- YouTube/Twitch/TikTok などのチャットから自然に参加
2. メインコンポーネント構成図
Unity 側の中身を、もう少し細かく分解した図です。
3. コメント〜応答までのシーケンス図
視聴者のコメントから、キャラが喋り終わるまでの一連の流れです。
ポイントは、
- コメント処理・LLM・TTS・アニメーションを全部非同期・イベント駆動でつないでいること
- 「感情解析」を LLM 応答と並列で走らせ、表情に反映していること
4. 一人語り(モノローグ)機能のフロー
コメントが少ない時間帯用の「喋り続ける」仕組みです。
5. ライセンス認証のシーケンス図(抽象)
安全な範囲に抽象化したライセンス認証フローです。
実際のテーブル設計やトークン構造は公開せず、
「クライアント ↔ Edge Functions ↔ DB」という構造だけを共有するようにしています。
6. 各レイヤーの工夫ポイント
6.1 AI / LLM レイヤー
-
複数LLM(OpenAI / Claude / Gemini / Azure)を1つのインターフェースで扱う
-
モデルごとに
- トークン長
- 応答のクセ
- レイテンシ
が違うため、ラッパー層で補正
-
ペルソナ情報(persona.json)は
- キャラの性格
- デフォルトの口調
- 得意/避けたい話題
などを持ち、プロンプト生成時にマージ
6.2 TTS レイヤー
-
各 TTS でレスポンス形式が違う(生PCM/WAV/URLなど)ため、
AudioClipまでの変換パイプラインを共通化 -
連続発話時の「最後の尻切れ対策」として
- 少しだけサイレントを足す
- 再生完了イベントを監視
-
ASMR用途のため
- バイノーラル設定
- 距離減衰
をスクリプトでまとめて管理
6.3 配信 / コメント レイヤー
-
プラットフォームごとの違いを 共通コメントモデル に正規化
-
source(YouTube/Twitch など) userIddisplayNamemessage-
isSuperChatなど
-
-
スパム・誤爆防止の工夫
- 短時間の連投を抑制するクールダウン
- NGワード辞書+LLM側のポリシー
6.4 キャラクター / アニメーション レイヤー
-
State パターンでアニメーション管理
- 待機
- リアクション
- 発話中
- 睡眠
-
感情値と連動して
- まばたきの頻度
- 頭の傾き
- 口パク強度
を微妙に変化させることで「常に生きている感じ」を演出
7. 実際に運用してわかったこと
-
リアルタイム性と安定性のバランス調整が一番大事
- LLM/TTS を高速にしてもネットワークが詰まると意味がない
- 再試行・タイムアウト・フォールバックルートをきちんと用意する必要あり
-
長時間配信でボロが出るのは
- 会話メモリの肥大化
- APIエラー時のリカバリ不足
- UIスレッドで重い処理をしてしまう部分
-
「コメントが少ない時間帯」をどう乗り切るかで
- 配信の雰囲気が大きく変わる
→ モノローグ機能はかなり重要
- 配信の雰囲気が大きく変わる
8. 今後やりたい拡張
- マルチキャラクター会話(AI同士の掛け合い)
- 配信プラットフォームごとに最適化された「反応テンプレ」
- 配信アーカイブからの自動ハイライト生成
- OBS / 配信ソフトとの連携強化
まとめ
本記事では、Unity ベースの AI VTuber スタジオ「キャラっとAI!」について、
- 全体アーキテクチャ
- 各レイヤーの構成
- コメントから応答までのフロー
- モノローグ/ライセンスなどの仕組み
を図解中心で紹介しました。
細部の実装はプロダクト側に閉じつつも、
- ゲームエンジン × LLM × TTS × 配信API
- 24/7運用を意識した設計
といった観点で、どなたかの設計のヒントになれば嬉しいです。