アバター表示・アニメーション調査レポート¶
AI全自動配信でアバターを表示・動作させる方法を調査した。プログラムから制御可能かどうかを重視している。
方式の比較¶
| 方式 | 表現力 | 導入コスト | プログラム制御 | 備考 |
|---|---|---|---|---|
| PNGtuber | ★★☆ | ★☆☆ | ◎ | 画像切替のみ。最もシンプル |
| Live2D + VTube Studio | ★★★ | ★★☆ | ◎ | 2Dアバターの業界標準。API充実 |
| Live2D + ブラウザソース | ★★★ | ★★★ | ◎ | 自前実装。柔軟だが開発コスト高 |
| VRM(3Dモデル)+ ブラウザ | ★★★ | ★★★ | ○ | 3Dアバター。Web上で表示可能 |
1. PNGtuber(画像切替方式)¶
最もシンプルなアバター表示方法。口を開けた画像・閉じた画像など数枚のPNGを用意し、音声入力に応じて切り替える。
仕組み¶
- 静止画を数枚用意(通常時・発話時・表情差分など)
- 音声レベルに応じて画像を切り替えることで「しゃべっている感」を出す
- フェイストラッキング不要
ツール¶
| ツール | 特徴 |
|---|---|
| obs-pngtuber | OBSブラウザソースで動作。React製。外部アプリ不要 |
| Flood-Tuber | OBSネイティブプラグイン。軽量 |
| PNGtuber Enhanced | レイヤーベースのアニメーション。音声反応あり |
プログラム制御¶
- OBSのソース切替(
SetSceneItemEnabled)で画像を表示/非表示にするだけで実装可能 - ブラウザソース方式なら、WebSocket等で外部からトリガーを送ることも可能
- AI配信では、TTS再生タイミングに合わせて画像を切り替えるだけで十分機能する
評価¶
- メリット: 実装が極めて簡単。リソース消費が少ない。画像さえあれば始められる
- デメリット: 表現が限定的。滑らかなアニメーションはできない
2. Live2D + VTube Studio(推奨)¶
2Dアバターの業界標準。Live2Dモデルを用意し、VTube Studioで表示・アニメーションする。VTube Studio APIによりプログラムからの制御が充実している。
VTube Studio API¶
WebSocketベースのAPI。ポート8001でローカルサーバーが起動する。
できること¶
- パラメータ制御: 目の開閉、口の開閉、体の傾きなどのパラメータ値をプログラムから設定
- 表情の切替: 事前に定義した表情(Expression)をトリガー
- ホットキーの実行: モーションやアニメーションの再生
- モデルの位置・回転・拡大縮小: 画面上のモデル配置を制御
- カスタムパラメータの追加: 独自のパラメータを作成してモデルに反映
- フェイストラッキングとの混合: API制御とトラッキングの値を任意の比率で混合可能
Pythonライブラリ: pyvts¶
import pyvts
import asyncio
async def main():
vts = pyvts.vts(plugin_info={
"plugin_name": "AI Twitch Cast",
"developer": "ai-twitch-cast",
})
await vts.connect()
await vts.request_authenticate_token()
await vts.request_authenticate()
# 口の開閉パラメータを設定(リップシンク)
await vts.request(
vts.vts_request.requestSetParameterValue(
parameter="MouthOpen",
value=1.0, # 0.0(閉じ)〜 1.0(開き)
)
)
# 表情を切り替え
await vts.request(
vts.vts_request.requestTriggerHotKey(hotkeyID="expression_happy")
)
await vts.close()
asyncio.run(main())
Live2Dモデルの入手方法¶
1. マーケットプレイスで購入する¶
既製品のモデルを購入する方法。すぐに使い始められる。
| プラットフォーム | 特徴 | 価格帯 |
|---|---|---|
| nizima | Live2D公式マーケット。品質が高い。オーダーメイド依頼も可能 | 3,000〜50,000円程度 |
| BOOTH | 国内最大級。無料配布モデルも多数。「Live2D」で検索 | 無料〜30,000円程度 |
| VGen | 海外クリエイターへのコミッション(オーダーメイド) | $100〜$1,000+ |
| Fiverr | 海外フリーランスへの制作依頼 | $50〜$500+ |
| vtuber.gg | VTuberモデル専門マーケット | 様々 |
モデルの種類:
- 汎用モデル(安価): 誰でも購入・使用可能。同じモデルを他の人も使う可能性がある
- 買い切りモデル(高価): 購入者専用。他の人とかぶらない
2. 無料モデルを使う¶
学習用・テスト用にはまず無料モデルがおすすめ。
| 配布元 | 内容 |
|---|---|
| Live2D公式サンプル | 公式の学習用サンプルモデル |
| BOOTH(無料) | クリエイターが無料配布しているモデル(1,000件以上) |
| VTube Studio内蔵 | VTube Studioにデフォルトで数体のモデルが付属 |
ライセンスに注意
無料モデルでも利用条件(商用利用可否、クレジット表記、改変の可否等)はモデルごとに異なる。配信で使用する前に必ず確認すること。
3. 自作する¶
Live2D Cubism Editorでイラストからモデルを制作する。
必要なもの:
- イラスト(パーツごとにレイヤー分けしたPSD)
- Live2D Cubism Editor(FREE版あり)
FREE版の制限:
- ArtMesh(レイヤー): 最大100個
- パーツ(フォルダ): 最大30個
- デフォーマ数に制限あり
- テクスチャアトラスのサイズ制限
シンプルなバストアップモデルであればFREE版でも制作可能。細かい動きや全身モデルにはPRO版(月額/年額)が必要。
制作期間の目安:
- 基本的な上半身モデル: 1〜2週間(初心者)
- 全身+細かい表情差分: 約1ヶ月
本プロジェクトでの推奨¶
- まずはVTube Studio内蔵モデルやBOOTHの無料モデルでテスト
- 動作確認が取れたら、nizimaやBOOTHで本番用モデルを購入
- 必要に応じてオーダーメイドや自作を検討
OBSとの連携¶
VTube Studioの画面をOBSで取り込む方法:
- ゲームキャプチャ: VTube Studioウィンドウをキャプチャ(背景透過可能)
- Spout2: 高品質な映像共有(Windows。Spout2プラグインが必要)
AI配信での活用¶
- TTS音声の音量/タイミングを解析
- pyvtsで口の開閉パラメータ(MouthOpen)をリアルタイムに制御 → リップシンク
- LLMの出力内容に応じて表情をトリガー(嬉しい・悲しい・驚き等)
- アイドル時は自動的にまばたき・呼吸アニメーション(VTube Studio内蔵)
評価¶
- メリット: 表現力が高い。API経由で細かく制御可能。エコシステムが充実
- デメリット: Live2Dモデルの準備が必要(制作 or 購入)。VTube Studioを別途起動する必要がある
3. Live2D + ブラウザソース(自前実装)¶
OBSのブラウザソース上でLive2D Cubism SDK for Webを使い、自前でアバターを描画・制御する方式。
技術スタック¶
- Live2D Cubism SDK for Web - TypeScript/JavaScript
- CubismWebFramework - Live2D公式フレームワーク
- pixi-live2d-display - PixiJS上でLive2Dモデルを表示するライブラリ
仕組み¶
- Webアプリとしてアバターを描画
- WebSocketサーバーを内蔵し、Pythonプログラムからコマンドを受信
- OBSのブラウザソースとしてURLを設定
評価¶
- メリット: 完全に自由な制御が可能。外部アプリ不要(OBSだけで完結)
- デメリット: 開発コストが高い。Live2D SDKのライセンス条件に注意が必要
4. VRM(3Dアバター)+ ブラウザ¶
3Dの人型アバター(VRMフォーマット)をWeb上で表示する方式。VRoidStudioで無料作成可能。
技術スタック¶
- three-vrm - pixiv製。Three.js上でVRMを表示
- VRoid Studio - 無料の3Dアバター作成ツール
できること¶
- ボーン制御による体の動き
- ブレンドシェイプによる表情制御(喜怒哀楽、リップシンク)
- 物理シミュレーション(髪・服の揺れ)
- VRMAアニメーションの再生
コード例(three-vrm)¶
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { VRMLoaderPlugin } from '@pixiv/three-vrm';
const loader = new GLTFLoader();
loader.register((parser) => new VRMLoaderPlugin(parser));
loader.load('/avatar.vrm', (gltf) => {
const vrm = gltf.userData.vrm;
scene.add(vrm.scene);
// 表情を設定
vrm.expressionManager.setValue('happy', 1.0);
// リップシンク
vrm.expressionManager.setValue('aa', 0.8); // 「あ」の口
// ボーンを回転(手を振る等)
const rightArm = vrm.humanoid.getBoneNode('rightUpperArm');
rightArm.rotation.z = -Math.PI / 4;
});
評価¶
- メリット: 3Dならではの立体感。VRoid Studioで無料作成可能。ブラウザソースで完結
- デメリット: 3D描画の負荷がやや高い。2Dに比べて「VTuberらしさ」が異なる
5. 既存のAI VTuberシステム(参考)¶
フルスタックのAI VTuberシステムが複数オープンソースで公開されている。
| プロジェクト | 特徴 |
|---|---|
| AI-VTuber-System | LLM + TTS + VTube Studio + OBS の統合システム |
| Persona Engine | Live2D + LLM + TTS + RVC。感情駆動アニメーション |
これらはパイプラインの参考になるが、本プロジェクトでは各コンポーネントを自前で組み立てる方針のため、直接採用はしない。
推奨アプローチ¶
本プロジェクト(AI全自動Twitch配信)では、以下の段階的なアプローチを推奨する。
Phase 1: PNGtuber(まず動かす)¶
- 数枚のアバター画像を用意(通常・発話中・表情差分)
- TTS再生タイミングに合わせてOBSソースを切り替え
- 最小限の実装でアバター付き配信を実現
Phase 2: Live2D + VTube Studio(本格化)¶
- Live2Dモデルを用意
- pyvtsでリップシンク・表情制御を実装
- LLMの感情分析と連動して表情を自動切替
選定理由¶
- VTube Studio + pyvtsの組み合わせが、プログラム制御のしやすさと表現力のバランスが最も良い
- PNGtuberで素早くプロトタイプし、後からLive2Dに移行できる
- ブラウザソース自前実装は開発コストが高く、現時点では不要