实现效果
Speaker
Wav2Lip概述
2020年,来自印度海德拉巴大学和英国巴斯大学的团队,在ACM MM2020发表了的一篇论文《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》,在文章中,他们提出一个叫做Wav2Lip的AI模型,只需要一段人物视频和一段目标语音,就能够让音频和视频合二为一,人物嘴型与音频完全匹配。
对口型的技术,此前其实已经有很多,甚至在基于深度学习的技术出现之前,就有一些技术使角色的嘴唇形状与实际的语音信号相匹配。但这Wav2Lip 在目前的众多方法中,显示出了绝对优势。现有的其它方法,主要是基于静态图像,来输出与目标语音匹配的唇形同步视频,但对于动态的、在讲话的人物,唇形同步往往效果不佳。而 Wav2Lip 则可以直接将动态的视频,进行唇形转换,输出与目标语音相匹配的视频结果。
Wav2Lip模型结构
Wav2Lip模型是一个两阶段模型。
- 第一阶段是:训练一个能够判别声音与嘴型是否同步的判别器;
- 第二阶段是:采用编码-解码模型结构(一个生成器 ,两个判别器);
Wav2Lip生成数字人
Wav2Lip生成数字人的步骤比较麻烦,有时候可能出现下载依赖包出错的问题,具体步骤如下:
1、从github下载wav2lip开源包
git clone https://github.com/Rudrabha/Wav2Lip
2、安装运行环境
安装conda
3、运行环境构建
conda create -n wav2lip python==3.10
conda activate wav2lip
conda install ffmpeg
cd Wav2lip
pip install -r requirements.txt
4、预训练模型下载及存放
wav2lip.pth存放到checkpoints目录下
wav2lip_gan.pth存放到checkpoints目录下
lipsync_expert.pth存放到checkpoints目录下
visual_quality_disc.pth存放到checkpoints目录下
s3fd.pth存放到face_detection/detection/sfd/目录下
5、通过python命令合成数字人
python inference.py --checkpoint_path checkpoints/wav2lip_gan.pth --face data/demo.png --audio data/demo.wav
WPF生成启动数字人
怎么让WPF启动虚拟数字人,之前我们通过WPF显示图片并播放语音,或者通过cef加载webm视频来实现数字人,这种方式的缺点是不能通过输入的文字实现嘴型与语音同步(C# 实现虚拟数字人_c#数字人源码-数字人直播源码-CSDN博客),现在我们通过Wav2Lip便可以轻松解决这个问题。
为了让C#直接调用Wav2Lip启动生成数字人,我讲程序和运行环境一起打包,你可以跳过那些繁琐的安装配置过程,直接下载运行。操作界面如下: