一、基于PaddleGAN精准唇形合成模型实现光棍节美女表白视频

1. PaddleGAN的唇形迁移能力–Wav2lip

铛铛铛!!飞桨PaddleGAN这就来给大家揭秘,手把手教大家如何实现唇型的迁移,学习过本项目的你们,从此不仅能让苏轼念诗,还能让蒙娜丽莎播新闻、新闻主播唱Rap… 只有你想不到的,没有PaddleGAN做不到的!

本教程是基于PaddleGAN实现的视频唇形同步模型Wav2lip, 它实现了人物口型与输入语音同步,俗称「对口型」。 比如这样:

不仅仅让静态图像会「说话」,Wav2lip还可以直接将动态的视频,进行唇形转换,输出与目标语音相匹配的视频,自制视频配音不是梦!

若是大家喜欢这个教程,欢迎到Github PaddleGAN主页点击star呀!下面就让我们一起动手实现吧!

2.Wav2lip模型原理

Wav2lip实现唇形与语音精准同步突破的关键在于,它采用了唇形同步判别器,以强制生成器持续产生准确而逼真的唇部运动。

此外,该研究通过在鉴别器中,使用多个连续帧而不是单个帧,并使用视觉质量损失(而不仅仅是对比损失)来考虑时间相关性,从而改善了视觉质量。

该wav2lip模型几乎是万能的,适用于任何人脸任何语音任何语言,对任意视频都能达到很高的准确率,可以无缝地与原始视频融合,还可以用于转换动画人脸,并且导入合成语音也是可行的

二、环境准备

1.下载PaddleGAN代码

