FaceFormer
FaceFormer 是一款基于 Transformer 架构的开源工具,专为实现高质量的语音驱动 3D 面部动画而设计。它只需输入原始音频片段和一个中性的 3D 人脸网格模型,就能自动合成出序列流畅、口型精准且表情自然的 3D 面部运动数据。
传统方法在生成长序列动画时往往难以保持时间上的连贯性,或无法精确捕捉语音与唇形的细微对应关系。FaceFormer 通过端到端的自回归生成机制,有效解决了这一难题,显著提升了动画的真实感和同步率。其核心技术亮点在于创新性地利用 Transformer 模型处理时序依赖,使其在理解语音韵律并转化为复杂面部肌肉运动方面表现卓越。
这款工具非常适合计算机视觉领域的研究人员、图形学开发者以及数字内容创作者使用。研究人员可基于其 PyTorch 实现深入探索多模态生成算法;开发者能轻松将其集成到虚拟主播、游戏角色或元宇宙应用中;设计师则可以利用它快速将录音转化为生动的 3D 角色表演,大幅降低手动关键帧动画的制作成本。作为 CVPR 2022 的收录成果,FaceFormer 提供了完善的训练与演示代码,支持 VOCASET 和 BIWI 等主流数据集,是进入 3D 语音动画领域的优质起点。
使用场景
某独立游戏开发团队正在为一款叙事驱动的角色扮演游戏制作过场动画,需要让数百个 NPC 角色根据配音台词实时生成自然的口型和面部表情。
没有 FaceFormer 时
- 动画师必须手动逐帧调整 3D 模型的面部顶点,或使用传统的混合形状(Blendshapes)技术,导致口型与语音节奏经常不同步,出现“对不上嘴”的尴尬画面。
- 针对不同语言或情感色彩的台词,需要重复录制动作捕捉数据或手动关键帧,制作周期长达数周,严重拖慢版本迭代进度。
- 难以处理复杂的连续语流,传统方法生成的表情往往僵硬机械,缺乏说话时眉眼联动的微表情,导致角色缺乏生命力。
- 每次修改剧本或重新配音后,整个面部动画流程需要推倒重来,人力成本极高且无法实现动态实时渲染。
使用 FaceFormer 后
- 只需输入原始音频文件和中性 3D 人脸网格,FaceFormer 即可基于 Transformer 架构自回归地生成高精度 3D 面部运动序列,唇形与语音完美同步。
- 支持端到端自动化处理,将原本数周的制作时间缩短至几分钟,开发人员可快速为大量 NPC 批量生成差异化动画,显著提升生产效率。
- 生成的动画不仅包含准确的口型,还能自然还原说话时的眉毛挑动、脸颊肌肉变化等细微神态,大幅提升了角色的真实感和沉浸度。
- 具备极强的灵活性,当剧本变更或更换配音时,仅需替换音频文件重新运行脚本,即可即时更新动画,完美适配敏捷开发流程。
FaceFormer 通过将语音直接转化为逼真的 3D 面部动画,彻底解决了传统手工制作效率低、同步差、成本高的痛点,让高质量的角色表演变得触手可及。
运行环境要求
- Linux (Ubuntu 18.04.1)
未说明 (基于 PyTorch 实现,通常建议配备支持 CUDA 的 NVIDIA GPU 以加速训练和推理)
未说明

