MCPcopy Index your code
hub / github.com/Lynpoint/CyberVerse

github.com/Lynpoint/CyberVerse @v0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.0 ↗ · + Follow
2,730 symbols 8,113 edges 239 files 502 documented · 18%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CyberVerse

CyberVerse は、リアルタイムのビデオ通話に対応したオープンソースのデジタルヒューマン・エージェント・プラットフォームです。ビデオ通話のように、顔を見ながら会話できる AI エージェントを作成できます。

English · 简体中文 · 日本語 · 한국어

License: GPL v3 PRs Welcome

CyberVerse logo


たった一枚の写真から、息づくデジタルヒューマンへ。

あなたを本当に見て、聞いて、リアルタイムで話しかけてくれる、自分だけの 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 を標準でサポートしています。

デモ

ここに表示しているキャラクターはデモ例です。CyberVerse に同梱されておらず、商用利用向けには提供されません。

CyberVerse キャラクター選択ギャラリー

CyberVerse キャラクター例ギャラリー

Alice — YouTube で見る Lina — YouTube で見る
Xiaolongnü — YouTube で見る

ハードウェア要件

リアルタイムのビデオ会話には GPU アクセラレーションが必要です。以下は FlashHead と LiveAct アバターモデルのベンチマークです。

モデル 品質 GPU 枚数 解像度 FPS リアルタイム可?
FlashHead 1.3B Pro RTX 5090 2 512×512 25+ ✅ はい
FlashHead 1.3B Pro RTX 5090 1 464x464 20 ✅ はい
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 など画質側の設定を下げてリアルタイム性を確保してください。

クイックスタート

