Upload folder using huggingface_hub
Browse files- README.md +91 -0
- lipforcing_14b.pth +3 -0
- teacher/omniavatar_ls_14b.pt +3 -0
README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
base_model: Wan-AI/Wan2.1-T2V-14B
|
| 4 |
+
tags:
|
| 5 |
+
- lip-sync
|
| 6 |
+
- talking-head
|
| 7 |
+
- video-to-video
|
| 8 |
+
- video-generation
|
| 9 |
+
- diffusion
|
| 10 |
+
- autoregressive
|
| 11 |
+
- distillation
|
| 12 |
+
- wan2.1
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# Lip Forcing: Few-Step Autoregressive Diffusion for Real-time Lip Synchronization
|
| 16 |
+
|
| 17 |
+
[Paper (arXiv:2606.11180)](https://arxiv.org/abs/2606.11180) ·
|
| 18 |
+
[Project page](https://cvlab-kaist.github.io/LipForcing/) ·
|
| 19 |
+
[Code (GitHub)](https://github.com/cvlab-kaist/LipForcing)
|
| 20 |
+
|
| 21 |
+
<p align="center"><img src="https://cvlab-kaist.github.io/LipForcing/assets/main_arch.png" width="95%" alt="Lip Forcing architecture"></p>
|
| 22 |
+
|
| 23 |
+
**Lip Forcing** is, to our knowledge, the first autoregressive diffusion method for
|
| 24 |
+
video-to-video (V2V) lip synchronization. It distills a high-fidelity bidirectional 14B
|
| 25 |
+
audio-conditioned teacher (*OmniAvatar-LS*, our lip-sync finetune of OmniAvatar) into causal
|
| 26 |
+
few-step students that generate each chunk in just **two denoising steps with no
|
| 27 |
+
inference-time CFG** - enabling real-time, streaming lip-sync on a reference video with
|
| 28 |
+
sub-millisecond time-to-first-frame.
|
| 29 |
+
|
| 30 |
+
## Files in this repository
|
| 31 |
+
|
| 32 |
+
| File | What | For |
|
| 33 |
+
|------|------|-----|
|
| 34 |
+
| `lipforcing_14b.pth` | 14B student - merged, self-contained (base Wan + OmniAvatar-LS adapter + Self-Forcing student baked into one file) | inference |
|
| 35 |
+
| `teacher/omniavatar_ls_14b.pt` | OmniAvatar-LS 14B V2V adapter (frozen distillation teacher + student init) | training |
|
| 36 |
+
| *1.3B student* | *coming soon (same repo)* | |
|
| 37 |
+
|
| 38 |
+
## Quickstart
|
| 39 |
+
|
| 40 |
+
Install the code from [GitHub](https://github.com/cvlab-kaist/LipForcing):
|
| 41 |
+
|
| 42 |
+
```bash
|
| 43 |
+
git clone https://github.com/cvlab-kaist/LipForcing.git && cd LipForcing
|
| 44 |
+
conda create -y -n lipforcing python=3.12 && conda activate lipforcing
|
| 45 |
+
pip install -e .
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
Download this checkpoint plus the small external encoders/decoders (commands for every
|
| 49 |
+
component are in the repo README's *Weights* section), then:
|
| 50 |
+
|
| 51 |
+
```bash
|
| 52 |
+
python scripts/inference/inference_streaming.py \
|
| 53 |
+
--ckpt_path weights/lipforcing_14b.pth \
|
| 54 |
+
--vae_path weights/Wan2.1-T2V-14B/Wan2.1_VAE.pth \
|
| 55 |
+
--wav2vec_path weights/wav2vec2-base-960h \
|
| 56 |
+
--mask_path weights/mask.png \
|
| 57 |
+
--taehv_ckpt weights/taew2_1.pth \
|
| 58 |
+
--text_encoder_path weights/Wan2.1-T2V-14B/models_t5_umt5-xxl-enc-bf16.pth \
|
| 59 |
+
--video_path ref.mp4 --audio_path speech.wav --output_path out.mp4
|
| 60 |
+
```
|
| 61 |
+
|
| 62 |
+
Streaming inference encodes, denoises, decodes, and composites each AR chunk on the fly -
|
| 63 |
+
first frames arrive before the clip finishes, GPU memory stays constant for any clip length
|
| 64 |
+
(**~37 GB** peak at 14B with precomputed text embeddings; ~50 GB with runtime T5 encoding),
|
| 65 |
+
and face detection + 512×512 alignment + paste-back run automatically, so any talking-head
|
| 66 |
+
video works as input.
|
| 67 |
+
|
| 68 |
+
Training (two stages: Diffusion-Forcing init, then Self-Forcing DMD distillation with the
|
| 69 |
+
SyncNet reward) is documented in the repo's
|
| 70 |
+
[README](https://github.com/cvlab-kaist/LipForcing#training) and
|
| 71 |
+
[DATA.md](https://github.com/cvlab-kaist/LipForcing/blob/master/DATA.md).
|
| 72 |
+
|
| 73 |
+
## Acknowledgements
|
| 74 |
+
|
| 75 |
+
Builds on [NVIDIA FastGen](https://github.com/NVlabs/FastGen),
|
| 76 |
+
[Self Forcing](https://github.com/guandeh17/Self-Forcing),
|
| 77 |
+
[Reward-Forcing](https://github.com/JaydenLyh/Reward-Forcing),
|
| 78 |
+
[OmniAvatar](https://github.com/Omni-Avatar/OmniAvatar), and
|
| 79 |
+
[Wan2.1](https://github.com/Wan-Video/Wan2.1). Third-party licenses ship in the
|
| 80 |
+
[code repository](https://github.com/cvlab-kaist/LipForcing/tree/master/licenses).
|
| 81 |
+
|
| 82 |
+
## Citation
|
| 83 |
+
|
| 84 |
+
```bibtex
|
| 85 |
+
@article{cho2026lipforcing,
|
| 86 |
+
title = {Lip Forcing: Few-Step Autoregressive Diffusion for Real-time Lip Synchronization},
|
| 87 |
+
author = {Cho, Paul Hyunbin and Jang, Jinhyuk and Lee, SeokYoung and Lee, Joungbin and Jin, Siyoon and Shin, Heeseong and Yi, Jung and Park, Yunjin and Park, Chulmin and Kim, Seungryong},
|
| 88 |
+
journal = {arXiv preprint arXiv:2606.11180},
|
| 89 |
+
year = {2026},
|
| 90 |
+
}
|
| 91 |
+
```
|
lipforcing_14b.pth
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ea9f111f374a208a80b6604e2c698639f03ad666bb7cda72c727a93cd43e4307
|
| 3 |
+
size 28588528943
|
teacher/omniavatar_ls_14b.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b7e2d22592fa20d5622e82fdd2c3cc9fab9ca5c2fb080306ccd877d9e6b9fa45
|
| 3 |
+
size 1238964875
|