参考文章:嘴型同步模型Wav2Lip - 迷途小书童的Note迷途小书童的Note (xugaoxiang.com)
参考视频教程:嘴型同步模型wav2lip,给人物配音,怎么喜欢怎么来!_哔哩哔哩_bilibili
模型介绍
2020年,来自印度海德拉巴大学和英国巴斯大学的团队,在 ACM MM2020
发表了的一篇论文 《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》
,在文章中,他们提出一个叫做 Wav2Lip
的 AI
模型,只需要一段人物视频和一段目标语音,就能够让音频和视频合二为一,人物嘴型与音频完全匹配。
算法流程
Wav2Lip
的主要原理是将音频信号与面部图像进行联合训练,以实现从音频信号预测出与之匹配的唇形。
具体来说,Wav2Lip
的算法流程如下:
首先,从音频中提取出相应的语音特征,例如 MFCC
、Mel
频谱等。
接着,将音频特征与面部图像进行联合训练,使用一种生成对抗网络(GAN
)的结构,学习出一个从音频特征到唇形图像的映射。在生成唇形图像时,首先对输入的音频进行预处理,包括进行采样、滤波、预测等操作。然后,将预处理后的音频特征输入到已经训练好的生成器中,生成与之匹配的唇形图像。最后,将生成的唇形图像与原始视频进行融合,得到最终的结果。
复现过程
1.下载源码包:https://github.com/Rudrabha/Wav2Lip/
下载好的文件如下:
2.添加模型文件和素材
2.1添加模型文件
将s3fd.pth文件放到指定目录下,该模型是用于人脸检测的
将wav2lip_gan.pth文件放到指定目录下
2.2添加素材
将语音文件和图片/视频素材放在根目录下:
3.配置环境
需要提前配置好python和anaconda
3.1创建和配置虚拟环境
1.打开cmd:win + R
2.进入conda(base)环境:activate base
3.创建虚拟环境:conda create -n lip python=3.8
4.激活该虚拟环境:conda activate lip
5.安装依赖包
(1)打开requirements.txt文件,将其修改为:
(2)新装该文件:pip install -r .\requirements.txt
6.需要gpu的环境,因此要安装pytorch:在pytorch官网复制安装命令
3.2根据合成命令来调试
安装依赖包时没有要求版本,因此存在版本不兼容情况,需要根据程序的报错信息来调试。
合成命令:python .\inference.py --checkpoint_path .\wav2lip_gan.pth --face .\mouth.jpg --audio .\english.wav。其中,红色为图片/视频素材文件,绿色为音频素材文件。
报错1.librosa版本
报错2.numba版本
报错3.numpy版本
报错4.缺少llvmlite和resampy
4.成功运行
合成结果在该文件下:
5.总结
1.网上说,wav2lip使用英文音频的测试效果比中文的好,中文音频的测试中牙齿部分还原度稍差,对中文的支持不够友好。但我自己测试没太看出来差别。
2.用卡通图片测试,一直没成功,我想是因为卡通线条的嘴型不能识别。只能识别有明显上下嘴唇的。
报错信息:ValueError: Face not detected! Ensure the video contains a face in all the frames.
3.嘴型越大,越有利于识别,好像合成速度也快些,但合成后的视频清晰度会明显下降。
还只是个大三的小虾米,有什么问题欢迎批评指正!祝大家都能顺利复现!