1 Wav2Lip-HD项目介绍

数字人打造中语音驱动人脸和超分辨率重建两种必备的模型,它们被用于实现数字人的语音和图像方面的功能。通过Wav2Lip-HD项目可以快速使用这两种模型,完成高清数字人形象的打造。

项目代码地址:github地址

1.1 语音驱动面部模型wav2lip

语音驱动人脸技术主要是通过语音信号处理和机器学习等技术,实现数字人的语音识别和语音合成,从而实现数字人的语音交互功能。同时,结合人脸识别等技术,还可以实现数字人的表情和口型等与语音交互相关的功能。

Wav2Lip模型是一个两阶段模型。

  • 第一阶段是:训练一个能够判别声音与嘴型是否同步的判别器;
  • 第二阶段是:采用编码-解码模型结构(一个生成器 ,两个判别器);

1.2 图像超分辨率模型Real-ESRGAN

超分辨率重建技术则主要用于数字人的图像处理,通过将低分辨率的图像进行处理,从而生成高分辨率的图像,从而实现数字人的图像交互功能。超分辨率重建技术可以应用于数字人的头发、皮肤、服装等细节部分的处理,使数字人更加真实和逼真。

Real-ESRGAN是腾讯ARC实验室发表超分辨率算法,目标是开发出实用的图像/视频修复算法。ESRGAN 的基础上使用纯合成的数据来进行训练,以使其能被应用于实际的图片修复的场景。

  • 提出一种高阶退化过程(high-order degradation process)来模拟实际退化,并利用 sinc 滤波器给训练图片添加 Ringing artifacts(振铃伪影,周围震荡波的感觉)和 Overshoot artifacts(过冲伪影,如白边)构造训练集
  • 用 U-net 而不是 VGG 作为 GAN 的 Discriminator,提高鉴别器能力并稳定训练动态
  • Real-ESRGAN 性能更优,效果更好

2 运行环境构建

2.1 annoconda安装

annoconda安装和使用详见:annoconda环境构建

2.2 运行环境准备

conda create -n wav2lip-hd python=3.9
conda activate wav2lip-hdconda install ffmpeggit clone https://github.com/saifhassan/Wav2Lip-HD.git
cd Wav2Lip-HD
rm -fr Real-ESRGAN
git clone https://github.com/xinntao/Real-ESRGAN.git

修改requirements.txt,修改下面两行:

vi requirements.txt
librosa==0.9.1
numba==0.56.4

安装依赖

pip install -r requirements.txt
pip install basicsr==1.4.2

2.3 模型文件下载

下载第一个预训练模型包:预训练模型1

下载完成后,将以下几个文件移动到 checkpoints文件夹下:

esrgan_yunying.pth,face_segmentation.pth,net_g_67500.pth,pretrained.state,s3fd.pth,wav2lip_gan.pth

移动后的通过命令查看显示如下:

 ll checkpoints/
总用量 1425200
-rw-r--r-- 1 root root  67040989 6月  19 17:14 esrgan_yunying.pth
-rw-r--r-- 1 root root  53289463 6月  19 17:14 face_segmentation.pth
-rw-r--r-- 1 root root  66919172 6月  19 17:14 net_g_67500.pth
-rw-r--r-- 1 root root 310688649 6月  19 17:15 pretrained.state
-rw-r--r-- 1 root root  89843225 6月  19 17:15 s3fd.pth
-rw-r--r-- 1 root root 435801865 6月  19 17:16 wav2lip_gan.pth

下载第二个预训练模型包:预训练模型2

下载完成后,将RealESRGAN_x4plus.pth文件移动到 Real-ESRGAN/weights/文件夹下,移动后命令行查看如下:

 ll Real-ESRGAN/weights/
总用量 65476
-rw-r--r-- 1 root root       54 6月  19 20:22 README.md
-rw-r--r-- 1 root root 67040989 6月  19 17:15 RealESRGAN_x4plus.pth

将detection_Resnet50_Final.pth,GFPGANv1.3.pth,parsing_parsenet.pth移动到

Real-ESRGAN/gfpgan/weights/文件夹下,移动完成后,命令行查看如下:

