Self-Diffuser: Research on the Technology of Speech-Driven Facial Expressions
Previous research on speech-driven facial expression animation has achieved realistic and accurate lip movements and facial expressions from audio signals. Traditional methods primarily focused on learning deterministic mappings from speech to animation. Recent studies have started exploring the diversity of speech-driven 3D facial animation, aiming to capture the complex many-to-many relationships between audio and facial motion by leveraging the diversity capabilities of diffusion models. In this study, the Self-Diffuser method is proposed by utilizing the pre-trained large-scale language model wav2vec 2.0 to encode audio inputs. By introducing diffusion-based techniques and combining them with Transformers, the generation task is accomplished. This research not only overcomes the limitations of traditional regression models in generating lip movements that are both realistic and lip-reading comprehensible, but also explores the trade-off between precise lip synchronization and creating facial expressions independent of speech. Through comparisons and analysis with the current state-of-the-art methods, the Self-Diffuser method in this paper achieves more accurate lip movements in speech-driven facial animation. It also produces facial motions that closely resemble real speaking expressions in the upper face region correlated with speech looseness. Additionally, the introduced diffusion mechanism significantly enhances the diversity capabilities in generating 3D facial animation sequences.
wav2vec 2.0
语音驱动3D面部动画的初期研究主要是在音素和视觉对应音素之间建立复杂的映射规则
为了解决上述限制和挑战,本文在先前工作的基础上进行改进并设计出Self-Diffuser模型,为语音驱动的3D面部动画生成高质量、多样化、更加生动逼真的面部运动。Self-Diffuser模型主要包括三个部分:一是预训练的大语言模型wav2vec 2.0音频编码器,二是较为复杂的Transformer解码器码,三是在编码器与解码器之间引入的扩散机制。三个部分在Self-Diffuser模型架构下一起工作,产生了更加精确的语音驱动面部表情的嘴部动作,同时与言语相关性较弱的上脸会表现出更大的面部表情多样性。提高了语音驱动的面部表情更精确的嘴部运动;增强了说话松散相关的上半部表情方面,产生更贴近于真实说话表情的上面部运动;同时提高了生成语音驱动的3D人脸动画的多样性能力。
语音驱动的面部动画可以分为两类:i) 二维说话头的渲染;ii) 三维语音驱动的动画合成,使用三维顶点数据进行语音合成的相关任务。本文主要研究基于扩散模型的三维语音驱动面部动画的合成问题。因此在接下来的两小节主要介绍语音驱动的3D面部动画研究及运动扩散合成方面的研究现状。
近年来国内外学者在面部动画合成方面做了很多的研究。Pham等
扩散的概念最早由Sohl-Dickstein等人
本文设计了如
本文的Self-Diffuser模型使用自监督约束来捕捉语音和嘴唇形状之间的复杂关系,同时引入扩散机制,提高模型多样性的同时生成更逼真、更准确的面部表情。
本文的Self-Diffuser模型利用先进的自监督预训练语音模型wav2vec 2.0
(1)
其中, 表示音频编码器提取的音频特征,其中, 为该音频编码器的参数。
是来自具有形状(m, v)的数据集的真实值视觉帧的序列,v为顶点数乘以3。在训练过程中,随机从[1, T]中抽取一个时间步长t,表示在
上应用的噪声步长数来获取
,公式如下
(2)
其中,m为序列中的帧数,t为扩散时间步长, 为在时间步长t处的恒定噪声,并使得 。
本文的Self-Diffuser模型遵循MDM
本文的Self-Diffuser模型引入的扩散推理是一个从T递减到1的迭代过程,见
本文的Self-Diffuser模型使用基于Transformer
(3)
其中, 表示音频编码器提取的音频特征、说话人的身份向量化和噪声的潜在表示的拼接嵌入, 为解码器参数, 表示生成的三维网格变形。
本文的Self-Diffuser模型利用简单损失函数,通过实验表明利用简单损失函数来学习变分界也更容易实现且取得的效果也更好
(4)
本文在一个公开可用的3D数据集BIWI
数据集 | BIWI |
训练集 | 6个训练对象 |
每个对象32个句子 | |
验证集 | 6个可见受试者 |
每个对象4个句子 | |
测试集A | 6个可见受试者 |
每个对象4个句子 | |
测试集B | 8个不可见受试者 |
每个对象4个句子 |
本文的Self-Diffuser模型被设计为接收音频作为输入,在预处理阶段,将音频采样率转换为16 kHz。BIWI
超参数 | 值 |
优化器 | Adam |
学习率 | 1e−4 |
迭代次数 | 100 |
扩散步长 | 500 |
顶点维度(BIWI) | 70,110 |
LVE (Lip Vertex Error,嘴唇顶点误差):嘴唇顶点误差是唯一公开提出的用于语音驱动面部动画评估的度量,它测量一个序列相对于真实的唇偏差,即计算每帧所有唇顶点的最大L2误差,并取所有帧的平均值。其计算公式为:
(5)
(6)
其中,n:每一帧的顶点数;m:每一序列的帧数;q:序列的数; 为真实值顶点坐标, 为预测值顶点坐标。
FDD (Upper-Face Dynamics Deviation,上面部动态偏差):它测量了运动序列相对于真实值的面部动力学变化。上脸表情取决于个人的谈话风格和讲话内容的语义,其与讲话风格等只是松散相关
(7)
其中,
表示第v个顶点的运动,
是上面顶点的索引集,dyn (∙)表示元素L2范数沿时间轴的标准差
Diversity (多样性度量):本文模型架构引入了扩散机制,可以为与语音不相关或松散相关的面部区域生成大范围的运动和多样性表情。因此额外引入了文献
多样性指标定义如下:设 为生成的序列,以受试者 为条件,其中S为训练主题列表。本文计算了每两个序列在不同主题条件下的平均顶点差,然后取这些差的均值,定义序列的多样性如下:
(8)
其中,S为训练对象列表,而且 为以S的第i个主题为条件的预测动画序列。
本文在BIWI
方法 | LVE ↓(×10−4mm) | FDD ↓(×10−5mm) |
VOCA
|
6.5563 | 8.1816 |
Mesh Talk
|
5.9181 | 5.1025 |
Face Former
|
5.3077 | 4.6408 |
Code Talker
|
4.7914 | 4.1170 |
Facediffuser
|
4.2985 | 3.9101 |
Self Talk
|
4.2485 | 3.5761 |
我们的方法 | 4.1295 | 3.0831 |
由于本文的Self-Diffuser模型架构中引入了扩散机制,本文在BIWI-Test-B测试集中计算了所有序列的Diversity值,见
方法 | Diversity ↑(×10−3mm) |
Self Talk
|
3.51 × 10−7 |
Code Talker
|
0.0003 |
我们的方法 | 5.3152 |
由
本文在BIWI-Test-A的测试方法下将真实值与本文的Self-Diffuser模型及最先进的方法
通过不同模型的发音口型对比,结果表明本文的Self-Diffuser模型产生了更精确的嘴部运动,且更贴近于真实值的嘴部动作。如
进一步,本文在BIWI-Test-B的测试方法下,也将真实值与本文的Self-Diffuser模型及参考文献
为了检验本文提出的Self-Diffuser模型架构中各组成部分对生成的3D说话面部质量的影响,本节进行了消融实验。具体来说,本文进行了去除扩散机制、更换编码器及更换解码器的实验;同时通过实验验证了本文的简单损失函数比一些复杂的损失函数在LVE、FDD方面取得了更好的效果。
本文的Self-Diffuser模型在BIWI-Test-A测试集下的消融实验,主要包括:扩散机制的消融研究、编码器的消融实验、解码器的消融实验以及损失函数的实验研究。并在各部分消融实验中通过计算客观指标LVE、FDD进行定量分析。
扩散机制的消融研究(BIWI) | |||
模型 | LVE ↓(×10−4mm) | FDD ↓(×10−5mm) | |
w/o Diffusion | 11.785 | 5.646 | |
我们的方法 | 4.1295 | 3.0831 | |
编码器的消融研究(BIWI) | |||
模型 | LVE ↓(×10−4mm) | FDD ↓(×10−5mm) | |
Hubert | 4.6993 | 5.346 | |
我们的方法 | 4.1295 | 3.0831 | |
解码器的消融研究(BIWI) | |||
模型 | LVE ↓(×10−4mm) | FDD ↓(×10−5mm) | |
RNN | 4.725 | 4.315 | |
GRU | 4.547 | 3.2308 | |
我们的方法 | 4.1295 | 3.0831 | |
损失函数的消融研究(BIWI) | |||
模型 | LVE ↓(×10−4mm) | FDD ↓(×10−5mm) | |
with Lrec, Lvel | 4.3329 | 3.6448 | |
with Lrec, Lvel, Llat | 4.4318 | 4.1515 | |
with Lrec, Lvel, Llat, Lctc | 4.4447 | 4.808 | |
我们的方法 | 4.1295 | 3.0831 |
为了验证本文的Self-Diffuser模型的简单损失函数(Λ)具有更好的性能,本文逐步添加了Self Talk
为了证明本文的Self-Diffuser模型架构中的编码器为最优选择,通过将Hubert编码器取代本文模型中使用的wav2vec 2.0编码器的方式进行实验。如
为了证明本文的Self-Diffuser模型架构中的解码器在本文模型中的表现更好,通过将更简单的GRU解码器取代本文更复杂的Transformer解码器的方法进行了消融实验。
为了验证扩散机制在本文的Self-Diffuser模型架构中的表现,本文训练了一个没有扩散的类似模型进行比较。如
方法 | Diversity ↑(×10−3mm) |
w/o diffusion | 1.7759 × 10−6 |
我们的方法 | 5.3152 |
如
为了更加直观地分析本文的Self-Diffuser模型在引入扩散机制后在多样性度量方面的表现优于Self Talk
与之对比,Self Talk模型从BIWI-Test-B测试集的生成动画序列中,抽取了以不同训练主题对象为条件,由相同音频生成的动画序列其中的同一帧,并通过运动多样性度量进行模型多样性的定性分析,见
通过
本文的Self-Diffuser模型架构使用预训练的大语言模型wav2vec 2.0对音频输入进行编码,Transformer进行解码,并将扩散机制整合到生成式深度神经网络中,训练生成以语音为条件的3D面部动画。广泛的消融实验支持本文的网络架构设计选择,证明了本文的Self-Diffuser模型架构在提高人的从嘴唇生成方面具有很好的效果实现且优于当前的方法。
本文的工作提高了生成的唇动作及与说话松散相关的上半部表情的视觉精度,呈现出比较好的性能。通过将扩散机制引入语音驱动的3D面部动画合成任务,提高了生成面部多样化动画序列的能力。本文重新设计了一种更简单的损失函数,生成了逼真且更加精确的嘴部运动。
由于本文提出的方法适用于3D网格,想要在角色上实现仍然需要映射的方式进行实现。此外,由于数据集的面部扫描不包含眼睛和舌头,因此本文的模型目前无法训练生成一个具有眼睛和舌头的面部动画效果。
非常感谢Facediffuser、Faceformer、codetalker、selftalk、VOCA、Meshtalk和FacexHuBERT的作者提供的代码以及BIWI提供的数据集。
本课题受到“温州大学元宇宙与人工智能研究院”的“重大课题及项目产业化专项资金”(编号2023103)的资助。