环境准备

1、运行依赖安装

In [ ]
# 升级PaddleHub
!pip install --upgrade paddlehub
In [ ]
# 下载nltk_data
!wget https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz
!tar zxvf nltk_data.tar.gz
In [ ]
# 安装ParaKeet
%cd Parakeet/
!pip install -e.
%cd ..
In [ ]
# 安装依赖
!hub install first_order_motion==1.0.0
!hub install wav2lip
!hub install fastspeech2_baker==1.0.0

表情迁移

通过FOM模型,输入图像和驱动视频,让人像动起来!

In [ ]
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)

⭐ 文本转语音

输入你想让虚拟数字人说的话,转换生成一段音频。

In [ ]
sentences = ['开发者你好,欢迎使用飞桨,我是你的专属虚拟人。'] # 输入说话内容

TTS_Module = hub.Module(
    name='fastspeech2_baker',
    version='1.0.0')
wav_files =  TTS_Module.generate(sentences)
print(f'声音已生成,音频文件输出在{wav_files}')

⭐ 唇形合成

把刚刚得到的动态视频和音频文件输入到Wav2Lip模型中,让唇形根据说话的内容动态改变。

In [ ]
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)