BQ-Wang0511/TalkLikeYou-Streaming-RealTime-Demo

Real-time browser demo for Talk Like You

TalkLikeYou – 実時間対応トークヘッドデモ

機能概要 – ブラウザベースのデモで、静止画(または動画)のポートレートを、アップロードした音声、リアルタイムマイク入力、またはチャットLLMによって生成された発話に合わせて口パクりするトークヘッドに変換します。既存の動画をダブすることも可能で、元のポーズとタイミングを維持しつつ、口の動きだけを置き換えられます。また、LLMの返答、TTS音声、アバターのアニメーションを統合してストリーミングするチャットエージェントとしても動作します。

主な機能

  • 音声モード – 画像アバターをアップロードし、音声ファイルまたはリアルタイムマイク入力を供給することで、リアルタイムで口の動きを生成します。
  • 動画ダブモード – ソース動画と新しい音声トラックを提供します。デモは元の頭のポーズを維持し、発話に関連する口の動きのみを置き換えます。
  • チャットエージェント – 任意のOpenAI互換チャット、STT、TTSサービスに接続できます。テキストまたは音声によるユーザー入力をLLMに送信し、返答はテキスト、音声合成、同期されたアバターアニメーションとしてストリーミングされます。
  • プリセットの発話スタイル – 「ハビットID」(例:192、166、202)を使用して、参照動画なしで異なる口の動きスタイルを切り替えられます。
  • 実時間性能 – NVIDIA RTX 3090では30 FPS以上で動作し、GPUメモリ使用量は4 GB未満。高精細な顔面詳細を実現します。

動作概要(高レベル)

  1. アバター登録 – アップロードされた画像/動画から顔を検出し、切り出し、アバター特徴(中立的な口の動きシェルを含む)をキャッシュします。これはアバター1つにつき1回のみ実行されます。
  2. ストリーミングレンダラー – 音声をチャンク(デフォルト1秒)に分割し、ハビット条件付きの口の動き生成器に供給します。フローマッチングポーズブランチ(またはDitto音声駆動ポーズ)が頭の動きを提供します。生成されたフレームは元のソースに合成され、ブラウザにストリーミングされます。
  3. チャット統合 – サーバーはユーザーのテキストまたは録音された発話を設定されたLLMおよびTTSエンドポイントに転送します。各トークン/セグメントが到着するたびに、対応する音声とアバターフレームが生成され、表示されます。

インストール

# conda環境を作成(Python 3.10、CUDA 12.1、cuDNN 9)
conda env create -f environment.yaml
conda activate talklikeyou-demo
# またはPyTorchを手動でインストール後:
pip install -r requirements.txt

要件:Linux、NVIDIA GPU、FFmpeg。

デモの実行

cd TalkLikeYou-Streaming-RealTime-Demo
CUDA_VISIBLE_DEVICES=0 python app.py --host 0.0.0.0 --port 5070
# ブラウザで http://127.0.0.1:5070 を開く
  • UIで 音声、動画ダブ、または チャットエージェント を選択します。
  • 画像(音声/チャット)または動画(動画ダブ)をアップロードし、アバターを登録します。
  • 音声モードでは、音声ファイルを選択するか、ライブマイクを有効にして ストリーミング開始 をクリックします。
  • 動画ダブモードでは、ソース動画と音声ファイルをアップロードし、ストリーミングを開始します。
  • チャットエージェントでは、環境変数(または .env ファイル)でLLM/STT/TTSエンドポイントを設定し、チャットボックスで対話します。

設定のハイライト

  • ハビットID(Lip person ID)は発話スタイルを制御します。推奨値は192、166、202です。
  • ガイドランス強度(Lip guidance、Pose guidance)は、モデルが選択したハビットにどれだけ強く従うかを調整します。
  • サンプリングステップ数 – 実時間設定は1ステップ。ステップ数を増やすとレイテンシが増加します。
  • チャンクサイズ – Motion chunk (frames) と Audio chunk (seconds) はレイテンシとスループットのトレードオフを調整します。
  • Dittoポーズ – 有効にすると、画像アバターにDittoの音声駆動ポーズ生成器を使用します。無効にすると、ポーズハビットを選択できます。
  • チャットエージェント – TALKLIKEYOU_LLM_BASE_URL、TALKLIKEYOU_LLM_API_KEY などを任意のOpenAI互換サービスに設定できます。同様にSTTおよびTTSにも設定可能です。

モデルチェックポイント

  • Hugging Faceリポジトリ doubi-killer/TalkLikeYou から必要なチェックポイントをダウンロードし、READMEに従ってローカルの checkpoints/ ディレクトリに配置してください(音声エンコーダ、lip_motion.pt、pose_motion.pt、ランタイムアセット)。
  • デモには runtime_config.pkl が同梱されており、これらのローカルパスを指しています。

ライセンス

  • デモコード:MITライセンス。
  • サードパーティコンポーネント(Ditto、LivePortrait)はそれぞれのオリジナルライセンスを維持します(THIRD_PARTY_NOTICES.md を参照)。

誰が使うか

  • 実時間口パクりとアバターアニメーションを研究する研究者。
  • インタラクティブなバーチャルエージェント、ストリーミングアバター、動画ダブツールを開発する開発者。
  • クラウド推論なしで軽量なローカル実行型トークヘッドデモを求めるクリエイター。

連絡先 – 質問は wangbaiqin0511@gmail.com までお願いします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト