Easy-Wav2Lip 是一个开源项目,旨在让 Wav2Lip 的高质量唇形同步变得简单易用。它提供了 Google Colab 和本地安装两种方式,简化了安装和运行流程。
主要能力
- 简化设置与执行:在 Colab 上只需执行两个单元格;Windows 用户只需一个批处理文件即可安装、更新和运行。
- 提升速度:官方测试显示,处理 9 秒 720p 60fps 视频的时间从近 7 分钟缩短到不到 1 分钟。
- 改进视觉效果:修复嘴唇上的视觉瑕疵,并提供三种质量选项:基础 Wav2Lip、改进(使用羽化蒙版恢复面部其他区域的原始分辨率)、增强(Wav2Lip + 蒙版 + GFPGAN 对面部进行放大)。
- 缓存跟踪数据:同一视频的多次生成会保存跟踪数据,进一步节省时间。
- 详细文档:提供了配置选项中各项设置的说明。
使用方式
Google Colab 版本
访问提供的 Colab 链接,执行两个单元格即可。这是最简单且兼容性最好的方式。 链接:https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
本地安装
要求:Nvidia 显卡支持 CUDA 12.2,或 MacOS 设备支持 MPS(Apple Silicon 或 AMD GPU)。
自动安装(Windows 64位):
- 下载 Easy-Wav2Lip.bat
- 将其放在电脑上的某个文件夹中
- 运行并按照说明操作。它会在运行目录下创建 Easy-Wav2Lip 文件夹。
- 以后每次使用只需运行此文件。
手动安装: 确保终端可访问以下组件:Python 3.10(仅测试了 3.10.11)、Git、Windows & Linux 需要 CUDA(最新 Nvidia 驱动即可,仅测试 12.2)。
Windows 手动安装:
- 打开 cmd,使用 cd 导航到安装目录。
- 复制并粘贴以下代码(注意:会创建两个文件夹:Easy-Wav2Lip 和 Easy-Wav2Lip-venv):
git clone https://github.com/anothermartz/Easy-Wav2Lip.git
cd Easy-Wav2Lip
python -m venv ../Easy-Wav2Lip-venv
call ../Easy-Wav2Lip-venv/Scripts/activate
python -m pip install --upgrade pip
pip install ffmpeg-python
pip install -r requirements.txt
- 运行:关闭并重新打开 cmd,cd 到同一目录,粘贴:
call ../Easy-Wav2Lip-venv/Scripts/activate
python run.py
MacOS 和 Linux 安装(未测试):
- 打开终端,使用 cd 导航到安装目录。
- 复制并粘贴以下代码:
git clone https://github.com/anothermartz/Easy-Wav2Lip.git
cd Easy-Wav2Lip
python3 -m venv ../Easy-Wav2Lip-venv
source ../Easy-Wav2Lip-venv/bin/activate
python -m pip install --upgrade pip
pip install ffmpeg-python
pip install -r requirements.txt
- 运行:关闭并重新打开终端,cd 到同一目录,粘贴:
source ../Easy-Wav2Lip-venv/bin/activate
python run.py
安装完成后,会弹出 config.ini 文件。在此添加视频和音频文件的路径,并配置设置。保存并关闭后,将开始 Wav2Lip 处理,输出文件保存在 video_path 文件同一目录下。
高级调整
- wav2lip_version:建议先尝试 Wav2Lip,如果出现牙齿间隙大的效果再切换到 GAN 版本。
- nosmooth:启用后 wav2lip 会独立裁剪每一帧的脸部,适合快速运动或视频剪辑;禁用则会在5帧之间混合检测到的脸部位置,适合慢速运动。
- pads:控制每个方向从脸部裁剪中添加或移除的像素数。通常底部加10像素,但需实验。
- mask:控制处理后的脸部如何与原脸部混合。size 增加蒙版覆盖区域,feathering 决定混合程度,mouth_tracking 每帧更新蒙版位置(较慢)。
- debug_mask:将背景变为灰度,蒙版显示为彩色,便于查看蒙版位置。
批量处理
- 将文件以数字结尾命名(如 Video1.mp4, Video2.mp4),放在同一文件夹。
- 按数字顺序处理。可混合编号视频与非编号音频,或非编号视频与编号音频。
- 会为输出文件添加后缀以避免覆盖原文件。
- include_settings_in_suffix 可添加所用设置,便于比较。
最佳实践
- 在通过 wav2lip 之前,最好将语音与说话者的动作和表情对齐。
- 所有帧中必须有人脸,否则会失败。
- 裁剪或遮罩掉不想同步的脸部,否则会随机选择。
- 使用 h264 .mp4 格式。
- 使用小文件(<720p, <30秒, 30fps等)尝试。
- 音频保存为 .wav,长度与输入视频相同。注意处理后会截掉约80ms。
适用场景
适用于需要为视频进行唇形同步的场景,如制作虚拟主播、视频配音、动画制作等。
限制
- 本地安装需要特定硬件和软件环境。
- 处理大文件可能失败。
- 输出格式为 h264 .mp4(其他格式可能支持但未测试)。
- 音频会截掉约80ms,需要额外预留。
致谢
本项目基于 Wav2Lip,速度提升和基础质量改进来自 cog-Wav2Lip,GFPGAN 放大代码主要来自 wav2lip-hq-updated-ESRGAN。