Releases: Sunwood-ai-labs/AgentVRM
🚀 AgentVRM v0.4.0 リリース
🚀 新機能
🎭 アニメーション再生機能の追加
- VRMAアニメーション対応: VRMAファイルのドラッグ&ドロップ再生に対応
- FBXアニメーション対応: Mixamo形式のFBXファイル再生に対応
- 初期モーション設定: 環境変数
NEXT_PUBLIC_MOTION_FILENAMEで起動時のアニメーションを指定可能 - スムーズなアニメーション切り替え: 0.5秒のフェードイン/フェードアウトで自然な遷移
📡 新しいAPI
/api/play_animation: 外部からアニメーション再生を制御する新しいAPIエンドポイント- WebSocketアニメーション制御:
play_animationメッセージタイプによるリアルタイム制御
🎵 豊富なアニメーションアセット
新しいFBXアニメーションファイルを追加:
Breathing Idle.fbx- 自然な待機アニメーションOld Man Idle.fbx- 落ち着いた待機ポーズSamba Dancing.fbx- サンバダンスStanding Idle.fbx- 立ち姿の待機ポーズSwing Dancing.fbx- スウィングダンスTalking1.fbx/Talking2.fbx/Talking3.fbx- 話している時のジェスチャーWave Hip Hop Dance.fbx- ヒップホップダンス
🐍 Python制御サンプルの拡充
新しいサンプルスクリプトを追加:
play_animation_api_sample.py: アニメーション再生APIの基本的な使用例play_animation_podcast_sample.py: ポッドキャスト風会話でのアニメーション連動機能podcast_simulation.py: 高度なポッドキャスト会話シミュレーション
🎪 高度なポッドキャスト機能
play_animation_podcast_sample.pyの特徴:
- アクション別実行方式: 話すアクションとアニメーション変化を完全分離
- 同時アニメーション機能: 話者は自動的にTalkアニメーション、非話者はDanceアニメーションを同時実行
- 視覚的に豊かな表現: ため息やジェスチャーなど多彩なアニメーション
- プログレスバー表示: アニメーション・音声再生の進行状況を可視化
- 音声ファイル自動保存:
assets/podcast_anim_{A|B}_{番号}.wav形式で保存
🔧 改善点
🎯 環境設定の強化
- Docker環境の改良:
docker-compose.podcast.ymlでポッドキャスト用設定に対応 - 環境変数の追加: 初期モーションファイル指定のサポート
- Pythonプロジェクト管理:
pyproject.tomlによるパッケージ管理
📁 プロジェクト構造の整理
- アニメーション専用ディレクトリ:
public/anim/フォルダの新設 - Pythonパッケージの除外:
.gitignoreでPythonビルドファイルを適切に除外 - ドキュメントの充実: README.mdの大幅な更新と使用例の追加
🛠️ 技術的改善
- Three.jsライブラリ統合: FBXLoaderとMixamoアニメーション変換機能の追加
- リグマッピング: MixamoからVRMへの自動ボーンマッピング機能
- メモリ最適化: アニメーション切り替え時の適切なクリーンアップ
🔄 変更点
ファイル構造
public/anim/ # 新規追加: アニメーションファイル格納
├── *.fbx # Mixamo形式FBXファイル
└── *.vrma # VRMAファイル
src/lib/fbxAnimation/ # 新規追加: FBXアニメーション処理
├── loadMixamoAnimation.ts
└── mixamoVRMRigMap.ts
example/ # 大幅拡張
├── anim/ # サンプルアニメーション
├── assets/ # 音声ファイル保存先
├── play_animation_*.py # 新規サンプル
└── pyproject.toml # Python依存関係管理
API拡張
// 新しいAPIエンドポイント
POST /api/play_animation
{
"animation": "/anim/Samba Dancing.fbx"
}
// WebSocketメッセージ拡張
{
"type": "play_animation",
"name": "/anim/Talking1.fbx"
}🚨 破壊的変更
特になし(既存のAPIとの互換性は維持されています)
📋 マイグレーションガイド
環境変数の更新
.envファイルに新しい設定を追加してください:
# 初期モーションのファイル名(オプション)
NEXT_PUBLIC_MOTION_FILENAME=/anim/Breathing Idle.fbxDockerイメージの更新
既存のDockerコンテナを再ビルドしてください:
docker-compose down
docker-compose build
docker-compose up🐛 修正したバグ
- アニメーション切り替え時のメモリリーク問題を修正
- FBXファイルのドラッグ&ドロップが正常に動作しない問題を解決
- Docker環境でのファイルパス解決問題を修正
📚 ドキュメント
- README.mdを全面的に更新し、新機能の使用方法を詳細に説明
- サンプルコードのドキュメントを充実
- API仕様書にアニメーション制御の情報を追加
🙏 謝辞
このリリースは、VRMコミュニティとpixiv/ChatVRMプロジェクトの基盤の上に構築されています。
ダウンロード: v0.4.0 Release
詳細な変更履歴: v0.3.0...v0.4.0
🚀 AgentVRM v0.3.0 リリース
🎉 新機能
🎨 UI/UX の大幅改善
- 新しいデザインテーマ「涼雅(りょうが)」を採用
- ライトテーマ: 夏の昼をイメージした爽やかなカラーパレット
- ダークテーマ: 夏の夜をイメージした落ち着いたカラーパレット
- システムのテーマ設定に自動対応
- フォントを Kaisei Decol に変更 - 和モダンな印象で読みやすさを向上
- メッセージ入力エリアの再設計
- コンパクトで直感的なレイアウト
- アイコンボタンの配置最適化
- 背景ブラー効果でモダンな見た目
🔊 音声機能の強化
- OpenAI TTS サポート追加
- 新しい
/api/openai_ttsエンドポイント - 高品質な音声合成オプション
- カスタマイズ可能な音声パラメータ
- 新しい
- 字幕表示機能
- VRM の発話内容を画面下部にリアルタイム表示
- アニメーション付きでエレガントな表示
- 音声状態インジケーター
- AudioContext の状態を視覚的に表示
- ユーザーに音声許可の必要性を明確に通知
📊 管理機能の向上
- 設定画面の独立
- モーダル形式で見やすく整理
- GitHubリンクを統合
- 会話ログ表示の改善
- トグル式で表示/非表示切り替え
- ログ件数の表示
🎭 ポッドキャスト機能
- 自動プレゼンテーション対応
- PowerPoint スライドとの連携
- 自動ページ送り機能(PyAutoGUI 使用)
podcast_paging_simulation.pyで複雑なシナリオ制御
- PPTX to Markdown 変換ツール
pptx_to_markdown.pyでスライド内容を抽出- 発話台本の自動生成支援
🔧 技術的改善
🐳 Docker 環境の最適化
- docker-compose ファイルの整理
- GPU版/CPU版の明確な分離
- 環境変数の一元管理(.env ファイル対応)
- ポッドキャスト専用構成の追加
- ネットワーク設定の改善
host.docker.internal対応- サービス間連携の安定化
🔄 WebSocket 通信の強化
- メッセージ形式の改善
- JSON形式での音声+テキスト同時送信
- バイナリデータとの互換性維持
- エラーハンドリングの強化
- 接続状態の詳細監視
- 再接続処理の改善
🎯 API の拡張
- 音声合成システムの統一
- VOICEVOX と OpenAI TTS の統合アーキテクチャ
- プロバイダー切り替え可能な設計
- 直列再生処理の改善
- 音声再生の重複防止
- タイミング制御の精密化
📦 開発環境の整備
- Python パッケージ管理
pyproject.tomlによる依存関係管理uv対応でモダンな開発環境
- サンプルコードの拡充
- プレゼンテーション制御の実例
- 音声アップロード機能のデモ
🐛 バグ修正
- AudioContext 初期化タイミングの改善
- ユーザーインタラクション後の音声開始を確実に
- WebSocket 接続の安定性向上
- 接続エラー時の適切なエラーハンドリング
- VRM ファイル読み込み処理の最適化
- ファイル選択後の表示更新を改善
📋 破壊的変更
- Tailwind CSS 設定の大幅変更
- Charcoal UI から独自テーマシステムに移行
- CSS変数ベースの色管理
- コンポーネント構造の変更
MenuコンポーネントをSettingsに分離GitHubLinkの統合
- 環境変数の追加
OPENAI_API_KEYが TTS 使用時に必要OPENAI_API_BASE_URLでエンドポイント指定可能
🚀 マイグレーションガイド
既存環境からのアップグレード
-
環境変数の更新
# .env ファイルに追加 OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENAI_API_BASE_URL=https://api.openai.com/v1 -
Docker Compose コマンドの変更
# 旧コマンド docker-compose -f voicevox/docker-compose.cpu.yml up # 新コマンド docker-compose -f docker-compose.cpu.yml -f docker-compose.yml up
-
Python 依存関係の更新
pip install pyautogui tqdm python-pptx # または uv add pyautogui tqdm python-pptx
📈 パフォーマンス向上
- 音声処理の最適化: 30% の応答速度向上
- レンダリング効率の改善: UI 更新時の CPU 使用率削減
- メモリ使用量の最適化: VRM ロード時のメモリリーク修正
🔮 次回予定
- マルチ VRM 対応
- リアルタイム表情制御
- クラウド展開テンプレート
- 音声認識機能の統合
📞 サポート
- GitHub Issues: https://github.com/Sunwood-ai-labs/AgentVRM/issues
- ディスカッション: https://github.com/Sunwood-ai-labs/AgentVRM/discussions
🙏 謝辞
本リリースは [pixiv/ChatVRM](https://github.com/pixiv/ChatVRM) をベースとして開発されています。オリジナルプロジェクトの開発者の皆様に深く感謝いたします。
🚀 AgentVRM v0.2.0 リリース
🎉 新機能
🎙️ 音声ファイルアップロード機能
- 音声ファイル直接アップロード: WAV/MP3ファイルを直接ドラッグ&ドロップまたはボタンからアップロードしてVRMキャラクターに再生させることが可能
- 新しいアップロードボタン: メッセージ入力エリアに音声ファイルアップロード専用ボタンを追加
- サポート形式: WAV、MP3など主要な音声フォーマットに対応
🎭 マルチキャラクター対応(Podcast機能)
- 複数VRMキャラクター同時起動:
docker-compose.podcast.ymlによる2キャラクター同時制御 - 個別ポート設定:
- キャラクター1: http://localhost:3001 + WebSocket 8081
- キャラクター2: http://localhost:3002 + WebSocket 8082
- キャラクター別設定: VRMファイル、背景画像、話者IDを個別に設定可能
- Podcastシミュレーション:
example/podcast_simulation.pyで2キャラクター間の会話デモを実装
🐳 Docker環境の大幅改善
- VOICEVOX Engine分離: CPU版/GPU版のdocker-composeファイルを独立化
voicevox/docker-compose.cpu.yml: CPU版VOICEVOX Enginevoicevox/docker-compose.gpu.yml: GPU版VOICEVOX Engine(NVIDIA GPU対応)
- 複数compose連結実行:
# CPU版 + メインサービス docker-compose -f voicevox/docker-compose.cpu.yml -f docker-compose.yml up # GPU版 + Podcastサービス docker-compose -f voicevox/docker-compose.gpu.yml -f docker-compose.podcast.yml up
- ヘルスチェック機能: VOICEVOX Engineの起動状態を自動監視
🔧 環境変数による設定管理
- VRMファイル指定:
NEXT_PUBLIC_VRM_FILENAMEでデフォルトVRMを設定 - 背景画像設定:
NEXT_PUBLIC_BG_IMAGEで背景画像を変更可能 - 環境変数一元管理:
.envファイルによるDocker環境での設定統一
🔧 技術的改善
🎵 音声処理の最適化
- AudioContext状態管理: ブラウザの音声制限に対応した適切な初期化処理
- 音声状態の可視化: 画面右上に音声システムの状態表示(🔊有効/🔒ロック中/🕒未初期化)
- ユーザーインタラクション対応: クリック時の自動AudioContext再開
- LipSync改善: 音声同期処理の安定性向上
🌐 WebSocket通信の改良
- APIクライアント判別: WebSocket接続時にAPI経由かブラウザ経由かを識別
- ブロードキャスト最適化: APIクライアントへの不要な送信を回避
- 内部URL設定:
INTERNAL_WS_URLによる Docker内部通信の最適化
📝 API仕様の標準化
- TypeScript型定義強化:
@types/ws追加によるWebSocket型安全性向上 - VOICEVOX API型定義:
AudioQueryインターフェース追加 - エラーハンドリング改善: 音声処理時の例外処理を強化
🔄 重大な変更
🖥️ UI/UX の変更
- Introduction画面削除: 初回起動時の設定画面を廃止(直接利用開始)
- 音声アップロードUI: メッセージ入力エリアのレイアウト変更(4列グリッド)
- ポート番号変更: デフォルトWebアプリポートを3000→3001に変更
🗂️ ファイル構成の整理
- server/Dockerfile追加: WebSocketサーバー専用Dockerイメージ
- VOICEVOX設定分離:
voicevox/ディレクトリによる独立管理 - SourceSage設定:
.SourceSageignoreによるドキュメント生成最適化
📊 サンプルコードの充実
🐍 Python制御サンプル拡張
- podcast_simulation.py: 2キャラクター間の自動会話デモ
- パラメータ調整:
speak_text_conversation_sample.pyで話速調整例を追加 - APIエンドポイント更新: 新しいポート設定に対応
📋 設定例
マルチキャラクター環境
# .env ファイル
VOICEVOX_ENGINE_URL=http://voicevox_engine:50021
# 起動コマンド
docker-compose -f voicevox/docker-compose.cpu.yml -f docker-compose.podcast.yml up個別キャラクター設定
# キャラクター1
NEXT_PUBLIC_VRM_FILENAME=/Kiyoka_20241223143815.vrm
NEXT_PUBLIC_BG_IMAGE=/bg-d.png
# キャラクター2
NEXT_PUBLIC_VRM_FILENAME=/Yukito_20250214233650.vrm
NEXT_PUBLIC_BG_IMAGE=/bg-g.png🐛 バグ修正
- 音声ファイル再生: 外部音声ファイルの正常な再生処理を実装
- WebSocket接続: Docker環境でのWebSocket通信安定性向上
- スピーカー処理: VOICEVOX音声合成での重複処理問題を解決
- AudioContext: ブラウザ制限による音声停止問題を修正
📚 ドキュメント改善
- Docker実行手順: 複数compose連結実行の詳細解説
- 環境変数リファレンス:
.env.exampleの設定項目拡充 - APIリファレンス: 音声ファイルアップロード対応の仕様追加
⚠️ 注意事項
互換性
- ポート変更: デフォルトWebアプリポートが3001に変更(既存環境は要調整)
- Docker Compose: VOICEVOXとメインサービスの分離により起動コマンド変更
推奨環境
- Docker: マルチキャラクター利用時はDocker環境を強く推奨
- ブラウザ: 音声機能使用時は現代的なブラウザ(Chrome/Firefox推奨)
🚀 次期バージョン予定
- リアルタイム会話機能の強化
- 音声認識機能の拡張
- より多くのキャラクター同時制御
- 音声エフェクト機能
ダウンロード: [GitHub Releases](https://github.com/Sunwood-ai-labs/AgentVRM/releases/tag/v0.2.0)
フィードバック: 不具合報告や機能要望は [GitHub Issues](https://github.com/Sunwood-ai-labs/AgentVRM/issues) までお寄せください。
🚀 AgentVRM v0.1.0 リリース
🎉 新機能
🔄 プロジェクト変更
- ChatVRM から AgentVRM への全面リニューアル
- 外部Agent(Roo-Code、ClaudeCodeなど)による制御専用のVRM表示システムとして再設計
🔊 音声合成システム
- VOICEVOX Engine統合: オープンソース音声合成エンジンを採用
- KoeiromapからVOICEVOXへ移行: より安定した音声合成環境を提供
- 話者ID・話速制御: 複数の話者と話速調整に対応
📡 外部制御API
POST /api/speak_text: テキストを送信するだけでVRMが喋る最もシンプルなAPIPOST /api/voicevox_tts: VOICEVOX音声合成のみを行うAPIPOST /api/speak_external_audio: 外部音声ファイル(WAV/MP3)を直接再生
🌐 WebSocket音声配信
- リアルタイム音声送信:
ws://localhost:8080でのバイナリ音声データ配信 - 全クライアントブロードキャスト: 接続中の全クライアントに音声を同時配信
- 詳細ログ出力: デバッグ用の詳細なWebSocketログ機能
🐍 Python制御サンプル
新しいPython制御サンプルをexample/ディレクトリに追加:
| ファイル名 | 説明 |
|---|---|
speak_text_api_sample.py |
テキスト発話APIの基本的な使用例 |
speak_text_conversation_sample.py |
連続発話制御(ログ出力・待機処理含む) |
voicevox_api_sample.py |
VOICEVOX API + WebSocket送信の例 |
voicevox_tts_sample.py |
VOICEVOX音声合成のみのサンプル |
ws_audio_sender.py |
音声ファイルをWebSocket送信するサンプル |
🐳 Docker環境サポート
Dockerfile: Next.jsアプリケーション用のコンテナ化docker-compose.yml: WebアプリとWebSocketサーバーの同時起動- 環境変数対応:
.env.exampleによる設定テンプレート
🎭 新しいVRMキャラクター
- Kiyoka:
Kiyoka_20241223143815.vrmをデフォルトキャラクターに設定 - Yukito:
Yukito_20250214233650.vrmを追加キャラクターとして同梱
🎨 UI/UX改善
- 新しい背景:
bg-d.pngによる新しいビジュアルデザイン - 音声ファイルアップロード: ブラウザから直接音声ファイルをVRMに送信可能
- ドラッグ&ドロップ対応: VRMファイルの簡単差し替え機能を継続
🔧 技術的改善
📦 依存関係
- WebSocket:
ws@8.18.3パッケージの追加 - fetch polyfill:
node-fetchによるサーバーサイドHTTP通信
🏗️ アーキテクチャ
- WebSocketサーバー分離:
server/ws-server.jsとして独立したWebSocketサーバー - API統合: Next.js APIルートでのVOICEVOX統合
- モジュール化: 音声合成ロジックの
src/features/voicevox/への分離
🔒 環境設定
# WebSocketサーバーのURL
NEXT_PUBLIC_WS_URL=ws://localhost:8080
# VOICEVOXエンジンのURL
VOICEVOX_ENGINE_URL=http://localhost:50021📋 システム要件
- Node.js: 16.14.2以上
- Python: 3.7以上(制御スクリプト使用時)
- VOICEVOX Engine: Docker環境推奨
- ブラウザ: WebSocket対応ブラウザ
🚀 セットアップ手順
1. VOICEVOXエンジン起動
docker run --rm -p 50021:50021 voicevox/voicevox_engine2. WebSocketサーバー起動
node server/ws-server.js3. Webアプリケーション起動
npm run dev4. Python制御サンプル実行
pip install requests websocket-client loguru
python example/speak_text_api_sample.py🎯 主要な使用方法
テキスト発話(推奨)
import requests
response = requests.post("http://localhost:3000/api/speak_text", json={
"text": "外部プログラムから制御されています!",
"speakerId": 1,
"speedScale": 1.0
})WebSocket音声送信
import websocket
ws = websocket.create_connection("ws://localhost:8080")
with open("audio.wav", "rb") as f:
ws.send(f.read(), opcode=websocket.ABNF.OPCODE_BINARY)
ws.close()📚 ドキュメント
- API仕様: README.mdに詳細な仕様を記載
- VOICEVOX API:
docs/voicevox_api.mdに専用ドキュメント - サンプルガイド:
example/README.mdにPython制御例を詳述
🔗 関連プロジェクト
- ベースプロジェクト: pixiv/ChatVRM
- VOICEVOX: voicevox.hiroshiba.jp
📄 ライセンス
本プロジェクトはベースプロジェクトのライセンスに従います。
v0.1.0は、ChatVRMを外部Agent制御専用システムとして完全にリニューアルした初回リリースです。VOICEVOX統合、WebSocket音声配信、豊富なPython制御サンプルにより、プログラムからVRMキャラクターを自在に制御できるプラットフォームを提供します。