# 从github上克隆PaddleGAN代码(如下载速度过慢,可用gitee源)
!git clone https://gitee.com/PaddlePaddle/PaddleGAN
#!git clone https://github.com/PaddlePaddle/PaddleGAN
Cloning into 'PaddleGAN'...
remote: Enumerating objects: 565, done.[K
remote: Counting objects: 100% (565/565), done.[K
remote: Compressing objects: 100% (315/315), done.[K
remote: Total 3944 (delta 326), reused 459 (delta 235), pack-reused 3379[K
Receiving objects: 100% (3944/3944), 161.95 MiB | 25.73 MiB/s, done.
Resolving deltas: 100% (2534/2534), done.
Checking connectivity... done.

2.安装sndfile、libsndfile

# 安装所需安装包
!mkdir sndfile
%cd ~/sndfile
!wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28.tar.gz
!tar xzvf libsndfile-1.0.28.tar.gz%cd libsndfile-1.0.28
!./configure --prefix=/home/aistudio/build_libs CFLAGS=-fPIC --enable-shared
!make
!make install

3.安装PaddleGAN

%cd ~/PaddleGAN
!pip install -r requirements.txt
!pip install -e .
%cd applications/

三、数据准备

1.声音准备

选取抖音里得视频,通过ffmp提取声音

 !ffmpeg -i 1.mp4 -f s16le -ar 16000 1.wav
%cd ~
!ffmpeg -i  1.mp4 -vn -codec copy 1.m4a
/home/aistudio
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developersbuilt with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencvlibavutil      54. 31.100 / 54. 31.100libavcodec     56. 60.100 / 56. 60.100libavformat    56. 40.101 / 56. 40.101libavdevice    56.  4.100 / 56.  4.100libavfilter     5. 40.101 /  5. 40.101libavresample   2.  1.  0 /  2.  1.  0libswscale      3.  1.101 /  3.  1.101libswresample   1.  2.101 /  1.  2.101libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.12.100Duration: 00:00:06.63, start: 0.000000, bitrate: 1437 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 720x1280 [SAR 1:1 DAR 9:16], 1300 kb/s, 29.85 fps, 30 tbr, 10000k tbn, 60 tbc (default)Metadata:handler_name    : VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)Metadata:handler_name    : SoundHandler
[1;35m[ipod @ 0xa63720] [0m[0;33mCodec for stream 0 does not use global headers but container format requires global headers
[0mOutput #0, ipod, to '1.m4a':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf56.40.101Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, 128 kb/s (default)Metadata:handler_name    : SoundHandler
Stream mapping:Stream #0:1 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=     104kB time=00:00:06.54 bitrate= 130.3kbits/s
video:0kB audio:102kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.781061%

2.图片或视频

随机网上百度卡通美女照片一张

from PIL import Image
img=Image.open('1.jpg')
img

四、使用模型进行合成

1.唇形动作合成命令使用说明

重点来啦!!本项目支持大家上传自己准备的视频和音频, 合成任意想要的逼真的配音视频!!

只需在如下命令中的face参数audio参数分别换成自己的视频和音频路径,然后运行如下命令,就可以生成和音频同步的视频。

程序运行完成后,会在当前文件夹下生成文件名为outfile参数指定的视频文件,该文件即为和音频同步的视频文件。本项目中提供了demo展示所用到的视频和音频文件。具体的参数使用说明如下:

  • face: 原始视频,视频中的人物的唇形将根据音频进行唇形合成–通俗来说,想让谁说话
  • audio:驱动唇形合成的音频,视频中的人物将根据此音频进行唇形合成–通俗来说,想让这个人说什么

2.numba降级

numba报错,需要对numba进行降级,但是requirements.txt里为 numba==0.53.1

 File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/librosa/util/utils.py", line 15, in <module>from .decorators import deprecatedFile "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/librosa/util/decorators.py", line 9, in <module>from numba.decorators import jit as optional_jit
ModuleNotFoundError: No module named 'numba.decorators'
!pip uninstall numba -y
!pip install numba==0.48.0 --user

提示

ERROR: ppgan 2.0.0 has requirement numba==0.53.1, but you'll have numba 0.48.0 which is incompatible.
Installing collected packages: numba
Successfully installed numba-0.48.0

但是默认高版本就报 ModuleNotFoundError: No module named 'numba.decorators'

!pip list|grep numba

3.视频合成

%cd /home/aistudio/PaddleGAN/applications/
ons/
!export PYTHONPATH=$PYTHONPATH:/home/aistudio/work/PaddleGAN && python tools/wav2lip.py --face /home/aistudio/1.jpg --audio /home/aistudio/1.m4a --outfile /home/aistudio/bb.mp4

4.成果展示

视频比较长的话,运行时间会稍长,建议把视频下载到本地预览

五、总结

首先帮大家总结一波:让图片会说话、视频花式配音的魔法–Wav2lip的使用只用三步

  1. 环境准备:安装Paddle环境并下载PaddleGAN
  2. 素材准备:选择(抓取或录制)想要「配音/对口型」的对象以及音频内容
  3. 运行代码:运行代码并保存制作完成的对口型视频分享惊艳众人

贴心的送上项目传送门:PaddleGAN 记得点Star关注噢~~


基于PaddleGAN精准唇形合成模型实现光棍节美女表白视频相关推荐

  1. 最终版:1分钟自动部署数字人平台并提供web服务:唇形合成(wav2lip) + 超分修复(codeformer),

    Demo效果 本文实现步骤:数字人形象(AI绘画) -> 文字转语音(谷歌tts) -> 表情迁移 -> 唇形合成 -> 视频超分 上述步骤所有技术均已在此专栏发布,可点击上方 ...

  2. VideoReTalking:用于野外会说话的头部视频编辑的基于音频的唇形同步

    我们展示了 VideoReTalking,这是一种新系统,可以根据输入音频编辑真实世界中说话的头部视频的面部,从而产生高质量和口型同步的输出视频,即使带有不同的情绪.我们的系统将这个目标分解为三个连续 ...

  3. 基于Unity尝试唇同步/LipSync/OVRLipSync(附Demo及源码)

    在视频创作的时候,这个小破站的审核制度有点气人.所以想着写一个工具,以相对较小的成本,尽可能快的加工视频.算是在唇同步技术上的一个小尝试. 目的和初步的想法 基于Unity3D开发语音输入与3D模型开 ...

  4. 基于PaddleGAN项目人脸表情动作迁移学习(五)图像补帧上色与超分修复

    学习目标 体验基于PaddleGAN的图像上色.补针.超分等功能,涉及模型包括DAIN.DeOldify.RealSR.DeepRemaster.EDVR.PPMSVSR等. 一.算法原理 1.补帧模 ...

  5. 基于PaddleGAN项目人脸表情动作迁移学习(四)人脸动漫化

    学习目标: 体验基于PaddleGAN的真实人脸实现动漫化,相关模型:AnimeGANv2. AnimeGANv2原理: 人脸动漫化(Photo to Cartoon)是指将真实人脸转化成动漫风格,在 ...

  6. 基于强化学习的自动化剪枝模型

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI科技评论 编辑丨极市平台 导读 GitHub上最新开源的一 ...

  7. 语音识别插件_2D动画唇动合成,根据语音自动生成动画人物口型

    蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只需要输入一段语音,代码会自动生成与之相对的动画唇形. 还是毫无违和感的那种. 这是一个在GitHub上拥有501星的开源项目,叫做Rhu ...

  8. 基于RNN和CTC的语音识别模型,探索语境偏移解决之道

    摘要:在本文介绍的工作中,我们展示了一个基于RNN和CTC的语音识别模型,在这个模型中,基于WFST的解码能够有效地融合词典和语言模型. 本文分享自华为云社区<语境偏移如何解决?专有领域端到端A ...

  9. 基于水平集方法和G0模型的SAR图像分割

    基于水平集方法和G0模型的SAR图像分割 Abstract(摘要) 这篇文章提出了一种分割SAR图像的方法,探索利用SAR数据中的统计特性将图像分区域.我们假设为SAR图像分割分配参数,并与水平集模型 ...

最新文章

  1. java 多线程 day12 读写锁
  2. 【S操作】老铁留步,干货来了!小总结云存储云办公云笔记工具——我的云工具选择,供您参考...
  3. 利用jquery getJSON 调用ashx实现ajax调用
  4. 如何给Android添加可视化工具,可视化实现在手机上抓包 方便调试 OkNetworkMonitor...
  5. 使用函数_使用TEXT函数生成中文大写金额
  6. (19)FPGA乒乓操作
  7. Java基础之泛型的使用
  8. 7.20-7.24(2)
  9. 以不变应万变:因果启发的稳定学习年度研究进展(上篇)
  10. 【强化学习】分层强化学习
  11. 信息学奥赛一本通1379:热浪(heatwv) 图论dijkastra算法
  12. 联想微型计算机开机黑屏什么原因,联想电脑开机后显示屏是黑屏怎么办
  13. 程序员的奋斗史(十八)——人活着,只是一种态度
  14. LDA主题模型及案例
  15. 最新的WidowsXP快捷键操作
  16. JCL 和 SLF4J
  17. 安卓手机机短信如何导入苹果IOS9以上版本
  18. java截取字符串可用于截取文件后缀名
  19. 计算机专业的黑板报,计算机教室黑板报
  20. ADC的相关知识整理

热门文章

  1. λ演算简介及coq实现λ演算
  2. docker部署访问postgres数据库(一次到位)
  3. Project 修改每天的工作时间为12小时制
  4. android解除录音权限,android 6.0以下,拒绝录音权限后处理
  5. Android存储、摄像头、录音权限检查,适配小米、vivo 、oppo、锤子、魅族、联想等机型和6.0以下系统
  6. 7-21 超速判断 (10分)
  7. 当idea 出现Process exited with an error: 1(Exit value: 1)问题时
  8. 计算机谱子佛系少女,佛系少女简谱-冯提莫-听完仿佛整个人都变年轻了
  9. Codeforces 219E Parking Lot 线段树
  10. 自己弄了个淘宝导购网,嘿嘿