元宇宙时代已经来临,当你看到网络新闻上形形色色的虚拟人的时候,是不是有些心动?
你是否跟以前的我一样会想创造虚拟人需要很大的成本和技术投入,普通开发者单枪匹马根本无法办得到?
现在这些都不再是问题,PaddleHub助你快速实现!
背后支持虚拟数字人的“神秘力量”,其实是飞桨PaddlePaddle强大的开源生态和AI能力。
PaddleSpeech将文字转换成语音,让虚拟数字人有了自己的声音。
PaddleGAN的人脸生成赋予了虚拟数字人一张可爱的脸蛋,表情迁移、唇形合成(同步)模型驱动虚拟数字人的脸部活动,让虚拟人更加栩栩如生。
目前PaddleHub已经把以上模型纳入了模型库当中,现在只需要简单的十几行代码调用模型,输入图片和文字,即可生成一个生动形象的虚拟数字人。
📖 技术原理
实现虚拟数字人生成总共需要调用三个模型,分别是First Order Motion(表情迁移)、Text to Speech(文本转语音)和Wav2Lip(唇形合成)。
具体技术步骤如下:
📌把图像放入First Order Motion模型进行面部表情迁移,让虚拟主播的表情更加逼近真人,既然定位是一个主播,那表情都参考当然是要用“国家级标准”的,所以参考的对象选择了梓萌老师~
📌通过Text to Speech模型,将输入的文字转换成音频输出。
📌得到面部表情迁移的视频和音频之后,通过Wav2Lip模型,将音频和视频合并,并根据音频内容调整唇形,使得虚拟人更加接近真人效果。
⏳ 1、运行依赖安装
# 升级PaddleHub
!pip install --upgrade paddlehub
# 下载nltk_data
!wget https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz
!tar zxvf nltk_data.tar.gz
# 安装ParaKeet
%cd Parakeet/
!pip install -e.
%cd ..
# 安装依赖
!hub install first_order_motion==1.0.0
!hub install wav2lip
!hub install fastspeech2_baker==1.0.0
重启内核!
⭐ 2、 开始造人
⭐ 图像准备
首先需要准备一张带好背景和人脸的二维静态图像,如图所示:
⭐ 表情迁移
通过FOM模型,输入图像和驱动视频,让人像动起来!
import paddlehub as hub
FOM_Module = hub.Module(name="first_order_motion")
FOM_Module.generate(source_image="input_data/test.jpg", # 输入图像
driving_video="input_data/zimeng.mp4", # 输入驱动视频
ratio=0.4,
image_size=256,
output_dir='./output/', # 输出文件夹
filename='FOM.mp4', # 输出文件名
use_gpu=True)
⭐ 文本转语音
输入你想让虚拟数字人说的话,转换生成一段音频。
sentences = ['开发者你好,欢迎使用飞桨,我是你的专属虚拟人。'] # 输入说话内容
TTS_Module = hub.Module(
name='fastspeech2_baker',
version='1.0.0')
wav_files = TTS_Module.generate(sentences)
print(f'声音已生成,音频文件输出在{wav_files}')
⭐ 唇形合成
把刚刚得到的动态视频和音频文件输入到Wav2Lip模型中,让唇形根据说话的内容动态改变。
W2F_Module = hub.Module(name="wav2lip")
W2F_Module.wav2lip_transfer(face='output/FOM.mp4',
audio='wavs/1.wav',
output_dir='./transfer_result/',
use_gpu=True)
🎁 大功告成
经过上面简单的三个步骤,一个虚拟数字人的视频就生成了!
生成的文件路径为 ./transfer_result/result.mp4
💟 高阶玩法
PaddleBoBo是基于飞桨PaddlePaddle深度学习框架和PaddleSpeech、PaddleGAN等开发套件的虚拟主播快速生成项目,除了可以实现以上功能之外,同时还支持调整语速、音高等,更可以经过简单的二次开发,实现实时新闻生成、直播播报等,欢迎大家体验和一键三连!
Github:https://github.com/JiehangXie/PaddleBoBo
同时也欢迎感兴趣的大佬加入,共同打造飞桨元宇宙!
⭐Github Stars
虚拟数字人的实现离不开飞桨开源生态的努力,希望大家给下面优秀的开源项目点个stars⭐
⭐ PaddleGAN:https://github.com/PaddlePaddle/PaddleGAN
⭐ PaddleSpeech:https://github.com/PaddlePaddle/PaddleSpeech
⭐ Paddlehub:https://github.com/PaddlePaddle/PaddleHub