ll Real-ESRGAN/gfpgan/weights/
总用量 530728
-rw-r--r-- 1 root root 109497761 6月  19 17:14 detection_Resnet50_Final.pth
-rw-r--r-- 1 root root 348632874 6月  20 17:09 GFPGANv1.3.pth
-rw-r--r-- 1 root root  85331193 6月  19 17:14 parsing_parsenet.pth

2.4 修改模型地址(避免从公网下载):

vi Real-ESRGAN/inference_realesrgan.py 
if args.face_enhance:  # Use GFPGAN for face enhancementfrom gfpgan import GFPGANerface_enhancer = GFPGANer(model_path='https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth',upscale=args.outscale,arch='clean',channel_multiplier=2,bg_upsampler=upsampler)修改为:if args.face_enhance:  # Use GFPGAN for face enhancementfrom gfpgan import GFPGANerface_enhancer = GFPGANer(model_path='./gfpgan/weights/GFPGANv1.3.pth',upscale=args.outscale,arch='clean',channel_multiplier=2,bg_upsampler=upsampler)

2.5 修改一行报错的代码:

vi Real-ESRGAN/realesrgan/__init__.py

注释掉最后一行,注释后如下:

# flake8: noqa
from .archs import *
from .data import *
from .models import *
from .utils import *
#from .version import *

3 启动项目生成

3.1 上传文件

将demo.mp4放入input_videos 目录下将demo.wav放入input_audios 目录下

3.2 更改run_final.sh文件

主要修改以下两行:

filename=demo
input_audio=input_audios/demo.wav去除脚本最后一行ffmpeg前面的注释,并更改input_audios为input_audio

修改后的文件内容如下:

export filename=demo
export input_video=input_videos
export input_audio=input_audios/demo.wav
export frames_wav2lip=frames_wav2lip
export frames_hd=frames_hd
export output_videos_wav2lip=output_videos_wav2lip
export output_videos_hd=output_videos_hd
export back_dir=..python3 inference.py --checkpoint_path "checkpoints/wav2lip_gan.pth" --segmentation_path "checkpoints/face_segmentation.pth" --sr_path "checkpoints/esrgan_yunying.pth" --face ${input_video}/${filename}.mp4 --audio ${input_audio} --save_frames --gt_path "data/gt" --pred_path "data/lq" --no_sr --no_segmentation --outfile ${output_videos_wav2lip}/${filename}.mp4
python video2frames.py --input_video ${output_videos_wav2lip}/${filename}.mp4 --frames_path ${frames_wav2lip}/${filename}
cd Real-ESRGAN
python inference_realesrgan.py -n RealESRGAN_x4plus -i ${back_dir}/${frames_wav2lip}/${filename} --output ${back_dir}/${frames_hd}/${filename} --outscale 3.5 --face_enhance
ffmpeg -r 20 -i ${back_dir}/${frames_hd}/${filename}/frame_%05d_out.jpg -i ${back_dir}/${input_audio} -vcodec libx264 -crf 25 -preset veryslow -acodec aac ${back_dir}/${output_videos_hd}/${filename}.mkv

注意1:ffmpeg命令中参数-acodec根据输入音频文件类型设置不同选项,

  • aac对应wav文件
  • copy对应mp3文件

参数错误会导致合成的视频中没有声音

注意2:参数-r为指定采样率,可以通过ffmpeg -i demo.mp4查看

3.3 启动生成模型

bash run_final.sh

3.4 生成结果

  • output_videos_wav2lip:wav2lip 模型生成的视频.
  • frames_wav2lip:wav2lip 模型生成的视频帧
  • frames_hd:Real-ESRGAN模型生成超分辨率视频帧.
  • output_videos_hd:生成的最终结果视频

3.5 结果展示

