语音驱动动画
该库实现了本论文中描述的端到端面部合成模型。
该库由Konstantinos Vougioukas、Honglie Chen和Pingchuan Ma维护。
下载模型
模型原本托管在git LFS上。然而需求量太大,导致我达到了免费gitLFS存储的配额。我已将模型移至Google Drive。可以在这里找到模型。
将模型文件放在*sda/data/
*目录下。
安装
要安装该库,请执行:
$ pip install .
运行示例
要创建动画,你需要实例化VideoAnimator类。然后提供一张图片和音频剪辑(或文件路径),就会生成一段视频。
选择模型
该模型已在GRID、TCD-TIMIT、CREMA-D和LRW数据集上训练。默认模型是GRID。要加载其他预训练模型,只需使用以下参数实例化VideoAnimator:
import sda
va = sda.VideoAnimator(gpu=0, model_path="crema") # 实例化动画器
目前上传的模型有:
- GRID
- TIMIT
- CREMA
- LRW
使用图像和音频路径的示例
import sda
va = sda.VideoAnimator(gpu=0) # 实例化动画器
vid, aud = va("example/image.bmp", "example/audio.wav")
使用NumPy数组的示例
import sda
import scipy.io.wavfile as wav
from PIL import Image
va = sda.VideoAnimator(gpu=0) # 实例化动画器
fs, audio_clip = wav.read("example/audio.wav")
still_frame = Image.open("example/image.bmp")
vid, aud = va(frame, audio_clip, fs=fs)
保存带音频的视频
va.save_video(vid, aud, "generated.mp4")
使用编码
提供了音频和视频的编码器,以便可以用于生成分类任务的特征。
音频编码器
提供了音频编码器(由音频帧编码器和RNN组成),以及包含音频帧编码器所需的特征长度(以秒为单位)和音频帧之间重叠等信息的字典。
import sda
encoder, info = sda.get_audio_feature_extractor(gpu=0)
引用
如果您在研究中发现此代码有用,请考虑引用以下论文:
@inproceedings{vougioukas2019end,
title={End-to-End Speech-Driven Realistic Facial Animation with Temporal GANs.},
author={Vougioukas, Konstantinos and Petridis, Stavros and Pantic, Maja},
booktitle={CVPR Workshops},
pages={37--40},
year={2019}
}