CyberVerse は、リアルタイムのビデオ通話に対応したオープンソースのデジタルヒューマン・エージェント・プラットフォームです。ビデオ通話のように、顔を見ながら会話できる AI エージェントを作成できます。
あなたを本当に見て、聞いて、リアルタイムで話しかけてくれる、自分だけの J.A.R.V.I.S. のような AI を夢見たことはありませんか?
もう会えない大切な人に再び会い、その声を聞き、笑顔を見ることができたらどうでしょうか。
あるいは、ずっと命を吹き込みたかったキャラクターがいるかもしれません。
必要なのはたった一枚の写真。CyberVerse がその存在を動き出させます。
録画済みではありません。ターン制でもありません。デジタルヒューマンと時間制限なく低遅延でリアルタイムにビデオ通話でき、初回フレームは約 1.5 秒で表示されます。WebRTC を基盤とし、P2P ストリーミングと組み込みの TURN / NAT トラバーサルを備えています。
各デジタルヒューマンは、ただ話せるアバターではありません。実際に物事をこなす AI です。
一枚の写真をアップロードするだけで、デジタルヒューマンを作成できます。業界最先端のデジタルヒューマンモデルにより、リアルタイムの表情アニメーション、自然なリップシンク、待機時の呼吸感を実現します。3D モデリングもモーションキャプチャも不要です。
頭脳、顔、声、耳。そのすべてのコンポーネントを差し替え可能なプラグインとして扱えます。YAML 設定で LLM、TTS エンジン、ASR モデル、アバターバックエンドを自由に組み合わせられます。GPT-4o、Doubao、OpenAI TTS、Whisper、FlashHead を標準でサポートしています。
リアルタイムのビデオ会話には GPU アクセラレーションが必要です。以下は FlashHead と LiveAct アバターモデルのベンチマークです。
| モデル | 品質 | GPU | 枚数 | 解像度 | FPS | リアルタイム可? |
|---|---|---|---|---|---|---|
| FlashHead 1.3B | Pro | RTX 5090 | 2 | 512×512 | 25+ | ✅ はい |
| FlashHead 1.3B | Pro | RTX 4090 | 1 | 512×512 | ~10.8 | ❌ いいえ |
| FlashHead 1.3B | Pro | RTX PRO 6000 | 1 | 512×512 | 20 | ✅ はい |
| FlashHead 1.3B | Lite | RTX 4090 | 1 | 512×512 | 25+ | ✅ はい |
| LiveAct 18B | — | RTX PRO 6000 | 2 | 320×480 | 20 | ✅ はい |
| LiveAct 18B | — | RTX PRO 6000 | 1 | 256×417 | 20 | ✅ はい |
Pro は画質優先、Lite は速度優先です。表は代表的な 画質と計算資源のバランス の例です。余裕があれば画質を上げられ、不足なら解像度や Pro / Lite など画質側の設定を下げてリアルタイム性を確保してください。
libvpx を含むこと)git clone https://github.com/dsd2077/CyberVerse.git
cd CyberVerse
conda create -n cyberverse python=3.10
conda activate cyberverse
cp infra/.env.example .env
.env を編集して API キーを入力します。
DOUBAO_ACCESS_TOKEN=your_doubao_access_token # ByteDance Doubao 音声 LLM
DOUBAO_APP_ID=your_doubao_app_id
Doubao Voice: Volcengine クイックスタートに従い App ID / API Key を取得し、DOUBAO_APP_ID / DOUBAO_ACCESS_TOKEN に設定します。
スタック起動後は、これらの値や他の API キー / サービスエンドポイントも、.env を直接編集する代わりに Web UI の /settings から変更できます。
CyberVerse は現在 FlashHead と LiveAct の 2 モデルに対応しています。必要なものだけダウンロードしてください。今後、さらにバックエンドを追加する予定です。
pip install "huggingface_hub[cli]"
| モデルコンポーネント | 説明 | リンク |
|---|---|---|
SoulX-FlashHead-1_3B | 1.3B FlashHead 重み | Hugging Face |
wav2vec2-base-960h | 音声特徴抽出器 | Hugging Face, ModelScope |
# 中国本土から利用する場合は、先にミラーを設定できます:
# export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download Soul-AILab/SoulX-FlashHead-1_3B \
--local-dir ./checkpoints/SoulX-FlashHead-1_3B
huggingface-cli download facebook/wav2vec2-base-960h \
--local-dir ./checkpoints/wav2vec2-base-960h
| モデル名 | ダウンロード |
|---|---|
| SoulX-LiveAct | Hugging Face, ModelScope |
| chinese-wav2vec2-base | Hugging Face, ModelScope |
huggingface-cli download Soul-AILab/LiveAct \
--local-dir ./checkpoints/LiveAct
huggingface-cli download TencentGameMate/chinese-wav2vec2-base \
--local-dir ./checkpoints/chinese-wav2vec2-base
cyberverse_config.yaml を編集し、モデルパスをローカルの checkpoint パスに合わせて更新します。
inference:
avatar:
default: "flash_head" # 起動するアバターモデルを指定。live_act を選ぶ場合は下の live_act 設定を記入
runtime:
cuda_visible_devices: 0 # 共有 GPU ID。マルチ GPU の場合は 0,1 など
world_size: 1 # 共有 GPU 数。デュアル GPU なら 2
flash_head:
checkpoint_dir: "./checkpoints/SoulX-FlashHead-1_3B" # ← ローカルのパス
wav2vec_dir: "./checkpoints/wav2vec2-base-960h" # ← ローカルのパス
model_type: "lite" # 高画質が必要なら "pro"(より多くの GPU が必要)
compile_model: true
compile_vae: true
dist_worker_main_thread: true
infer_params:
frame_num: 33
motion_frames_latent_num: 2
tgt_fps: 20
sample_rate: 16000
sample_shift: 5
color_correction_strength: 1.0
cached_audio_duration: 8
num_heads: 12
height: 512
width: 512
live_act:
ckpt_dir: "./checkpoints/LiveAct" # ← ローカルのパス
wav2vec_dir: "./checkpoints/chinese-wav2vec2-base" # ← ローカルのパス
seed: 42
compile_wan_model: false
compile_vae_decode: false
dist_worker_main_thread: true
default_prompt: "一个人在说话"
infer_params:
size: "320*480"
fps: 20
audio_cfg: 1.0
ここでのパス編集はひとまずスキップして、あとで Web UI から調整しても構いません。
# SageAttention
pip install sageattention==2.2.0 --no-build-isolation
# FlashAttention(任意)
pip install ninja
pip install flash_attn==2.8.0.post2 --no-build-isolation
コンパイルに時間がかかる場合は、flash-attention releases からビルド済み wheel をダウンロードし、
pip install <wheel>.whlを実行してください。
make setup
これにより、基本の editable package([dev,inference])のインストール、gRPC stubs の生成、フロントエンド依存関係のインストールが行われます。追加の Python パッケージが必要な場合は、まとめて全部を入れるか(サイズ大)、pyproject.toml の [project.optional-dependencies] にある extras を必要なものだけ選んでください。
# すべての optional グループを一括でインストール
pip install -e ".[all]"
# または必要なものだけを選択。例:
pip install -e ".[voice_llm,flash_head]"
pip install -e ".[live_act]"
ターミナル 1 — Python 推論サーバー:
conda activate cyberverse
make inference
make inference は cyberverse_config.yaml の inference.avatar.default を読み取り、現在の推論プロセスではその 1 つのアバターモデルだけを初期化します。起動ログには有効なアバターモデル名が表示されます。
次のログが出るまで待ちます。
Active avatar model initialized: <model_name>CyberVerse Inference Server started on port 50051ターミナル 2 — Go API サーバー:
make server
ターミナル 3 — フロントエンド:
make frontend
# API ヘルスを確認
curl -s http://localhost:8080/api/v1/health
streaming_mode: direct で組み込み TURN を使う場合、ブラウザはサーバーの 8443/TCP に到達できる必要があります。ページは開けるのに音声・映像がいつまでも接続されない、またはサーバーログに ICE connection state: failed や publish timeout waiting for connection が出る場合は、まず手元の端末からサーバーの 8443 ポートに疎通できるか確認してください。
nc -vz <server-ip> 8443
8443 に到達できない場合、原因はクラウドのセキュリティグループ、ファイアウォール、または NAT 制限であることが一般的です。その場合は、SSH トンネルでローカルの 8443 をサーバーへ転送できます。
ssh -L 8443:127.0.0.1:8443 user@host -p port
トンネル確立後、ブラウザはローカルの 127.0.0.1:8443 経由でリモート TURN サービスへ接続します。
SSH トンネルではなくブラウザからリモートサーバーへ直接接続したい場合は、cyberverse_config.yaml の pipeline.ice_public_ip にサーバーのグローバル IP またはドメインを設定してください。SSH トンネルを使う場合は、デフォルト値(127.0.0.1)のままで構いません。
ブラウザで http://localhost:5173 を開けば準備完了です。
キャラクターや推論設定を構成し、リアルタイムのデジタルヒューマンセッションを起動します。
デジタルヒューマンを、記憶・ツール・タスク実行能力を備えたエージェントへ進化させます。
複数のエージェントを接続し、相互にコミュニケーションし、協調し、ネットワークを形成できるようにします。
GNU General Public License v3.0。詳細は LICENSE を参照してください。
SoulX-FlashHead — Soul AI Lab によるアバターモデル
SoulX-LiveAct - Soul AI Lab によるアバターモデル
Pion — Go の WebRTC 実装