JoyGen:用音频生成3D说话人脸视频,快速生成逼真的唇部同步视频

Written by 30115776@qq.com

今天跟大家分享一下 JoyGen 这个由京东和香港大学联合推出的音频驱动的3D说话人脸视频生成框架。

🚀 快速阅读

JoyGen 是一个创新的3D说话人脸视频生成框架。

  1. 核心功能:支持多语言、高质量视觉效果和精确的唇部与音频同步。
  2. 技术原理:结合音频特征和面部深度图,驱动唇部运动的生成,并使用单步UNet架构进行高效的视频编辑。

JoyGen 是什么

JoyGen 是京东科技和香港大学联合推出的一款音频驱动的3D说话人脸视频生成框架。它专注于实现精确的唇部与音频同步及高质量的视觉效果。通过结合音频特征和面部深度图,JoyGen 能够生成逼真的唇部运动,使用单步UNet架构进行高效的视频编辑。

在训练过程中,JoyGen 使用包含130小时中文视频的高质量数据集,并在开源的HDTF数据集上验证其优越性能。实验结果表明,JoyGen 在唇部与音频同步和视觉质量方面均达到行业领先水平,为说话人脸视频编辑领域提供了新的技术解决方案。

JoyGen 的主要功能

  • 唇部与音频同步:基于音频驱动的唇部运动生成技术,确保视频中人物的唇部动作与音频内容精准对应。
  • 高质量视觉效果:生成的视频具有逼真的视觉效果,包括自然的面部表情和清晰的唇部细节。
  • 视频编辑与优化:在现有视频的基础上进行唇部运动的编辑和优化,无需重新生成整个视频。
  • 多语言支持:支持中文和英文等不同语言的视频生成,适应多种应用场景。

JoyGen 的技术原理

  • 第一阶段:音频驱动的唇部运动生成

    • 3D重建模型:从输入的面部图像中提取身份系数,用于描述人物的面部特征。
    • 音频到运动模型:将音频信号转换为表情系数,控制唇部的运动。
    • 深度图生成:结合身份系数和表情系数生成面部的3D网格,基于可微渲染技术生成面部深度图,用于后续的视频合成。
  • 第二阶段:视觉外观合成

    • 单步UNet架构:用单步UNet网络将音频特征和深度图信息整合到视频帧的生成过程中。UNet基于编码器将输入图像映射到低维潜在空间,结合音频特征和深度图信息进行唇部运动的生成。
    • 跨注意力机制:音频特征基于跨注意力机制与图像特征交互,确保生成的唇部运动与音频信号高度一致。
    • 解码与优化:生成的潜在表示基于解码器还原为图像空间,生成最终的视频帧。基于L1损失函数在潜在空间和像素空间进行优化,确保生成视频的高质量和同步性。

如何运行 JoyGen

1. 安装环境

创建 conda 环境并安装所需的依赖包:

conda create -n joygen python=3.8.19 ffmpeg
conda activate joygen
pip install -r requirements.txt

安装 Nvdiffrast 库:

git clone https://github.com/NVlabs/nvdiffrast
cd nvdiffrast
pip install .

下载预训练模型:

./pretrained_models/
├── BFM
│   ├── 01_MorphableModel.mat
│   └── ...
├── audio2motion
│   ├── 240210_real3dportrait_orig
│   │   └── audio2secc_vae
│   └── hubert
├── joygen
│   ├── config.json
│   └── diffusion_pytorch_model.safetensors
└── ...

2. 推理

运行推理脚本:

bash scripts/inference_pipeline.sh args1 args2 args3

逐步运行推理过程:

1. 获取音频驱动的面部表情系数:

python inference_audio2motion.py \\
    --a2m_ckpt ./pretrained_models/audio2motion/240210_real3dportrait_orig/audio2secc_vae \\
    --hubert_path ./pretrained_models/audio2motion/hubert \\
    --drv_aud ./demo/xinwen_5s.mp3 \\
    --seed 0 \\
    --result_dir ./results/a2m \\
    --exp_file xinwen_5s.npy

2. 渲染深度图帧:

python -u inference_edit_expression.py \\
    --name face_recon_feat0.2_augment \\
    --epoch=20 \\
    --use_opengl False \\
    --checkpoints_dir ./pretrained_models \\
    --bfm_folder ./pretrained_models/BFM \\
    --infer_video_path ./demo/example_5s.mp4 \\
    --infer_exp_coeff_path ./results/a2m/xinwen_5s.npy \\
    --infer_result_dir ./results/edit_expression

3. 生成面部动画:

CUDA_VISIBLE_DEIVCES=0 python -u inference_joygen.py \\
 --unet_model_path pretrained_models/joygen \\
 --vae_model_path pretrained_models/sd-vae-ft-mse \\
 --intermediate_dir ./results/edit_expression \\
 --audio_path demo/xinwen_5s.mp3 \\
 --video_path demo/example_5s.mp4 \\
 --enable_pose_driven \\
 --result_dir results/talk \\
 --img_size 256  \\
 --gpu_id 0 \\

资源

30115776@qq.com

Pretium lorem primis lectus donec tortor fusce morbi risus curae. Dignissim lacus massa mauris enim mattis magnis senectus montes mollis taciti accumsan semper nullam dapibus netus blandit nibh aliquam metus morbi cras magna vivamus per risus.

Cursor AI编程助手不完全指南

AnythingLLM:轻松打造个人知识库,构建专属AI助手,附详细部署教程

发表评论