smthemex/ComfyUI_Sonic

Sonic is a method about ' Shifting Focus to Global Audio Perception in Portrait Animation',you can use it in comfyUI

ComfyUI Sonic – ComfyUIのための音声駆動型ポートレートアニメーション

概要
Sonicは、音声トラックから静止画のポートレートをアニメーション化し、顔を「喋らせる」あるいは音に合わせた感情を表現させる研究手法です。このフォークでは、生成AIワークフローを構築するための視覚的なノードベースインターフェースである ComfyUI 用のカスタムノードとしてSonicパイプラインをパッケージ化しています。

主要コンポーネント

  • 音声から潜在空間への変換モデル (audio2bucket.pth, audio2token.pth):波形をビデオモデルが理解できるトークンシーケンスに変換します。
  • UNetビデオ拡散モデル (unet.pth):音声トークンを条件としてフレームを生成します。
  • 顔検出器 (yoloface_v5m.pt):ポートレート領域を特定します。
  • OpenAI Whisper-tiny:音声の文字起こしに使用します(オリジナルのSonicパイプラインで使用)。
  • RIFEオプティカルフローモデル (flownet.pkl):時間的な平滑化に使用します。
  • オプションの Stable Video Diffusion (SVD) チェックポイント (svd_xt*.safetensors):より高品質な動画生成に使用します。

使用方法

  1. リポジトリを ComfyUI/custom_node にクローンします。
  2. pip install -r requirements.txt でPythonの依存関係をインストールします。
  3. READMEに記載されているモデルファイルをダウンロードし、ComfyUI/models/sonic/ に配置します(SVDチェックポイントは ComfyUI/models/checkpoints に配置)。
  4. ComfyUIのグラフエディタで Sonic ノードを追加します。
    • 音声ファイル(またはWhisperで生成したトランスクリプト)を入力します。
    • duration(秒)を設定して出力動画の長さを制御します。
    • GPUメモリが不足する場合は image_size を調整してください。値を小さくすると解像度が下がります。
    • ノードは音声と同期して動くポートレートの短い動画を出力します。

このフォークの変更点

  • torchaudio.save を soundfile.write に置き換え、新しいPyTorchビルドでのABI不一致を回避しました。
  • cuda:0 を明示的に使用する必要があるマシンへの修正を行いました。
  • BF16サポート、初回実行時の12GB GPU OOM、およびApple-MPS (Mac) 互換性への回避策を追加しました。
  • UIの調整:「frame number」を duration に名称変更、25 fps以外の入力に対するバッチサイズ処理、非正方形の出力画像のサポートを追加しました。

典型的なワークフロー例
READMEには3つのワークフローのスクリーンショット例が掲載されています。ユーザーはポートレート画像を読み込み、音声ファイルを接続し、希望の時間を設定してグラフを実行することで、短いアニメーションクリップを取得できます。

対象ユーザー

  • コードを書かずに、AI駆動のリップシンクや表情豊かなアバター動画を素早く作成したいクリエイター。
  • コマンドラインスクリプトよりも視覚的なUIを好み、音声駆動型ビデオ拡散を実験している研究者。
  • ComfyUIで他の拡散タスクを行っており、音声駆動型アニメーションノードをパイプラインに追加したい愛好家。

引用
このノードを使用した作品を公開する場合は、オリジナルのSonic論文 (arXiv:2411.16331) および関連するRealTalk論文 (arXiv:2406.18284) を引用してください。

関連

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