OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  LatentSync — 高质量唇形同步的视频生成工具

LatentSync — 高质量唇形同步的视频生成工具

 
  bravo ·  2026-06-11 11:00:23 · 33 次点击  · 0 条评论  

LatentSync

[![arXiv](https://img.shields.io/badge/arXiv-Paper-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2412.09262) [![arXiv](https://img.shields.io/badge/%F0%9F%A4%97%20HuggingFace-Model-yellow)](https://huggingface.co/ByteDance/LatentSync-1.6) [![arXiv](https://img.shields.io/badge/%F0%9F%A4%97%20HuggingFace-Space-yellow)](https://huggingface.co/spaces/fffiloni/LatentSync) Replicate

🔥 更新

  • 2025/06/11: 发布 LatentSync 1.6,采用 512×512 分辨率视频训练,以缓解模糊问题。点击此处查看演示。
  • 2025/03/14: 发布 LatentSync 1.5,主要改进:(1) 添加时间层,提升时间一致性;(2) 提升中文视频性能;(3) 通过一系列优化将第二阶段训练所需显存降至 20 GB。更多详情请参见此处

📖 简介

我们提出 LatentSync,一种基于音频条件潜在扩散模型的端到端唇形同步方法,无需中间运动表示。与之前的基于像素空间扩散或两阶段生成的唇形同步方法不同,我们的框架能充分利用 Stable Diffusion 的强大能力,直接建模复杂的音视频关联。

🏗️ 框架

LatentSync 使用 [Whisper](https://github.com/openai/whisper) 将梅尔频谱图转换为音频嵌入,再通过交叉注意力层集成到 U-Net 中。参考帧和掩码帧与加噪后的潜在表示在通道维度上拼接,作为 U-Net 的输入。训练过程中,我们使用一步法从预测噪声中获取估计的干净潜在表示,再解码得到估计的干净帧。在像素空间中,我们添加了 TREPA、[LPIPS](https://arxiv.org/abs/1801.03924) 和 [SyncNet](https://www.robots.ox.ac.uk/~vgg/publications/2016/Chung16a/chung16a.pdf) 损失。 ## 🎬 演示

原始视频 唇形同步后的视频
(逼真视频由签约模特拍摄,动漫视频来源于 [VASA-1](https://www.microsoft.com/en-us/research/project/vasa-1/)) ## 📑 开源计划 - [x] 推理代码与模型权重 - [x] 数据处理流程 - [x] 训练代码 ## 🔧 环境配置 安装所需包并下载模型权重,请运行:
source setup_env.sh
如果下载成功,权重文件应位于以下目录:
./checkpoints/
|-- latentsync_unet.pt
|-- whisper
|   |-- tiny.pt
你也可以从我们的 [HuggingFace 仓库](https://huggingface.co/ByteDance/LatentSync-1.6) 手动下载 `latentsync_unet.pt` 和 `tiny.pt`。 ## 🚀 推理 推理所需的最低显存: - **8 GB** (LatentSync 1.5) - **18 GB** (LatentSync 1.6) 推理有两种方式: ### 1. Gradio 应用 运行 Gradio 应用进行推理:
python gradio_app.py
### 2. 命令行界面 运行脚本进行推理:
./inference.sh
你可以调整以下推理参数以获得更好的效果: - `inference_steps`[20-50]:值越高,视觉质量越好,但生成速度越慢。 - `guidance_scale`[1.0-3.0]:值越高,唇形同步精度越高,但可能导致视频失真或抖动。 ## 🔄 数据处理流程 完整的数据处理流程包含以下步骤: 1. 移除损坏的视频文件。 2. 将视频帧率重采样至 25 FPS,音频重采样至 16000 Hz。 3. 使用 [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) 进行场景检测。 4. 将每个视频切分为 5-10 秒的片段。 5. 根据 [InsightFace](https://github.com/deepinsight/insightface) 检测到的面部关键点进行仿射变换,并调整尺寸至 256×256。 6. 移除 [sync confidence score](https://www.robots.ox.ac.uk/~vgg/publications/2016/Chung16a/chung16a.pdf) 低于 3 的视频,并将音视频偏移调整至 0。 7. 计算 [hyperIQA](https://openaccess.thecvf.com/content_CVPR_2020/papers/Su_Blindly_Assess_Image_Quality_in_the_Wild_Guided_by_a_CVPR_2020_paper.pdf) 分数,移除分数低于 40 的视频。 运行脚本以执行数据处理流程:
./data_processing_pipeline.sh
请修改脚本中的 `input_dir` 参数,指定待处理的数据目录。处理后的视频将保存在 `high_visual_quality` 目录中。每一步都会创建一个新的目录,如果处理过程中意外中断,无需重复执行整个流程。 ## 🏋️‍♂️ 训练 U-Net 训练前,请按上述流程处理数据。我们发布了一个预训练的 SyncNet,在 VoxCeleb2 和 HDTF 数据集上准确率均达到 94%,可用于监督 U-Net 训练。通过以下命令下载该 SyncNet 权重:
huggingface-cli download ByteDance/LatentSync-1.6 stable_syncnet.pt --local-dir checkpoints
准备工作完成后,使用以下脚本训练 U-Net:
./train_unet.sh
我们在 `configs/unet` 目录中提供了多个 UNet 配置文件,分别对应不同训练设置: - `stage1.yaml`:第一阶段训练,需要 **23 GB** 显存。 - `stage2.yaml`:第二阶段训练(最优性能),需要 **30 GB** 显存。 - `stage2_efficient.yaml`:高效第二阶段训练,需要 **20 GB** 显存。与 `stage2.yaml` 相比,视觉质量和时间一致性可能略有下降,适合消费级 GPU(如 RTX 3090)。 - `stage1_512.yaml`:在 512×512 分辨率视频上进行第一阶段训练,需要 **30 GB** 显存。 - `stage2_512.yaml`:在 512×512 分辨率视频上进行第二阶段训练,需要 **55 GB** 显存。 同时请记得修改 UNet 配置文件中的参数,以指定数据目录、权重保存路径和其他训练超参数。为了方便,我们提供了一个生成数据文件列表的脚本。运行以下命令:
python -m tools.write_fileslist
## 🏋️‍♂️ 训练 SyncNet 如果你需要在自定义数据集上训练 SyncNet,可以运行以下脚本。SyncNet 的数据处理流程与 U-Net 相同。
./train_syncnet.sh
训练经过 `validations_steps` 步后,损失图将保存在 `train_output_dir` 中,包含训练和验证损失。如果你需要为不同图像分辨率和输入帧长度定制 SyncNet 架构,请参考[此指南](docs/syncnet_arch.md)。 ## 📊 评估 你可以通过以下脚本评估生成视频的 [sync confidence score](https://www.robots.ox.ac.uk/~vgg/publications/2016/Chung16a/chung16a.pdf):
./eval/eval_sync_conf.sh
你还可以通过以下脚本评估 SyncNet 在数据集上的准确率:
./eval/eval_syncnet_acc.sh
注意,我们发布的 SyncNet 是使用经过数据处理流程(包括仿射变换和音视频偏移调整等特殊操作)处理的数据训练的。因此,评估前必须使用提供的流程对测试数据进行预处理。 ## 🙏 致谢 - 我们的代码基于 [AnimateDiff](https://github.com/guoyww/AnimateDiff) 构建。 - 部分代码借鉴自 [MuseTalk](https://github.com/TMElyralab/MuseTalk)、[StyleSync](https://github.com/guanjz20/StyleSync)、[SyncNet](https://github.com/joonson/syncnet_python) 和 [Wav2Lip](https://github.com/Rudrabha/Wav2Lip)。 感谢他们对开源社区的慷慨贡献! ## 📖 引用 如果您觉得我们的仓库对您的研究有帮助,请考虑引用我们的论文:
@article{li2024latentsync,
  title={LatentSync: Taming Audio-Conditioned Latent Diffusion Models for Lip Sync with SyncNet Supervision},
  author={Li, Chunyu and Zhang, Chao and Xu, Weikai and Lin, Jingyu and Xie, Jinghui and Feng, Weiguo and Peng, Bingyue and Chen, Cunjian and Xing, Weiwei},
  journal={arXiv preprint arXiv:2412.09262},
  year={2024}
}
33 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 13 ms
Developed with Cursor