语音驱动数字人唇形模型:SadTalker-Video-Lip-Sync

1 项目介绍

本项目基于SadTalkers实现视频唇形合成的Wav2lip。通过以视频文件方式进行语音驱动生成唇形,设置面部区域可配置的增强方式进行合成唇形(人脸)区域画面增强,提高生成唇形的清晰度。使用DAIN 插帧的DL算法对生成视频进行补帧,补充帧间合成唇形的动作过渡,使合成的唇形更为流畅、真实以及自然。

项目结构:

复制代码
SadTalker-Video-Lip-Sync
├──checkpoints
|   ├──BFM_Fitting
|   ├──DAIN_weight
|   ├──hub
|   ├── ...
├──dian_output
|   ├── ...
├──examples
|   ├── audio
|   ├── video
├──results
|   ├── ...
├──src
|   ├── ...
├──sync_show
├──third_part
|   ├── ...
├──...
├──inference.py
├──README.md

代码地址:https://github.com/Zz-ww/SadTalker-Video-Lip-Sync

2 项目部署与运行

2.1 conda环境准备

conda环境准备详见:annoconda

2.2 运行环境构建

复制代码
git clone https://github.com/Zz-ww/SadTalker-Video-Lip-Sync.git
cd SadTalker-Video-Lip-Sync/

conda create -n lipsyn python=3.8
conda activate lipsyn

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
conda install ffmpeg

pip install -r requirements.txt
pip install ninja

python -m pip install paddlepaddle-gpu==2.3.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

2.3 预训练模型下载

预训练模型下载后,存储在checkpoints路径下:

【地址1】百度网盘:百度网盘 请输入提取码 提取码:klfv

【地址2】谷歌网盘:https://drive.google.com/file/d/1lW4mf5YNtS4MAD7ZkAauDDWp2N3_Qzs7/view?usp=sharing

【地址3】夸克网盘:夸克网盘分享 提取码:zMBP

下载完成后显示如下:

复制代码
├──checkpoints
|   ├──BFM_Fitting
|   ├──DAIN_weight
|   ├──hub
|   ├──auido2exp_00300-model.pth
|   ├──auido2pose_00140-model.pth
|   ├──epoch_20.pth
|   ├──facevid2vid_00189-model.pth.tar
|   ├──GFPGANv1.3.pth
|   ├──GPEN-BFR-512.pth
|   ├──mapping_00109-model.pth.tar
|   ├──ParseNet-latest.pth
|   ├──RetinaFace-R50.pth
|   ├──shape_predictor_68_face_landmarks.dat
|   ├──wav2lip.pth

2.4 启动项目推理

命令行格式如下:

复制代码
python inference.py --driven_audio <audio.wav> \
                    --source_video <video.mp4> \
                    --enhancer <none,lip,face> \  #(默认lip)
                    --use_DAIN \ #(使用该功能会占用较大显存和消耗较多时间)
             		--time_step 0.5 #(插帧频率,默认0.5,即25fps--->50fps;0.25,即25fps--->100fps)

使用示例:

复制代码
 python inference.py --driven_audio examples/driven_audio/demo.wav --source_video examples/driven_video/demo.mp4 --enhancer lip --use_DAIN --time_step 0.5

2.5 合成效果

复制代码
#合成效果展示在./sync_show目录下:
#original.mp4 原始视频
#sync_none.mp4 无任何增强的合成效果
#none_dain_50fps.mp4 只使用DAIN模型将25fps添帧到50fps
#lip_dain_50fps.mp4 对唇形区域进行增强使唇形更清晰+DAIN模型将25fps添帧到50fps
#face_dain_50fps.mp4 对全脸区域进行增强使唇形更清晰+DAIN模型将25fps添帧到50fps

#下面是不同方法的生成效果的视频
#our.mp4 本项目SadTalker-Video-Lip-Sync生成的视频
#sadtalker.mp4 sadtalker生成的full视频
#retalking.mp4 retalking生成的视频
#wav2lip.mp4 wav2lip生成的视频

典型的模型合成效果比较如下所示:

原始视频:63ad0daf14ce.mp4

sadtalker合成视频:2649ccd39616.mp4

video_retalking合成视频:f6b40070e2ca.mp4

wav2lip合成视频:a8285e728ecb.mp4

本模型合成视频:902cc7711b8a.mp4

3 问题解决

项目运行,出现错误提示:error: face_alignment.LandmarksType._2D,通过修改代码解决,解决方案如下:

复制代码
vi src/face3d/extract_kp_videos.py 

self.detector = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, device=device)

更改为:

复制代码
self.detector = face_alignment.FaceAlignment(face_alignment.LandmarksType.TWO_D, device=device)
相关推荐
Danceful_YJ3 小时前
4.权重衰减(weight decay)
python·深度学习·机器学习
我爱一条柴ya9 小时前
【AI大模型】神经网络反向传播:核心原理与完整实现
人工智能·深度学习·神经网络·ai·ai编程
慕婉03079 小时前
深度学习概述
人工智能·深度学习
198910 小时前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法
神经星星10 小时前
新加坡国立大学基于多维度EHR数据实现细粒度患者队列建模,住院时间预测准确率提升16.3%
人工智能·深度学习·机器学习
TY-202510 小时前
深度学习——神经网络1
人工智能·深度学习·神经网络
cver12311 小时前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
FreeBuf_11 小时前
新型BERT勒索软件肆虐:多线程攻击同时针对Windows、Linux及ESXi系统
人工智能·深度学习·bert
强哥之神11 小时前
Meta AI 推出 Multi - SpatialMLLM:借助多模态大语言模型实现多帧空间理解
人工智能·深度学习·计算机视觉·语言模型·自然语言处理·llama
神经星星14 小时前
专治AI审稿?论文暗藏好评提示词,谢赛宁呼吁关注AI时代科研伦理的演变
人工智能·深度学习·机器学习