UniTalkerは、クリーンな音声やノイズを含む多言語音声、テキスト読み上げ生成音声、さらにはBGM付きのノイズを含む歌声など、さまざまな音声ドメインからリアルな顔のモーションを生成します。
UniTalkerは複数のアノテーション形式で出力が可能です。
新しいアノテーション形式を持つデータセットに対しては、UniTalkerに新しいヘッドをプラグインし、既存のデータセットまたは新しいデータセットのみで学習させることができ、リトポロジーが不要です。
uv syncUniTalker-B-[D0-D7]: 論文のベースモデルです。ダウンロードして ./pretrained_models に配置してください。
UniTalker-L-[D0-D7]: 論文のデフォルトモデルです。まずベースモデルでパイプラインの動作確認を行ってください。
Unitalker-data-release-V1: 公開データセット、PCAモデル、データ分割用JSONファイル、IDテンプレートのnumpy配列です。ダウンロードしてこのリポジトリ内で解凍してください。
FLAME2020: FLAME 2020をダウンロードし、generic_model.pklを resources/binary_resources/flame.pkl に移動してください。
git lfs pull を実行して ./resources.zip と ./test_audios.zip を取得し、このリポジトリ内で解凍してください。
最終的に、以下のようなファイル構成になります:
├── pretrained_models
│ ├── UniTalker-B-D0-D7.pt
│ ├── UniTalker-L-D0-D7.pt
├── resources
│ ├── binary_resources
│ │ ├── 02_flame_mouth_idx.npy
│ │ ├── ...
│ │ └── vocaset_FDD_wo_eyes.npy
│ └── obj_template
│ ├── 3DETF_blendshape_weight.obj
│ ├── ...
│ └── meshtalk_6172_vertices.obj
└── unitalker_data_release_V1
│ ├── D0_BIWI
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D1_vocaset
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D2_meshtalk
│ │ ├── id_template.npy
│ │ └── pca.npz
│ ├── D3D4_3DETF
│ │ ├── D3_HDTF
│ │ └── D4_RAVDESS
│ ├── D5_unitalker_faceforensics++
│ │ ├── id_template.npy
│ │ ├── test
│ │ ├── test.json
│ │ ├── train
│ │ ├── train.json
│ │ ├── val
│ │ └── val.json
│ ├── D6_unitalker_Chinese_speech
│ │ ├── id_template.npy
│ │ ├── test
│ │ ├── test.json
│ │ ├── train
│ │ ├── train.json
│ │ ├── val
│ │ └── val.json
│ └── D7_unitalker_song
│ ├── id_template.npy
│ ├── test
│ ├── test.json
│ ├── train
│ ├── train.json
│ ├── val
│ └── val.json
uv run python -m main.demo --config config/unitalker.yaml test_out_path ./test_results/demo.npz
uv run python -m main.render ./test_results/demo.npz ./test_audios ./test_results/Unitalker-data-release-V1 にはD5、D6、D7が含まれています。データセットは処理済みで、train、validation、testに分割されています。まずこの3つのデータセットで学習ステップをお試しください。 D0〜D7の全データセットでモデルを学習させる場合は、以下のリンクからデータセットをダウンロードしてください: D0: BIWI. D1: VOCASET. D2: meshtalk. D4,D5: 3DETF.
準備したデータセットに合わせて、config/unitalker.yaml 内の dataset と duplicate_list を変更してください。両方のリストの長さが一致するようにしてください。
uv run python -m main.train --config config/unitalker.yaml