1. 引言
语音驱动的3D面部动画技术具有广阔的应用前景,是一个不断发展但具有挑战性的研究领域,它被广泛地用于娱乐和游戏领域、虚拟现实领域、人机交互领域、教育和培训领域以及影视制作领域。语音驱动的3D面部动画研究在科学、技术和应用方面都具有重要的意义和潜力,将为人机交互带来更加自然和丰富的体验,并在多个领域提供创新的解决方案。
由于3D面部动画在虚拟现实、电影制作和游戏等领域中的广泛应用,近几十年来一直是一个非常活跃的研究课题。语音和面部动画(尤其是嘴型动画)之间的高度相关性,使得用语音驱动面部动画成为可能。早期人们提出在音素和它们的视觉对应物(即视素)之间建立复杂的映射规则,但是性能有限。随着深度学习的进步,用深度学习的方法来学习语音和面部动画之间的关系成为一种高效且便捷的方法。然而由语音生成准确的面部动画(尤其是嘴形动画)也是一个挑战。本文提出了一个全新的端到端的神经网络模型HBF Talk,能更好地建模语音和嘴唇运动之间的关系,生成较为准确的嘴唇运动。
2. 相关工作
早期,语音驱动的3D面部动画主要是基于语言学的方法,即在音素和它们的视觉对应物(即视素)之间建立了一套复杂的映射规则[1]。Parke [2]在1972年首次提出参数化人脸模型,在人脸动画域做出了大量的改进与创新,并提出了很多不同的人脸动画生成方案。在人脸动画生成方案中由于生成思路的不同,其对于人脸模型的构建方式也有很大的区别,主要有三种[3]-[5]:过程式参数模型、生理结构模型和数据驱动参数模型。Paul Ekman [6]创建了人脸动作编码系统,根据解剖学原理将人脸面部区域划分成了44个基本运动单元,根据基本动作单元的运动变化来实现相应的表情动作,并将基本单元与生理结构上的肌肉组织进行对应。早期的研究虽然对动画控制很严格,但是程序相当复杂。
2017年,Zhang等人[7]设计了一个从大量原始语音数据中学习帧级说话者特征的深度神经网络(Deep Neural Networks, DNN)模型。该模型参数较多、尺寸较大,训练时间较长。Pengcheng等人[8]通过将卷积神经网络(Convolutional Neural Networks, CNN)直接应用于语音的语谱图,以端到端的方式学习语音情绪特征。该方法没有考虑语音情绪的时序性。这些方法主要是通过神经网络模型从原始语音数据中学习语音中的情绪与风格,没有直观的表示。
近几年来,研究人员更加关注上下文信息,语音驱动的3D面部动画更加连贯并且细节越来越好,主要贡献如下。
Daniel Cudeiro等人[9]提出了一个独特的4D人脸数据集,学习模型VOCA接受任何语音信号作为输入,甚至是英语以外的语言语音,并逼真地为各种各样的成人面部制作动画,在训练过程中对主题标签进行调节,使模型能够学习各种现实的说话风格。
Speech2Face [10]直接从一个人说话的录音中重建人脸,通过学习将语音的特征空间与使用数百万人说话的自然视频预训练的人脸解码器的特征空间对齐来解决这个问题。
Face Former [11]通过基于Transformer的模型对长期音频上下文进行编码,并自回归预测动画3D人脸网格序列。
Mesh Talk [12]为面部动画建立了一个分类潜在空间,它基于一种新的交叉模态损失来解开音频相关和音频不相关的信息。该模型确保了高度精确的嘴唇运动,同时还合成了与音频信号不相关的面部部分的可信动画。
Code Talker [13]通过将语音驱动的面部动画作为在学习到的编码本的有限代理空间中的编码查询任务。
Sad Talker [14]提出Exp Net通过提取系数和3D渲染的面部来从音频中学习准确的面部表情,在头部姿态方面,通过条件VAE设计Pose VAE来综合不同风格的头部动作。
Diff Talk [15]研究了说话时脸部的控制机制,而不是将音频信号作为单一驱动因素,并将参考面部图像和地标作为人格意识广义合成的条件。通过这种方式,Diff Talk可以有效地合成高保真音频驱动的广义新身份脸部动画视频。
近些年的方法主要是从语音中重建人脸动画,具有更加直观的表现形式,而且从不同角度探索了语音与3D人脸动画之间的关系。与本文工作密切相关的是Face Former和Code Talker,它们在语音驱动表情这一任务上有较好的结果,与他们不同的是,本文采用了自监督预训练语音模型Hu BERT (Hidden-Unit BERT),并引入Flash模块来提取更为丰富的语音上下文表示。
3. 方法
语音驱动表情这一任务是一个类似序列到序列(Seq2seq)的问题,我们将使用序列到序列的模型来解决这个问题。输入的序列是语音序列,输出的序列是三维人脸网格序列(即四维扫描)。本文的主要目标是提高语音驱动的嘴唇运动的准确性和生动性。
Figure 1. HBF Talk model architecture diagram
图1. HBF Talk模型架构图
本文提出的模型HBF Talk (如图1所示)是一个端到端的编码器解码器神经网络架构,其中编码器由Hu BERT [16]和Flash [17]模块共同组成,解码器由带偏置的跨模态Transformer解码器组成。Hu BERT是一个预训练的大型语音模型,它可以将连续音频信息编码成离散的时间步长表示。我们使用的是Hu BERT架构的预训练版本,并使用发布的Hu BERT-Base-ls960版本,该版本在960小时的Libris Speech [18]数据集上进行了训练。语音数据在经过预训练的Hu BERT模型处理之后,通过Flash模块对语音表示进行再处理,最后通过解码器进行解码。
设
是一个真实的3D人脸运动序列,T是真实人脸运动序列的帧数。设χ是原始的语音序列。我们的任务是通过原始语音序列χ1生成一个与真实3D人脸运动序列
非常接近的预测人脸运动序列
。在我们的编码器–解码器的模型架构HBF Talk中,如图1所示,原始的语音序列χ经过Hu BERT和Flash模块的处理得到语音表示
,
为语音表示的帧数,由于Linear_Interpolation层的处理,语音表示与3D人脸顶点序列已经——对应。说话人的风格嵌入层包含一组可学习的嵌入,表示说话人身份
。最后,解码器自回归预测面部运动
以
、说话人n的风格嵌入
和过去的面部动作为条件,公式如下。
(1)
其中θ表示模型参数,t是序列中的当前时间步长,
。
3.1. 编码器
3.1.1. Hu BERT预训练模型
我们提出的方法在编码器中有效地采用了最先进的自监督预训练语音模型Hu BERT,用于语音驱动3D面部动画生成的下游任务。由于Hu BERT模型能够学习并产生结合声学和语言信息的连续音频流的高质量离散隐藏表示,因此Hu BERT的作者提出可以将Hu BERT预训练的隐藏层表示用于各种下游任务[16]。
Hu BERT模型架构在Transformer层引入了一个类似BERT [19]的屏蔽语言建模的编码器。与之前的Wav2vec 2.0 [20]复杂的对比损失相比,它引入了一个简单的交叉熵损失来预测屏蔽单元。此外,与Wav2Vec2.0不同,Hu BERT是通过多次迭代进行训练的。在第一次迭代中,Hu BERT使用无监督的简单k均值聚类进行声学单元发现,以促进在第二次迭代中进行的自监督掩码语言建模学习。在第二次迭代中,训练是在发现的离散隐藏单元上完成的,仅在屏蔽区域上有预测损失,迫使模型使用类似BERT的编码器学习声学和语言的组合模型,因此称为H(idden)-u(nit)-BERT。Hu BERT由CNN编码器、特征投影层、位置卷积嵌入层和Transformer层组成,CNN编码器将连续音频数据离散为512维表示。特征投影层将512维表示投影为768维表示,12个Transformer层用来捕获序列中的上下文信息。
在本文的方法中,采用具有100 M个参数的Hu BERT下游任务微调模型,在最后一个隐藏状态下产生768维的嵌入。初始化预训练权重参数,不冻结Hu BERT中的任何层,在预训练权重参数下进行微调。
(2)
其中
是由原始音频序列χ经过处理之后得到的表示。
3.1.2. Linear_Interpolation层
Linear_Interpolation层的作用主要是对经特征提取层提取到的语音特征表示进行帧率的转换。在训练和验证阶段,需要传入3D面部运动顶点的帧数,从语音提取特征帧率转换为3D面部运动顶点的帧率,并对齐顶点的帧数。在推理阶段,根据语音特征表示的帧率和帧数以及3D面部运动顶点的帧率计算输出的帧数。该层不包含任何需要训练的参数,只是实现帧率的转换以及保证语音特征表示与3D人脸顶点序列的一对一的帧级关系。
3.1.3. Flash
Flash [17]这一模块融合了部分注意力和线性注意力的优点。输入序列被划分为几个大小相同的不重叠的块。首先,对每个块独立施加局部二次注意力,产生部分预门控状态。此外,采用全局线性注意机制来捕捉跨块的远程交互,最后将以上两部分的表示进行相加,再进行门控和后注意力投影。
(3)
其中,
,是经过Speech Encoder和Flash处理后的语音上下文表示。
3.2. HBF Talk的解码器
3.2.1. Motion Encoder和Motion Decoder
Motion Encoder的作用是将人脸顶点序列从人脸顶点维度转换到特征维度。Motion Decoder的作用是将预测的人脸顶点序列从特征维度转换到人脸顶点维度。这两部分主要是实现人脸顶点维度与特征维度之间的转换。
3.2.2. 解码器
我们的解码器使用的是Transformer Decoder这一模块。在其中引入了Face Former [11]中使用的周期性位置编码模块(PPE),这个模块可以注入时间顺序信息。并且与原始Transformer Decoder不同,引入了Face Former [11]中提出的有偏置的跨模态注意力机制和有偏置的自注意力机制。
有偏置的自注意力机制是用于对输入的真实人脸顶点序列进行处理,由图1中的Biasa可知,该偏置不仅可以屏蔽预测帧之后的信息,而且对于过去的人脸顶点序列,将较高的注意力权重分配给较近的时间段,对于较远的时间段,则分配较低的注意力权重。较近时间段的人脸序列帧对当前帧影响较大。
有偏置的跨模态注意力机制如图1中的Biasb可知,它的主要作用是实现语音特征表示与经有偏置自注意力机制处理的人脸运动表示之间的对齐。
(4)
其中t是序列中的当前时间步长,
是说话人n的说话风格嵌入,
。
3.3. 训练和测试
在训练阶段,我们采用自回归方案代替Teacher-Forcing方案。并且在最后做了使用Teacher-Forcing方案训练的对比实验。在验证阶段,主要是使预测序列
与真实序列
之间的均方误差(MSE)尽可能的小。
重建损失如公式5所示。
(5)
其中的N代表的是三维面部网格的顶点数。
运动速度损失如公式6所示。
(6)
其中的N代表的是三维面部网格的顶点数。
(7)
其中
和
分别代表重建损失和运动速度损失的权重系数。
在推理阶段,模型自回归地预测3D人脸顶点序列。在每个时间步,它预测基于原始音频χ、之前的面部运动
和说话人的风格嵌入表示
的面部运动
,如公式1所示。
由说话人的身份来确定,因此可以通过改变One-Hot身份向量来操纵不同说话人风格的输出。
4. 实验
4.1. 数据集
本实验使用了一个公开可用的3D数据集VOCASET [9]进行训练和测试。该数据集提供了英语口语的音频-3D扫描对。VOCASET包含255个独特的句子,其中一些句子在说话者之间共享。
VOCASET数据集包含从12个受试者中捕获的480对音频和3D面部运动序列。面部运动序列以每秒60帧的速度记录,长度约为4秒。VOCASET中的3D人脸网格注册到FLAME [21]拓扑,每个网格有5023个顶点。为了和其他几个模型公平的比较,我们采用了与Face Former [11]和Code Talker [13]相同的训练(VOCA Train)、验证(VOCA-Val)和测试(VOCA-Test)分割。
4.2. 模型实验
我们将本文提出的HBF Talk端到端的神经网络模型与两种先进的方法Face Former [11]和Code Talker [13]进行了比较。首先将Face Former [11]和Code Talker [13]与HBF Talk在同等条件下,用VOCASET数据集进行了训练和测试。做了定量评估和在相同说话风格的条件下的定性评估,最后对我们提出的模型进行了消融实验。
所有的模型训练都是在一个装有Linux系统的电脑上完成的,该电脑配备GEFORCE RTX 4070Ti显卡。模型训练的超参数见表1所示。
Table 1. Hyperparameters for model training
表1. 模型训练的超参数
超参数 |
HBF Talk |
Optimizer |
Adam |
Learning Rate |
1e−4 |
Number of Epochs |
100 |
Feature Dim |
64 |
Flash Layer Dim |
768 |
4.3. 定量评估
Table 2. Quantitative evaluation results on the VOCA-Test
表2. 在VOCA-Test上的定量评估结果
方法 |
LVE↓ (×10−5 mm) |
Face Former [11] |
4.1172 |
Code Talker [13] |
4.1476 |
HBF Talk (本文模型) |
3.6283 |
对于3D人脸的口型评估,本文遵循Face Former [11]和Code Talker [13]中使用的唇部同步度量来评估唇部运动的质量。所有唇形顶点的最大L2误差被定义为每帧的唇形误差,误差是通过比较预测和真实的三维人脸几何数据来计算的,取所有序列的所有帧的唇形误差的均值作为最终的LVE (唇顶点误差)指标。
本文的定量评估实验结果如表2所示。
表2对比结果表明,本文所提出的HBF Talk模型相对于Face Former [11]和Code Talker [13]具有更低的唇顶点误差(LVE),这表明和其他两种方法相比,本文提出的模型可以产生更加准确的嘴唇运动。
4.4. 定性评估
我们直观地比较了本文提出的方法与其他竞争者的方法。为了确保比较的公平性,我们将相同的讲话风格分配给Face Former、Code Talker和本文提出的HBF Talk作为条件输入。为了比较嘴唇和语音的同步情况,我们举例说明了五个典型的合成人脸动画序列帧,它们在特定的音节上说话。这五个合成人脸动画序列帧如图2到图6所示。
Figure 2. /”ɪn”/ pronunciation-related face animation sequence frames
图2. /”ɪn”/发音相关的人脸动画序列帧
Figure 3. /”ɪŋglɪʃ”/ pronunciation-related face animation sequence frames
图3. /”ɪŋglɪʃ”/发音相关的人脸动画序列帧
Figure 4. /”maɪ”/ pronunciation-related face animation sequence frames
图4. /”maɪ”/发音相关的人脸动画序列帧
Figure 5. /”sʌbdʒɪkt”/ pronunciation-related face animation sequence frames
图5. /”sʌbdʒɪkt”/发音相关的人脸动画序列帧
Figure 6. /”daɪəɡ’noʊsɪs”/ pronunciation-related face animation sequence frames
图6. /”daɪəɡ’noʊsɪs”/发音相关的人脸动画序列帧
由图2到图6可知,与基线模型相比,本文提出的HBF Talk产生的唇形更准确地表达了语音信号,也更符合真实的唇形。例如,与Face Former和Code Talker相比,HBF Talk在发出/”ɪn”/的读音(即图2)时,有适当的张嘴,可以产生更好的口型同步;在发出English的前半部分的读音/”ɪŋglɪʃ”/ (即图3)、MY的读音/”maɪ”/ (即图4)和diagnosis的读音/”daɪəɡ’noʊsɪs”/ (即图6)时,HBF Talk可以产生准确的唇形,有适当的张嘴,而其他方法张嘴的幅度较小。即使是Subject中的/”t”/的发音(图5),HBF Talk相对于其他方法也有一定的张嘴,具有较为准确的唇形。
4.5. 消融实验
为了分析本文提出的模型中的各个模块对模型整体效果的贡献,首先对Hu BERT预训练模型各层是否冻结预训练参数进行了研究,然后通过去掉或者替换模型中的某一模块来分析模型中的每一模块对生成的3D面部动画质量的影响。
4.5.1. Hu BERT预训练模型的消融
本文进行了大量的实验来研究和优化Hu BERT在HBF Talk编码器中的作用。该消融实验是通过冻结Hu BERT模型在各个层的预训练参数来研究其作用。从不冻结(即每一层的参数都是可训练的)到所有层的权值都冻结(即所有层都用预训练参数,参数不可训练)。该消融实验研究结果见表3。
Table 3. Ablation experimental results of Hu BERT pre-trained model on VOCA-Test
表3. Hu BERT预训练模型在VOCA-Test上的消融实验结果
模型 |
LVE↓ (×10−5 mm) |
模型可训练的参数量 |
(i) |
3.6283 |
100,407,549 |
(ii) |
3.7816 |
96,207,101 |
(iii) |
3.8596 |
95,812,093 |
(iv) |
3.8609 |
81,636,349 |
(v) |
3.9271 |
67,460,605 |
(vi) |
3.9796 |
53,284,861 |
(vii) |
3.9971 |
39,109,117 |
(viii) |
4.1975 |
24,933,373 |
(ix) |
4.3611 |
17,845,501 |
(x) |
4.6158 |
10,757,629 |
根据第3.1.1节中描述的Hu BERT结构,该消融实验的模型结构配置如下:(i) 没有层被冻结,所有层的参数都可以训练,(ii) CNN编码器(特征提取层)被冻结,(iii) CNN编码器(特征提取层)和特征投影层被冻结。对于模型(iv)至(viii),除了冻结CNN编码器(特征提取层)和特征投影层外,每一个模型结构依次多冻结两个Transformer层。对于模型(ix),仅仅保留最后一个Transformer层可训练,而对于(x),整个Hu BERT预训练模型在训练期间被冻结。
尽管上述所有的模型配置都可以产生连贯流畅的三维人脸动画,但是我们发现(i)产生的唇顶点误差(LVE)最小,生成的动画与语音的相关性更强,表现力更加丰富。除此之外,当把模型配置从模型(ii)变化到(x)时,其所生成的三维人脸动画变得更加僵硬,并且唇形与语音之间的相关性变弱。本文选择的是没有层被冻结,即所有的参数都可以训练。
除了上述对Hu BERT模型的消融实验,本文还做了HBF Talk模型中其他部分在VOCA-Test上的消融实验。消融实验研究结果见表4。
Table 4. Ablation results of other parts of the HBF Talk model on VOCA-Test
表4. HBF Talk模型其他部分在VOCA-Test上的消融实验结果
模型 |
LVE↓ (×10−5 mm) |
HBF Talk (Autoregressive) |
3.6283 |
HBF Talk (Teacher-forcing) |
3.8811 |
w/o Flash |
3.8654 |
Wav2vec2FlashFormer |
3.9339 |
Hu BERT Flash RNN |
4.5979 |
Hu BERT Flash Bi LSTM |
4.6059 |
Ltotal (9:1) |
3.8415 |
4.5.2. 自回归机制的消融
为了分析训练阶段自回归机制(Autoregressive)的影响,本文在训练阶段使用Teacher-Forcing机制做了对比实验。简要解释一下这两种机制,自回归机制是一种生成模型的训练方法,其中模型根据先前生成的内容来逐步生成下一个元素。在自回归过程中,生成的每个元素都依赖于之前生成的元素。Teacher-Forcing机制在训练过程中,真实的目标输出被用作模型的输入,而不是使用模型自身生成的输出作为下一步的输入。由表4可知,在本文的模型中,自回归机制相比于Teacher-Forcing机制训练的模型有较好的结果,究其原因,在推理阶段是用模型自身生成的输出作为下一步的输入,所以用在训练阶段使用自回归机制的效果较好。
4.5.3. Flash模块的消融
为了分析Flash模块对模型的影响,本文去除了模型中的Flash模块,在其他条件相同的情况下做了对比实验,Flash模块对语音的隐藏层表示进行了分块的块内局部注意力和块间全局注意力,最后相加经过门控输出,更好的建模了语音的隐藏层表示。由表4可知,通过Flash模块对语音的隐藏层表示进行再处理之后,会有更好的三维人脸动画效果。并且Wav2vec2 Flash Former与Face Former相比,相当于加上了Flash模块,由表4和表2可知,在Wav2vec2预训练模型下,Flash模块也能带来更好的三维人脸动画效果。
4.5.4. 音频编码器的消融
在语音驱动3D面部动画生成的这项任务中,在VOCA [9]之后,很多相关的模型都使用Wav2vec2.0这一预训练的音频编码器,为了验证我们选用Hu BERT [16]作为音频编码器的正确性,本文用Wav2vec2.0代替了Hu BERT,在其他条件相同的情况下做了对比实验。从表4可知,使用Hu BERT预训练模型进行语音驱动3D面部动画生成下游任务比使用Wav2vev2.0具有更好的效果。
4.5.5. 解码器的消融
为了验证本文所提出的模型中选择的解码器,本文对解码器使用不同的序列建模方法进行了消融实验。我们用更简单的RNN解码器和Bi LSTM解码器取代了本模型所选择的Transformer解码器。实验的结果如表4所示,Transformer解码器在同等参数条件下表现最好,在VOCA数据集上的误差更小,主要原因如3.2.2节所描述的那样,有偏置的自注意力机制实现了当前帧对过去帧的不同关注程度,而且有偏置的跨模态注意力机制对齐了人脸运动表示与语音表示。
4.5.6. 损失函数的消融
本文使用LMSE (重建损失,如公式5所示)和Ltotal (组合损失,如公式7所示)两种损失函数做了对比试验,由表4可知,用单纯的重建损失比组合损失能取得更好的效果。
5. 结论
本文提出的HBF Talk显著提高了针对跨模态语义的运动合成质量,HBF Talk中的编码器Hu BERT有效地利用了自监督预训练语音表示,Flash模块进一步的整合了局部和全局的语音上下文信息,经解码器解码得到面部动画序列。通过与现有的先进技术进行比较,本文提出的方法在实现准确的嘴唇运动方面具有优势。然而,由于视听数据的稀缺性,导致生成的唇形质量仍落后于真实的唇形质量,利用大规模的视听数据来训练模型以提高唇形质量是未来的研究方向。
致 谢
我们感谢VOCA、Face Former、Code Talker的作者提供他们的代码和数据集。
基金项目
本课题受到“温州大学元宇宙与人工智能研究院”的“重大课题及项目产业化专项资金”(编号:2023103)的资助。