快速开始
FaceFormer
用于该论文的 PyTorch 实现:
FaceFormer:基于 Transformer 的语音驱动 3D 面部动画,CVPR 2022。
范英若、林兆江、斋藤淳、王文平、小村拓
给定原始音频输入和中性 3D 面部网格,我们提出的端到端基于 Transformer 的架构 FaceFormer 可以自回归地合成一系列逼真的 3D 面部运动,并精确地模拟唇部动作。
环境
- Ubuntu 18.04.1
- Python 3.7
- Pytorch 1.9.0
依赖项
- 请查看
requirements.txt文件中的所需 Python 包。 - ffmpeg
- MPI-IS/mesh
数据
VOCASET
请从 https://voca.is.tue.mpg.de/ 获取 VOCASET 数据。将下载的文件 data_verts.npy、raw_audio_fixed.pkl、templates.pkl 和 subj_seq_to_idx.pkl 放入 VOCASET 文件夹中。从 voca 下载 “FLAME_sample.ply”,并将其放入 VOCASET/templates 中。
BIWI
请从 Biwi 3D Audiovisual Corpus of Affective Communication 获取 BIWI 数据集。该数据集包含以下子文件夹:
- ‘faces’ 包含用于跟踪面部几何形状的二进制 (.vl) 文件。
- ‘rigid_scans’ 包含以 .obj 文件形式存储的模板。
- ‘audio’ 包含以 .wav 文件形式存储的音频信号。
将 ‘faces’ 和 ‘rigid_scans’ 文件夹放入 BIWI,并将 wav 文件放入 BIWI/wav。
演示
从 biwi.pth 和 vocaset.pth 下载预训练模型。分别将预训练模型放入 BIWI 和 VOCASET 文件夹中。给定音频信号,
若要为 BIWI 拓扑中的网格制作动画,请运行:
python demo.py --model_name biwi --wav_path "demo/wav/test.wav" --dataset BIWI --vertice_dim 70110 --feature_dim 128 --period 25 --fps 25 --train_subjects "F2 F3 F4 M3 M4 M5" --test_subjects "F1 F5 F6 F7 F8 M1 M2 M6" --condition M3 --subject M1若要为 FLAME 拓扑中的网格制作动画,请运行:
python demo.py --model_name vocaset --wav_path "demo/wav/test.wav" --dataset vocaset --vertice_dim 15069 --feature_dim 64 --period 30 --fps 30 --train_subjects "FaceTalk_170728_03272_TA FaceTalk_170904_00128_TA FaceTalk_170725_00137_TA FaceTalk_170915_00223_TA FaceTalk_170811_03274_TA FaceTalk_170913_03279_TA FaceTalk_170904_03276_TA FaceTalk_170912_03278_TA" --test_subjects "FaceTalk_170809_00138_TA FaceTalk_170731_00024_TA" --condition FaceTalk_170913_03279_TA --subject FaceTalk_170809_00138_TA该脚本会自动在
demo/output文件夹中生成渲染后的视频。您也可以将自己的测试音频文件(.wav 格式)放入demo/wav文件夹,并相应地指定--wav_path "demo/wav/test.wav"参数。
在 VOCASET 上的训练与测试
数据准备
读取顶点/音频数据,并将其转换为存储在
vocaset/vertices_npy和vocaset/wav中的 .npy/.wav 文件:cd VOCASET python process_voca_data.py
训练与测试
若要在 VOCASET 上训练模型并在测试集上获得结果,请运行:
python main.py --dataset vocaset --vertice_dim 15069 --feature_dim 64 --period 30 --train_subjects "FaceTalk_170728_03272_TA FaceTalk_170904_00128_TA FaceTalk_170725_00137_TA FaceTalk_170915_00223_TA FaceTalk_170811_03274_TA FaceTalk_170913_03279_TA FaceTalk_170904_03276_TA FaceTalk_170912_03278_TA" --val_subjects "FaceTalk_170811_03275_TA FaceTalk_170908_03277_TA" --test_subjects "FaceTalk_170809_00138_TA FaceTalk_170731_00024_TA"结果和训练好的模型将保存到
vocaset/result和vocaset/save中。
可视化
若要可视化结果,请运行:
python render.py --dataset vocaset --vertice_dim 15069 --fps 30您可以在
vocaset/output文件夹中找到输出结果。
在 BIWI 上的训练与测试
数据准备
- (待完成)读取几何数据,并将其转换为存储在
BIWI/vertices_npy中的 .npy 文件。
训练与测试
若要在 BIWI 上训练模型并在测试集上获得结果,请运行:
python main.py --dataset BIWI --vertice_dim 70110 --feature_dim 128 --period 25 --train_subjects "F2 F3 F4 M3 M4 M5" --val_subjects "F2 F3 F4 M3 M4 M5" --test_subjects "F1 F5 F6 F7 F8 M1 M2 M6"结果将出现在
BIWI/result文件夹中。训练好的模型将保存到BIWI/save文件夹中。
可视化
若要可视化结果,请运行:
python render.py --dataset BIWI --vertice_dim 70110 --fps 25渲染后的视频将出现在
BIWI/output文件夹中。
使用您自己的数据集
数据准备
在
FaceFormer目录中创建数据集目录<dataset_dir>。将您的顶点数据(.npy 格式)和音频数据(.wav 格式)分别放入
<dataset_dir>/vertices_npy和<dataset_dir>/wav文件夹中。将所有受试者的模板保存到一个
templates.pkl文件中,并将其放入<dataset_dir>,就像处理 BIWI 和 VOCASET 一样。将任意模板导出为 .ply 格式,并将其放入<dataset_dir>/templates/。
训练与测试
通过在
main.py中指定--train_subjects、--val_subjects和--test_subjects参数来划分训练、验证和测试集。通过在
main.py中指定--dataset和--vertice_dim(您网格中的顶点数乘以 3)参数,在您自己的数据集上训练 FaceFormer 模型。您可能需要根据自己的数据集调整--feature_dim和--period。然后运行main.py。结果和模型将保存到
<dataset_dir>/result和<dataset_dir>/save中。
可视化
- 在
render.py中指定--dataset、--vertice_dim和--fps参数。运行render.py来可视化结果。渲染后的视频将保存到<dataset_dir>/output。
引用
如果您发现此代码对您的工作有所帮助,请考虑引用:
@inproceedings{faceformer2022,
title={FaceFormer: Speech-Driven 3D Facial Animation with Transformers},
author={Fan, Yingruo and Lin, Zhaojiang and Saito, Jun and Wang, Wenping and Komura, Taku},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2022}
}
致谢
我们衷心感谢 ETHZ-CVL 提供 B3D(AC)2 数据库,以及 MPI-IS 发布 VOCASET 数据集。wav2vec2 的实现基于 huggingface-transformers,时间偏置则参考了 ALiBi。我们在网格处理方面使用了 MPI-IS/mesh,在渲染方面则采用了 VOCA/rendering。在此向各位作者致以诚挚的谢意,感谢他们所做出的杰出工作。所有第三方软件包均归其各自作者所有,使用时须遵守相应的许可协议。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。