AI数字人:语音驱动面部模型及超分辨率重建Wav2Lip-HD相关推荐

  1. AI数字人:基于VITS模型的中文语音生成训练

    1 VITS模型介绍 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种结合变 ...

  2. 那些让人耳目一新的深度学习图像超分辨率重建方法

    本文章只记录(按时间),不分析网络结构.优劣.可能会有遗漏,见谅. 1. SRCNN -- ECCV2014 paper:Learning a Deep Convolutional Network f ...

  3. 【数字图像处理3 】(上)图像超分辨率重建(SR)概述

    图像超分辨率重建 一.前言(废话时间) 二.扫盲知识 什么是 超分辨率重建? 兴起原因 三.传统超分辨率重建 1.基于插值的超分辨率重建 2.基于退化模型的超分辨率重建 3.基于学习的超分辨率重建 四 ...

  4. 世优科技纪智辉:虚拟人历经三次迭代,AI数字人驱动是终极目标

    2021年成了当之无愧的元宇宙元年.科技圈.资本圈.文化圈.大企业的想象力都被"元宇宙"撩拨起来,纷纷发力布局.元宇宙也顺其自然的成为业界热门的下一代互联网平台.虚拟数字人作为普通 ...

  5. 首个AI数字人唱作歌曲刷屏背后:百度APP数字人度晓晓用AI陪伴亿万用户

    日前,一首新歌MV迅速登上各大音乐电台.多个音乐排行榜,甚至引发知名乐评人耳帝点赞,发问"音乐行业会不会被颠覆"?其实,这首新歌的"唱作人"并非真人,而是百度数 ...

  6. 百度智能云数字人凭什么领跑中国AI数字人?

    百度智能云即将推出超写实实数字人直播平台 "曦灵". 这个数字人平台究竟如何?又能够给直播行业带来怎样的变化?近日,这个话题在直播带货.营销.娱乐.游戏等领域引发了人们的热议. 一 ...

  7. AI数字人产品“世优BOTA”发布会落幕,世优科技纪智辉演讲回顾

    4月20日,世优科技式发布了新一代AI数字人产品--"世优BOTA".在会上,世优科技创始人纪智辉介绍了数字人技术.驱动形式.数字人应用."世优BOTA"的前世 ...

  8. 手把手教你怎么搭建自己的AI数字人直播间?帮你24小时不间断直播卖货

    在搭建AI数字人直播间之前,您需要了解数字人技术. 一.什么是AI数字人.数字人直播间? 数字人是一种由人工智能技术构建的虚拟人物,其外貌.行为.语言等特征与真实人物相似,可以与人进行互动.数字人可以 ...

  9. AI 数字人制作(方案一):输入一张图片和一段文字即可生成数字人

    方案一: 原文:AI 数字人制作(方案一)_哔哩哔哩_bilibili AI 文字和图片生成数字人(输入一张图片和一段文字即可生成数字人) <用三个开源项目整合成可以商用的数字人项目> 文 ...

最新文章

  1. Relay外部库使用
  2. Windows SQL Server 2008 群集(摘自网络)
  3. python基础知识资料-Python基础知识汇总
  4. 【通知】有三AI更新420页14万字视觉算法工程师成长指导手册,可下载收藏打印...
  5. GridView RowDeleting 动态添加行,删除行记录 不删除数据库中记录
  6. MVC在添加控制器的时候发现没有添加的选项了?肿么办?
  7. VassistX番茄助手使用技巧
  8. AD9(Altium Designer)电源铜块和整板铺铜设定不同规则,满足不同间距
  9. 输出图形(循环程序,任意字符) 三角形、矩形、平行四边形、菱形
  10. php to es7,只需五步 集成新版 Elasticsearch7.9 中文搜索 到你的 Laravel7 项目
  11. node.js版本不同,跑不起项目(个人笔记)
  12. 八块腹肌是如何练成的?入门减脂训练加饮食计划
  13. 基于SpringBoot的家具销售管理系统
  14. 巴菲特:我可以发2100万个巴菲特币|附视频
  15. 读经典《C程序设计语言》(The C Programming Language)
  16. opendns_如何使用OpenDNS设置全屋家长控制
  17. 正则表达式6___常用的正则表达式
  18. 拉伯证券|机构看好中国经济 人民币资产吸引力持续增强
  19. WordPress插件开发教程1
  20. Class.getEnclosingClass 和 Class.getDeclaringClass

热门文章

  1. 易语言post之4399登录注册+验证码自动识别
  2. 使用 satis 搭建 composer 本地仓库
  3. MSVC 配置环境变量
  4. Nodejs 搭建https服务器(二)
  5. 五年软件测试之精华分享:浅谈如何提高产品质量?
  6. 将.csv文件用Excel 2016打开
  7. 西安工业大学计算机调剂分数,2019年西安工业大学硕士研究生调剂录取有关事项的通知...
  8. Proteus逻辑分析仪总线的使用
  9. 【SpringBoot】7、SpringBoot中实现未登录拦截
  10. 保护网站访问安全--阿里云DNS正式支持DNSSEC