AI数字人之语音驱动面部模型及超分辨率重建Wav2Lip-HD

news2025/1/11 19:55:57

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-hd

conda install ffmpeg

git 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 enhancement
        from gfpgan import GFPGANer
        face_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 enhancement
        from gfpgan import GFPGANer
        face_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=kennedy 
input_audio=input_audios/ai.wav

修改后的文件内容如下:

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

 3.3 启动生成模型

bash run_final.sh

3.4 生成结果

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

3.5 结果展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Canal监听MySQL

Canal监听MySQL 1、Mysql数据库开启binlog模式 注意:Mysql容器,此处Mysql版本为5.7 #进入容器 docker exec -it mysql /bin/bash #进入配置目录 cd /etc/mysql/mysql.conf.d #修改配置文件 vi mysqld.cnf(1) 修改mysqld.cnf配置文件,添加如…

Android:安卓开发使用okHttp进行网络请求和MySQL数据库完成图书馆管理系统APP

1、总体目标 1.1 项目概述 项目名称:基于安卓平台的图书管理系统。 本项目旨在研发一个图书管理系统,实现图书馆的信息化管理。在方便用户在线浏览,借阅,归还图书,方便图书馆管理员对图书进行管理。能很好的为用户提…

从零开始理解Linux中断架构(7)--- Linux执行上下文之中断上下文

1 中断处理程序的基本要求 当前运行的loop是一条执行流,中断程序运行开启了另外一条执行流,从上一节得知这是三种跳转的第三类,这个是一个大跳转。对中断程序的基本要求就是中断执行完毕后要恢复到原来执行的程序,除了时间流逝外,原来运行的程序应该毫无感知。 具体到Armv…

如何设计一个短信发送功能

本文主要分享了如何设计一个发送短信功能。 一、总结简述 1.梳理多个平台短信API的发送参数,集成封装提供统一的API,支持多个短信平台(阿里云、腾讯云、百度云、京东云、七牛云)灵活切换 2.提供存储方案,表结构设计…

Redis数据库操作

Redis 命令参考 — Redis 命令参考http://doc.redisfans.com/ 1、Redis,远程词典服务器,是一个基于内存的键值型NoSQL数据库 特征: 键值型,支持多种不同数据结构,功能丰富 单线程,每个命令具备原子性 …

C语言督学营(中级阶段)

文章目录 中级阶段9.数据结构概述逻辑结构 与 存储结构时间复杂度、空间复杂度 10.11.12.线性表 (代码实战)线性表的定义、特点1.线性表的顺序存储(顺序表示):顺序表静态分配动态分配顺序表的定义、初始化、插入、删除、按值查找、按位查找 操作 (代码):…

go开发多云资产管理平台

go开发多云资产管理平台cmdb 代码仓库github.com/yunixiangfeng/gocmdb 云主机管理 主机资源监控 开发流程 Welcome to Beego | Beego bee new gocmdb/servercd gocmdb/servergo mod tidygo get -u github.com/beego/beego/v2 go get -u "github.com/astaxie/beego/o…

津津乐道设计模式 - 模版模式详解(以女友化妆流程带你彻底明白)

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

JDBC-->java如何连接数据库(详细版小白必备)

个人名片: 🐅作者简介:一名大二在校生,热爱生活,爱好敲码! \ 💅个人主页 🥇:holy-wangle ➡系列内容: 🖼️ tkinter前端窗口界面创建与优化 &…

工业相机——显微镜头/放大镜头

校准尺,最小测量刻度为0.1mm 上图为手机拍的看不清,放了一个网上找的图,校准的详细参数见下图 例如:物距为116mm的显微镜头,这种镜头没有景深,只能测镜头前端到物体116mm的物体 ,几乎没有景深&a…

Vscode配置C/C++环境出现报错,导致不能运行代码,报错如下:

Vscode配置C/C环境出现报错,导致不能运行代码,报错如下: 问题描述—gcc : 无法将“gcc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次…

Hexo博客搭建 —— Next主题配置

Hexo博客搭建 —— Next主题配置 文章目录 Hexo博客搭建 —— Next主题配置配置文件区分站点配置文件主题配置文件 配置文件描述简称引入next主题-sitenext主题页面模式设置-next设置首页不显示全文-site设置博客文章持久化连接-site下载插件URL Setting 参考文档 配置文件区分…

【Docker】一文了解DockerFile

文章目录 Dockerfile 概念DockerFile的指令1、FROM 指定基础镜像2、RUN 执行命令3、COPY 复制文件4、ADD 更高级的复制文件5、ENV 设置环境变量6、EXPOSE7、VOLUME 定义匿名卷8、CMD容器启动命令9、ENTRYPOINT入口点10、USER 指定当前用户11、WORKDIR 指定工作目录12、LABEL为镜…

网络安全、Web安全、渗透测试之笔经面经总结含答案

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题&#xf…

4、数据库操作语句:聚合函数

目录 1、定义 2、常用的聚合函数 1)Avg/sum:只适用于数值类型的字段(或变量)。 2)Max/min:适用于数值类型、字符串类型、日期时间类型的字段(或变量) 3)Count: ①作…

一起来学孟德尔随机化(Mendelian Randomization)

孟德尔随机化最近实在是太火了,想不关注都不行,最近也花了点时间研究了一下,和大家分享一下,共同学习。 什么是孟德尔随机化? 在19世纪,孟德尔用豌豆花作为实验材料,通过对豌豆花颜色、形状等特…

ESP-BOX的GUI移植

因为squareline studio软件中适配了ESP-BOX,所以作者本想直接使用该软件创建的工程,但是会出现花屏的现象,也不知道是不是没有做好esp-box-lite的适配。 因此只能先用squareline studio设计好GUI,然后再导出其代码,在其…

jmeter-13-使用JSR223断言(推荐)

文章目录 前言一、JSR 223 进行断言二、总结 前言 之前都在使用 BeanShell 前后置、断言等,但是查看官方文档时发现推荐使用 JSR223 其实 BeanShell 是 JSR223 里面的一种,下面我们继续了解下。 官网介绍:Apache JMeter - User’s Manual: C…

【数据分享】1929-2022年全球站点的逐月平均露点数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

ffmpeg+nginx-rtmp转发视频流

本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 nginx与nginx-rtmp-module安装 画了好几天图,实在有些乏力,找点有意思的事情做做 觉得视频流传输挺有意思,B站找了些视频,但感觉有些大…