前提条件

  • Python 3.10+
  • Node 18+
  • Go 1.25(必須: protoc-gen-go, protoc-gen-go-grpc
  • PyTorch 2.8(CUDA 12.8)
  • CUDA 12.8+ に対応した GPU
  • FFmpeg(動画エンコードのため libvpx を含むこと)

確認には次を実行します:

node --version
go version
protoc --version
ffmpeg -version|grep libvpx
conda --version

ステップ 1: クローンする

git clone https://github.com/dsd2077/CyberVerse.git
cd CyberVerse

ステップ 2: Python 環境を作成する

conda create -n cyberverse python=3.10
conda activate cyberverse

この環境で PyTorch(CUDA 12.8)をインストールします:

pip3 install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128

ステップ 3: 環境変数を設定する

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 から変更できます。

ステップ 4: モデル重みをダウンロードする

CyberVerse は現在 FlashHeadLiveAct の 2 モデルに対応しています。必要なものだけダウンロードしてください。今後、さらにバックエンドを追加する予定です。

pip install "huggingface_hub[cli]"

FlashHead(SoulX-FlashHead)

モデルコンポーネント 説明 リンク
SoulX-FlashHead-1_3B 1.3B FlashHead 重み Hugging Face
wav2vec2-base-960h 音声特徴抽出器 Hugging Face, ModelScope
# 中国本土から利用する場合は、先にミラーを設定できます:
# export HF_ENDPOINT=https://hf-mirror.com

hf download Soul-AILab/SoulX-FlashHead-1_3B \
  --local-dir ./checkpoints/SoulX-FlashHead-1_3B

hf download facebook/wav2vec2-base-960h \
  --local-dir ./checkpoints/wav2vec2-base-960h

LiveAct(SoulX-LiveAct)

モデル名 ダウンロード
SoulX-LiveAct Hugging Face, ModelScope
chinese-wav2vec2-base Hugging Face, ModelScope
hf download Soul-AILab/LiveAct \
  --local-dir ./checkpoints/LiveAct

hf download TencentGameMate/chinese-wav2vec2-base \
  --local-dir ./checkpoints/chinese-wav2vec2-base

ステップ 5: ローカル設定を作成して更新する

cp infra/cyberverse_config.example.yaml cyberverse_config.yaml

ローカルの cyberverse_config.yaml を編集し、モデルパスをローカルの checkpoint パスに合わせて更新します。このファイルは git で無視されるため、ローカルパスやデプロイ設定が上流の更新と衝突しません。

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 から調整しても構いません。

ステップ 6: SageAttention と FlashAttention をインストールする(任意)

# SageAttention(ソースからビルド)
git clone https://github.com/thu-ml/SageAttention.git
cd SageAttention
export EXT_PARALLEL=4 NVCC_APPEND_FLAGS="--threads 8" MAX_JOBS=32 # Optional
python setup.py install
# FlashAttention(任意)
pip install ninja
pip install flash_attn==2.8.0.post2 --no-build-isolation

コンパイルに時間がかかる場合は、flash-attention releases からビルド済み wheel をダウンロードし、pip install <wheel>.whl を実行してください。

ステップ 7: プロジェクト依存関係をインストールする

make setup

これにより、基本の editable package([dev,inference])のインストール、gRPC stubs の生成、フロントエンド依存関係のインストールが行われます。追加の Python パッケージが必要な場合は、まとめて全部を入れるか(サイズ大)、pyproject.toml[project.optional-dependencies] にある extras を必要なものだけ選んでください。

# すべての optional グループを一括でインストール
pip install -e ".[all]"

# または必要なものだけを選択。例:
pip install -e ".[omni,flash_head]"
pip install -e ".[live_act]"

ステップ 8: サービスを起動する(3 つのターミナル)

ターミナル 1 — Python 推論サーバー:

conda activate cyberverse
make inference

make inferencecyberverse_config.yamlinference.avatar.default を読み取り、現在の推論プロセスではその 1 つのアバターモデルだけを初期化します。起動ログには有効なアバターモデル名が表示されます。

次のログが出るまで待ちます。

  • Active avatar model initialized: <model_name>
  • CyberVerse Inference Server started on port 50051

ターミナル 2 — Go API サーバー:

make server

ターミナル 3 — フロントエンド:

make frontend

ステップ 9: 確認する

# API ヘルスを確認
curl -s http://localhost:8080/api/v1/health

リモートアクセス時は 8443/TCP の疎通を確認する

streaming_mode: direct で組み込み TURN を使う場合、ブラウザはサーバーの 8443/TCP に到達できる必要があります。ページは開けるのに音声・映像がいつまでも接続されない、またはサーバーログに ICE connection state: failedpublish 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.yamlpipeline.ice_public_ip にサーバーのグローバル IP またはドメインを設定してください。SSH トンネルを使う場合は、デフォルト値(127.0.0.1)のままで構いません。

ブラウザで http://localhost:5173 を開けば準備完了です。

ロードマップ

1. デジタルヒューマン作成プラットフォーム

キャラクターや推論設定を構成し、リアルタイムのデジタルヒューマンセッションを起動します。

  • [x] 複数の参照画像、アクティブ画像、固定 / ランダム表示モード、任意の顔切り抜き、タグ、音声フィールド、人格、ウェルカムメッセージ、システムプロンプトを備えたキャラクター CRUD
  • [x] 参照画像から、設定可能な Avatar プラグイン(FlashHead、LiveAct など)でリアルタイムのアバター映像を駆動
  • [x] WebRTC によるリアルタイム音声・映像。直接 P2P(組み込み TURN)または LiveKit SFU
  • [x] avatar、omni model、LLM、TTS、ASR をプラグインとして提供し、YAML で各ベンダーの API キーを設定可能(現状は豆包音声のキー 1 つで実行可能)
  • [x] セッション管理:キャラクター単位で会話履歴をディスクに永続化し、会話開始時に読み込み
  • [x] 音声クローン:豆包音声の音声クローンに対応
  • [x] 音声とテキストのハイブリッド入力に対応
  • [x] モデル発話中の音声割り込みとセッションの中断・再開
  • [x] Face-to-face:ユーザー側のカメラ / 画面入力
  • [ ] 知識・文書・人物の生平などの素材を取り込み、キャラクターに沿った RAG による回答
  • [ ] 開発者向けのサイト埋め込み(Web コンポーネントまたは SDK)、自己ホストしたインスタンスを自サイトへ接続
  • [ ] ライブ配信向けの音声・映像ストリーミング

2. デジタルヒューマン・エージェント

デジタルヒューマンを、記憶・ツール・タスク実行能力を備えたエージェントへ進化させます。

  • [ ] 記憶システム:セッションをまたぐ長期記憶と、キャラクター知識ベース・RAG の連携により、人物背景と対話の一貫性を強化
  • [ ] ツール利用と function calling を追加
  • [ ] ワークフロー実行とタスク完了機能を追加

3. エージェントネットワーク

複数のエージェントを接続し、相互にコミュニケーションし、協調し、ネットワークを形成できるようにします。

  • [ ] agent-to-agent 通信を有効化
  • [ ] マルチエージェント協調と委譲を有効化
  • [ ] エージェント間の共有メモリと共有知識を有効化
  • [ ] 接続されたエージェントのオープンネットワークを構築

ライセンス

GNU General Public License v3.0。詳細は LICENSE を参照してください。

謝辞

Extension points exported contracts — how you extend this code

InferenceService (Interface)
InferenceService defines the interface for communicating with the Python inference layer. Using an interface allows test [4 …
server/internal/inference/interfaces.go
ImageInfo (Interface)
(no doc)
frontend/src/types/index.ts
MediaPeer (Interface)
MediaPeer is the common interface for media transport backends. [2 implementers]
server/internal/mediapeer/mediapeer.go
Character (Interface)
(no doc)
frontend/src/types/index.ts
SignalingFunc (FuncType)
SignalingFunc sends a signaling message to the browser via the WebSocket hub.
server/internal/direct/peer.go
CharacterComponents (Interface)
(no doc)
frontend/src/types/index.ts
ComponentOption (Interface)
(no doc)
frontend/src/types/index.ts
ComponentsResponse (Interface)
(no doc)
frontend/src/types/index.ts

Core symbols most depended-on inside this repo

get
called by 382
inference/core/registry.py
writeJSON
called by 75
server/internal/api/handlers.go
device
called by 62
models/SoulX-LiveAct/kokoro/model.py
Handler
called by 44
server/internal/api/router.go
Close
called by 31
server/internal/inference/interfaces.go
encode_frame
called by 26
inference/plugins/voice_llm/doubao_protocol.py
load
called by 24
server/internal/character/store.go
from_pretrained
called by 23
models/flash_head/ltx_video/models/transformers/transformer3d.py

Shape

Method 1,565
Function 745
Class 237
Struct 133
Interface 43
Route 4
TypeAlias 2
FuncType 1

Languages

Python58%
Go37%
TypeScript5%

Modules by API surface

server/internal/pb/voice_llm.pb.go91 symbols
server/internal/orchestrator/orchestrator.go90 symbols
models/SoulX-LiveAct/lightx2v/models/video_encoders/hf/wan/vae.py67 symbols
models/SoulX-LiveAct/model_liveact/model_memory_sp.py64 symbols
models/SoulX-LiveAct/model_liveact/model_memory.py59 symbols
models/flash_head/wan/modules/vae.py57 symbols
server/internal/pb/avatar.pb.go54 symbols
inference/plugins/avatar/live_act_plugin.py54 symbols
server/internal/pb/common.pb.go50 symbols
server/internal/pb/tts.pb.go46 symbols
server/internal/orchestrator/session.go43 symbols
server/internal/pb/llm.pb.go42 symbols

For agents

$ claude mcp add CyberVerse \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact