该项目商用需要通过原作者
说明
该项目可以将语音和视频或图片结合生成数字人。
大家多关注,后续会把llm、RAG、AGENT、TTS、ASR等结合起来,形成一套完整的系统
显卡硬件资源
显卡: 2080ti
开始部署
下载源码
git clone https://github.com/Rudrabha/Wav2Lip
cd /root/Wav2Lip
pip install -r requirements.txt
下载模型
下载好以后wav2lip_gan.pth 放在checkpoints目录下
s3fd.pth存放到face_detection/detection/sfd/目录下
通过视频和声音进行合成
音频源可以是 FFMPEG 支持的任何文件,包含音频数据: *.wav 、 *.mp3 ,甚至是视频文件,代码会自动从中提取音频。
大约需要30s,合成好的视频默认放在了results/result_voice.mp4目录下
python inference.py --checkpoint_path checkpoints/wav2lip.pth --face my_data/byc.mp4 --audio my_data/zero_shot_0.wav
通过图片和声音进行合成
大约需要15s,显卡最高占用8G
python inference.py --checkpoint_path checkpoints/wav2lip.pth --face my_data/fac.jpg --audio my_data/zero_shot_0.wav
其他参数建议
- 通过调整 --pads 参数来实验检测到的面部边界框。这通常能带来更好的结果。你可能需要增加底部填充以包含下巴区域。例如, --pads 0 20 0 0
- 如果你发现嘴巴位置错位或出现如双嘴等奇怪的伪影,这可能是因为面部检测过度平滑所致。请使用 --nosmooth 参数并再试一次。
- 尝试使用 --resize_factor 参数来生成低分辨率视频。为什么呢?因为模型是在较低分辨率的人脸数据上训练的。对于 720p 视频,你可能会获得更好、视觉效果更佳的结果,而 1080p 视频在许多情况下也能表现良好。
- Wav2Lip 模型在没有 GAN 的情况下,通常需要对上述两者进行更多实验以获得最理想的结果,有时也能提供更好的效果。准备用于训练的 LRS2 数据集。
训练
快速训练预处理数据集
python preprocess.py --data_root data_root/main --preprocessed_root lrs2_preprocessed/
python color_syncnet_train.py --data_root lrs2_preprocessed/ --checkpoint_dir <folder_to_save_checkpoints>
python wav2lip_train.py --data_root lrs2_preprocessed/ --checkpoint_dir <folder_to_save_checkpoints> --syncnet_checkpoint_path <path_to_expert_disc_checkpoint>
报错解决
ModuleNotFoundError: No module named ‘scipy’
pip install scipy
ModuleNotFoundError: No module named ‘cv2’
pip install opencv-python
ModuleNotFoundError: No module named ‘librosa’
pip install librosa
ModuleNotFoundError: No module named ‘tqdm’
pip install tqdm
TypeError: mel() takes 0 positional arguments but 2 positional arguments (and 3 keyword-only arguments) were given
AttributeError: module ‘numpy’ has no attribute ‘complex’.
pip install librosa==0.8.9
pip install numpy==1.23.1