6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

開発運用を始めて3年目を迎えたtoB向けAIキャラクターシステム「キャラっとAI!」の機能紹介をする

Last updated at Posted at 2025-12-08

はじめに

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 など)
    • userId
    • displayName
    • message
    • isSuperChat など
  • スパム・誤爆防止の工夫

    • 短時間の連投を抑制するクールダウン
    • NGワード辞書+LLM側のポリシー

6.4 キャラクター / アニメーション レイヤー

  • State パターンでアニメーション管理

    • 待機
    • リアクション
    • 発話中
    • 睡眠
  • 感情値と連動して

    • まばたきの頻度
    • 頭の傾き
    • 口パク強度
      を微妙に変化させることで「常に生きている感じ」を演出

7. 実際に運用してわかったこと

  • リアルタイム性と安定性のバランス調整が一番大事

    • LLM/TTS を高速にしてもネットワークが詰まると意味がない
    • 再試行・タイムアウト・フォールバックルートをきちんと用意する必要あり
  • 長時間配信でボロが出るのは

    • 会話メモリの肥大化
    • APIエラー時のリカバリ不足
    • UIスレッドで重い処理をしてしまう部分
  • 「コメントが少ない時間帯」をどう乗り切るかで

    • 配信の雰囲気が大きく変わる
      → モノローグ機能はかなり重要

8. 今後やりたい拡張

  • マルチキャラクター会話(AI同士の掛け合い)
  • 配信プラットフォームごとに最適化された「反応テンプレ」
  • 配信アーカイブからの自動ハイライト生成
  • OBS / 配信ソフトとの連携強化

まとめ

本記事では、Unity ベースの AI VTuber スタジオ「キャラっとAI!」について、

  • 全体アーキテクチャ
  • 各レイヤーの構成
  • コメントから応答までのフロー
  • モノローグ/ライセンスなどの仕組み

を図解中心で紹介しました。

細部の実装はプロダクト側に閉じつつも、

  • ゲームエンジン × LLM × TTS × 配信API
  • 24/7運用を意識した設計

といった観点で、どなたかの設計のヒントになれば嬉しいです。


6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?