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秒)に分割し、ハビット条件付きの口の動き生成器に供給します。フローマッチングポーズブランチ(またはDitto音声駆動ポーズ)が頭の動きを提供します。生成されたフレームは元のソースに合成され、ブラウザにストリーミングされます。
- チャット統合 – サーバーはユーザーのテキストまたは録音された発話を設定された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 までお願いします。
関連
- プロジェクト
- プロジェクト
- プロジェクト