logo
0
0
WeChat Login
Levi<9320732+posinega@user.noreply.gitee.com>
docs : Update README files to change repository clone URL from anthropics to dsd2077 for consistency across all language versions.

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 を標準でサポートしています。

デモ

ハードウェア要件

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

モデル品質GPU枚数解像度FPSリアルタイム可?
FlashHead 1.3BProRTX 50902512×51225+✅ はい
FlashHead 1.3BProRTX 40901512×512~10.8❌ いいえ
FlashHead 1.3BProRTX PRO 60001512×51220✅ はい
FlashHead 1.3BLiteRTX 40901512×51225+✅ はい
LiveAct 18BRTX PRO 60002320×48020✅ はい
LiveAct 18BRTX PRO 60001256×41720✅ はい

Pro は画質優先、Lite は速度優先です。表は代表的な 画質と計算資源のバランス の例です。余裕があれば画質を上げられ、不足なら解像度や Pro / Lite など画質側の設定を下げてリアルタイム性を確保してください。

クイックスタート

前提条件

  • Python 3.10+
  • Node 18+
  • Go 1.22+
  • PyTorch 2.8(CUDA 12.8)
  • CUDA 12.8+ に対応した GPU
  • FFmpeg(動画エンコードのため libvpx を含むこと)

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

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

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

conda create -n cyberverse python=3.10
conda activate cyberverse

ステップ 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_3B1.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

LiveAct(SoulX-LiveAct)

モデル名ダウンロード
SoulX-LiveActHugging Face, ModelScope
chinese-wav2vec2-baseHugging 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

ステップ 5: 設定を更新する

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

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

# 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 を実行してください。

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

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]"

ステップ 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 を開けば準備完了です。

ロードマップ

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

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

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

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

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

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

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

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

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

ライセンス

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

謝辞