掌桥专利:专业的专利平台
掌桥专利
首页

人脸动画模型的训练方法、语音数据处理方法和装置

文献发布时间:2023-06-19 19:30:30


人脸动画模型的训练方法、语音数据处理方法和装置

技术领域

本申请涉及人工智能技术领域,尤其涉及一种人脸动画模型的训练方法、语音数据处理方法和装置。

背景技术

语音驱动人脸动画技术是基于深度学习等算法构建模型,以用户输入的语音或者语音生成的文本作为模型输入,即驱动源,生成人脸表情系数从而完成驱动人脸动画的技术。随着科技不断的进步,语音驱动人脸动画技术在影视、教育行业应用越来越广泛。

在现有技术中,驱动人脸动画可以分为两种方法,一种是端到端的方法,基于语音直接预测mesh序列;另外一种是先基于语音预测出表情系数或blendshape系数,然后合成mesh序列。口型驱动还可以先通过语音识别生成文本再生成音素序列,然后用音素序列生成口型系数或者直接生成mesh序列。

然而,上述这些基于深度学习的方法之中,大部分的研究都集中在口型驱动的部分,缺乏富有情绪表征的表情驱动。

发明内容

本申请提供一种人脸动画模型的训练方法、语音数据处理方法和装置。用于解决人脸动画技术无法实现富有情绪表征的表情驱动的问题。

第一方面,本申请提供一种人脸动画模型的训练方法,包括:

对采集到的语音进行分帧处理,得到每一帧的语音数据;

获取表情数据库以及训练数据库,所述表情数据库中包括:表情数据以及对应的表情标签,所述训练数据库中包括标定的所述语音对应的真实人脸动画序列;

基于所述每一帧的语音数据,以及所述表情数据库,所述训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,所述人脸动画模型用于生成输入的语音数据对应的人脸动画的序列。

结合第一方面,在一些实施例中,所述人脸动画模型包括语音编码模块,语音情绪识别模块,人脸生成模块;

相应的,所述基于所述每一帧的语音数据,以及所述表情数据库,所述训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,包括:

步骤a,针对每一帧的语音数据,通过人脸动画模型的语音编码模块对所述语音数据进行编码,得到所述语音数据对应的编码信息;

步骤b,针对每一帧的语音数据,通过人脸动画模型的语音情绪识别模型对所述语音数据进行情绪识别处理,得到所述语音数据对应的表情特征;

步骤c,针对每一帧的语音数据,将所述语音数据对应的表情特征,预先获取的历时人脸运动的编码信息,以及所述语音数据对应的编码信息输入所述待训练的人脸动画模型的人脸生成模块,得到所述语音数据对应的人脸动画的序列;

步骤d,基于所述训练数据库中标定的语音的真实人脸动画序列,构建的人脸动画损失函数,以及所述人脸动画模型输出的每一帧语音数据对应的人脸动画的序列进行时序生成对抗网络训练,优化所述人脸动画模型的参数,重复步骤a-d直至所述人脸动画损失函数收敛,得到最终的人脸动画模型。

结合第一方面,在一些实施例中,所述针对每一帧的语音数据,通过人脸动画模型的语音编码模块对所述语音数据进行编码,得到所述语音数据对应的编码信息,包括:

针对每一帧的语音数据,通过语音编码模块的特征抽取层,采用时序卷积神经网络对所述语音数据进行特征处理,得到所述语音数据的特征信息;

通过所述语音编码模块的线性插值层,对所述语音数据的特征信息进行线性插值处理,得到插值后的特征信息;

通过所述语音编码模块的编码层对所述插值后的特征信息进行编码,并通过线性映射层进行线性映射处理,得到所述语音数据的编码信息。

结合第一方面,在一些实施例中,所述针对每一帧的语音数据,通过人脸动画模型的语音情绪识别模型对所述语音数据进行情绪识别处理,得到所述语音数据对应的表情特征,包括:

针对每一帧的语音数据,通过所述语音情绪识别模块的情绪特征抽取层进行DeepSpeech抽取得到所述语音数据对应的语音特征;

通过所述情绪识别模块的语音情绪识别层对所述语音特征进行情绪分类,得到情绪概率分布;

通过所述情绪识别模块的情绪表情查询层,基于所述情绪概率分布在所述表情数据库中进行查询,得到所述语音数据对应的表情特征。

结合第一方面,在一些实施例中,所述针对每一帧的语音数据,将所述语音数据对应的表情特征,预先获取的历时人脸运动的编码信息,以及所述语音数据对应的编码信息输入所述待训练的人脸动画模型的人脸生成模块,得到所述语音数据对应的人脸动画的序列,包括:

针对每一帧的语音数据,通过所述人脸生成模块的解码层将预先获取的历时人脸运动的编码信息,以及所述语音数据对应的编码信息进行人脸生成,得到人脸信息;

通过所述人脸生成模块的表情迁移层将所述表情特征迁移至所述人脸信息中,得到具有情绪特征的人脸动画的序列。

结合第一方面,在一些实施例中,所述基于所述训练数据库中标定的语音的真实人脸动画序列,构建的人脸动画损失函数,以及所述人脸动画模型输出的语音对应的人脸动画的序列进行时序生成对抗网络训练,优化所述人脸动画模型的参数,包括:

构建判别器中的人脸动画损失函数:

其中,λ是控制重建损失函数对总损失函数的贡献度,

针对每一帧的语音数据,将所述人脸动画模型输出的所述语音数据对应的人脸动画的训练与所述训练数据库中标定的所述语音的真实人脸动画序列输入判别器中进行分类判别,得到所述人脸动画损失函数的值;

根据所述人脸动画损失函数的值,优化所述人脸动画模型的参数。

第二方面,本申请提供一种语音数据的处理方法,包括:

对待处理的语音进行分帧处理,得到每一帧的语音数据;

针对每一帧的语音数据,将所述语音数据输入人脸动画模型进行处理,得到所述语音数据对应的人脸动画的序列。

其中,所述人脸动画模型是预先训练的用于生成输入的语音数据对应的人脸动画的序列。

第三方面,本申请提供一种人脸动画模型的训练装置,包括:

采集处理模块,用于对采集到的语音进行分帧处理,得到每一帧的语音数据;

信息获取模块,用于获取表情数据库以及训练数据库,所述表情数据库中包括:表情数据以及对应的表情标签,所述训练数据库中包括标定的所述语音对应的真实人脸动画序列;

模型训练模块,用于基于所述每一帧的语音数据,以及所述表情数据库,训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,所述人脸动画模型用于生成输入的语音数据对应的。

结合第三方面,在一些实施例中,所述人脸动画模型包括语音编码模块,语音情绪识别模块,人脸生成模块;

相应的,所述模型训练模块基于所述每一帧的语音数据,以及所述表情数据库,所述训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,包括:

语音编码模块,用于针对每一帧的语音数据,对所述语音数据进行编码,得到所述语音数据对应的编码信息;

语音情绪识别模块,用于针对每一帧的语音数据,对所述语音数据进行情绪识别处理,得到所述语音数据对应的表情特征;

人脸生成模块,用于针对每一帧的语音数据,根据所述语音数据对应的表情特征,预先获取的历时人脸运动的编码信息,以及所述语音数据对应的编码信息,得到所述语音数据对应的人脸动画的序列;

模型训练模块,用于基于所述训练数据库中标定的语音的真实人脸动画序列,构建的人脸动画损失函数,以及所述人脸动画模型输出的语音对应的人脸动画的序列进行时序生成对抗网络训练,优化所述人脸动画模型的参数,重复模型训练直至所述人脸动画损失函数收敛,得到最终的人脸动画模型。

结合第三方面,在一些实施例中,所述语音编码模块,包括:

特征抽取单元,用于针对每一帧的语音数据,采用时序卷积神经网络对所述语音数据进行特征处理,得到所述语音数据的特征信息;

线性插值单元,用于对所述语音数据的特征信息进行线性插值处理,得到插值后的特征信息;

编码单元,用于对所述插值后的特征信息进行编码,并通过线性映射层进行线性映射处理,得到所述语音数据的编码信息。

结合第三方面,在一些实施例中,所述语音情绪识别模块,包括:

情绪特征抽取单元,用于针对每一帧的语音数据,进行DeepSpeech抽取得到所述语音数据对应的语音特征;

语音情绪识别单元,用于对所述语音特征进行情绪分类,得到情绪概率分布;

情绪表情查询单元,用于基于所述情绪概率分布在所述表情数据库中进行查询,得到所述语音数据对应的表情特征。

结合第三方面,在一些实施例中,所述人脸生成模块,包括:

解码单元,用于针对每一帧的语音数据,将预先获取的历时人脸运动的编码信息,以及所述语音数据对应的编码信息进行人脸生成,得到人脸信息;

表情迁移单元,用于将所述表情特征迁移至所述人脸信息中,得到具有情绪特征的人脸动画的序列。

结合第三方面,在一些实施例中,所述模型训练模块,包括:

函数构建单元,用于构建判别器中的人脸动画损失函数:

其中,λ是控制重建损失函数对总损失函数的贡献度,

模型训练单元,用于针对每一帧的语音数据,将所述人脸动画模型输出的所述语音数据对应的人脸动画的序列与所述训练数据库中标定的所述语音数据的真实人脸动画序列输入判别器中进行分类判别,得到所述人脸动画损失函数的值;

模型优化单元,用于根据所述人脸动画损失函数的值,优化所述人脸动画模型的参数。

第四方面,本申请提供一种语音数据的处理装置,包括:

语音分帧模块,用于对待处理的语音进行分帧处理,得到每一帧的语音数据;

模型推理模块,用于针对每一帧的语音数据,将所述语音数据输入人脸动画模型进行处理,得到所述语音数据对应的人脸动画的序列。

其中,所述人脸动画模型是预先训练的用于生成输入的语音数据对应的人脸动画的序列。

第五方面,本申请还提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;

所述存储器存储计算机执行指令;

所述处理器执行所述存储器存储的计算机执行指令,以实现第一方面和第二方面所述的方法。

第六方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面和第二方面所述的方法。

本申请提供的人脸动画模型的训练方法、语音数据处理方法和装置。在语音驱动人脸动画技术中,本方案引入基于语音数据的情绪识别模块和表情迁移模块使得语音驱动的人脸表情动画富有情绪表征,并且利用时序对抗生成网络训练人脸动画模型,与现有技术不同的是,该方案通过在原先直接预测mesh序列的生成人脸动画模型的基础上加入了一个语音情绪识别模块用表情迁移的方法,将语音中包含的情绪信息体现在人脸动画的表情上,使得生成的人脸动画带有丰富情绪表征的表情。使得语音驱动的人脸动画不再局限于口型驱动部分,而是实现了表情和口型驱动融合,使得人脸动画富有情绪表征。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的人脸动画模型的训练方法的应用场景图;

图2为本申请实施例提供的人脸动画模型的训练方法实施例一的流程示意图;

图3为本申请实施例提供的人脸动画模型的训练方法实施例二的流程示意图;

图4为本申请实施例提供的人脸动画模型的训练方法实施例三的流程示意图;

图5为本申请实施例提供的人脸动画模型的训练方法实施例四的流程示意图;

图6为本申请实施例提供的人脸动画模型的训练方法实施例五的流程示意图;

图7为本申请实施例提供的人脸动画模型的训练方法实施例六的流程示意图;

图8为本申请实施例提供的语音数据的处理方法实施例的流程示意图;

图9为本申请实施例提供的人脸动画模型推理架构示意图;

图10为本申请实施例提供的编码层内部结构示意图;

图11为本申请实施例提供的解码层内部结构示意图;

图12为本申请实施例提供的人脸动画模型训练网络架构示意图;

图13为判别器网络结构示意图;

图14为本申请实施例提供的人脸动画模型的训练装置实施例一的结构示意图;

图15为本申请实施例提供的人脸动画模型的训练装置实施例二的结构示意图;

图16为本申请实施例提供的人脸动画模型的训练装置实施例三的结构示意图;

图17为本申请实施例提供的人脸动画模型的训练装置实施例四的结构示意图;

图18为本申请实施例提供的人脸动画模型的训练装置实施例五的结构示意图;

图19为本申请实施例提供的人脸动画模型的训练装置实施例六的结构示意图;

图20为本申请实施例提供的语音数据的处理装置实施例的结构示意图;

图21为本申请实施例提供的电子设备的结构示意图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

随着三维数字虚拟人的发展,语音驱动人脸动画技术已经成为虚拟人交互的重要研究热点之一。语音驱动人脸动画技术一般通过端到端的方法,基于语音直接预测mesh序列。或者是先基于语音预测出表情系数或blendshape系数,然后合成mesh序列。口型驱动还可以先通过语音识别生成文本再生成音素序列,然后用音素序列生成口型系数或者直接生成mesh序列。但是现有的研究都集中在口型驱动的部分,很少涉及到表情驱动,尤其是富有情绪表征的表情驱动。

针对上述问题,本申请提供一种人脸动画模型的训练方法,实现了富有情绪表征的表情驱动的人脸动画。具体的,在语音驱动人脸动画的时候,人们通常采用口型驱动来实现人脸动画。发明人在研究过程中发现,MeshTalk网络结构不仅以语音作为输入,也输入了表情特征。与之类似的FaceFormer网络结构通过时序卷积网络和Transformer的编码层编码了语音特征,同时将中性的人脸作为Style Embedding和历时的人脸运动经过编码之后,再与语音特征融合,从而预测人脸运动从而驱动人脸动画。但是这两种网络结构还是只集中于口型以及眼部运动,驱动表情的能力还十分不足,更别提情绪丰富的表情动画。考虑到这些问题,发明人研究了是否可以在网络结构中加入情绪网络,通过表情驱动和口型驱动融合,实现富有情绪表征的人脸动画,基于此,提出本申请的技术方案。

图1为本申请实施例提供的人脸动画模型的训练方法的应用场景图。如图1所示,本申请实施例提供的人脸动画模型的训练方法应用于模拟人脸动画的实际场景中,模拟人脸动画的实际场景至少包括语音数据、人脸动画模型以及输出的人脸动画。其中,语音数据可以是任意用户想要模拟的数据,输出的人脸动画是与用户输入的语音数据相对应的动画。在本方案中对语音数据不做具体限定。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图2为本申请实施例提供的人脸动画模型的训练方法实施例一的流程示意图,如图2所示,具体包括以下步骤:

S101:对采集到的语音进行分帧处理,得到每一帧的语音数据。

在本步骤中,在对预先构建的人脸动画模型进行推理时,需要输入预先采集的语音的每一帧的语音数据,因此在预先采集到语音之后,需要对采集到的语音进行分帧处理,具体的,根据指定的长度,比如时间段或者采样数进行分段,结构化为用户编程的数据结构。其中,采集到的语音包括wav格式的语音数据和该语音对应的情绪标签数据对。

S102:获取表情数据库以及训练数据库。

在本步骤中,在人脸动画模型的训练方法中,需要训练数据对模型进行训练,因此需要预先获取表情数据库以及训练数据库。具体的,通过采集不同的语音,集合形成表情数据库,其中,表情数据库包括表情数据以及对应的表情标签,训练数据库包括标定的语音对应的真实人脸动画序列。

S103:基于每一帧的语音数据,以及表情数据库,训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型。

在本步骤中,根据以上步骤得到的每一帧的语音数据,以及表情数据库,训练数据库,对预先构建的人脸动画模型进行训练,由于人脸动画模型输出的人脸动画的序列是时序数据,因此采用时序生成对抗网络进行训练。

在一种具体实施方式中,时序生成对抗网络包括生成器和判别器,其中生成器即为预先构建的人脸动画模型,判别器是用来判断生成器输出的语音数据对应的人脸动画的序列是否为真,而时序生成对抗网络训练的目的是为了让判别器无法判断生成器输出的语音数据对应的人脸动画的序列为假。

具体的,判别器中输入为人脸动画模型输出的语音数据对应的人脸动画的序列、训练数据库中标定的语音的真实人脸动画序列以及用户信息,判别器的损失函数可以表示为:

其中,D

为了提高口型合成的效果,在上述公式1的基础上增加一个像素级的人脸重建损失函数项。因为口型只与人脸的下半部分有关,所以只需要计算重建人脸下半部分在像素上的损失之和。假设在t时刻重建的人脸为W×H像素的图像,则t时刻人脸重建损失函数

其中,F

最终得到人脸动画损失函数为:

其中,λ是控制重建损失函数对总损失函数的贡献度,

训练过程中使得人脸动画损失函数收敛,即损失函数值最小,当训练结束得到的人脸动画损失函数未收敛时,通过随机调整人脸动画模型的参数使得人脸动画损失函数收敛,函数值最小,结束训练,得到训练后的人脸动画模型。

本实施例提供的人脸动画模型的训练方法,通过采集语音,对语音进行分帧处理,将得到的每一帧的语音数据输入到预先构建的人脸动画模型中,并通过表情数据库、训练数据库以及时序生成对抗网络对人脸动画模型进行训练。实现了口型驱动和表情驱动融合,使得模型输出的人脸动画富有情绪特征。

图3为本申请实施例提供的人脸动画模型的训练方法实施例二的流程示意图,如图3所示,上述实施例一中人脸动画模型包括语音编码模块,语音情绪识别模块,人脸生成模块,相应的,步骤S103中基于每一帧的语音数据,以及表情数据库,训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,具体包括以下步骤:

S1031:获取语音数据对应的编码信息。

在本步骤中,针对每一帧的语音数据,通过语音编码模块的特征抽取层,采用时序卷积神经网络对语音数据进行特征处理,得到语音数据的特征信息,然后通过线性插值层,对语音数据的特征信息进行线性插值处理,得到插值后的特征信息,最后通过编码层对插值后的特征信息进行编码,并通过线性映射层进行线性映射处理,得到语音数据的编码信息。

在一种具体的实施方式中,特征抽取层是由卷积神经网络组成,卷积神经网络包括卷积层、池化层和全连接层,其中卷积神经网络的具体结构在本方案中不做具体限定。具体的,每一帧的语音数据输入到卷积层后,通过卷积层提取局部区域的特征,然后经过池化层进行特征选择,最后经过全连接层输出得到语音数据的特征信息。然后通过插值函数进行插值处理,插值函数在本方案中不做具体限定,用户可根据具体数据选择线性插值的方法,最后将插值后的特征信息输入到编码层,编码层是由6个编码器堆叠而成,其内部结构为一个多头注意力层和前馈神经网络层,前馈神经网络层输入和输出之前都有一个残差连接后进行一次规范化的操作,从而得到语音数据的编码信息。

S1032:获取语音数据对应的表情特征。

在本步骤中,针对每一帧的语音数据,通过语音情绪识别模块的情绪特征抽取层进行DeepSpeech抽取得到语音数据对应的语音特征然后通过情绪识别模块的语音情绪识别层对语音特征进行情绪分类,得到情绪概率分布,最后通过情绪识别模块的情绪表情查询层,基于情绪概率分布在表情数据库中进行查询,得到语音数据对应的表情特征。

在一种具体实施方式中,DeepSpeech是基于长短期记忆-连接时序分类的端对端语音识别技术,通过将机器学习领域的长短期记忆(Long Short Term Memory,LSTM)建模与连接时序分类(Connectionist Temporal Classification,CTC)训练引入传统的语音识别框架里,实现对每一帧的语音数据的特征提取处理,然后语音情绪识别层需要先通过预训练得到一个能正确输出情绪表情分布的语音情绪识别模型,该模型技术上有三种实现方式:基于人工抽取的语音特征加传统机器学习算法的分类模型、声谱图或手工特征加卷积循环神经网络的分类模型和基于预训练加微调的分类模型,得到情绪概率分布。对于以上三种方式,可进行随意选择,在本方案中不做具体限定。最后将情绪概率分布输入到表情查询层的表情数据库中,表情数据库中储存了各种情绪对应的表情,称为表情基。语音情绪识别层输出情绪概率分布即为表情基权重,可以映射到表情的blendshape系数,通过blendshape系数在表情数据库中匹配相应的表情基,然后通过相应表情基的加权平均得到情绪表情,表情计算公式表示为:

其中,B=[b

S1033:获取语音数据对应的人脸动画的序列。

在本步骤中,针对每一帧的语音数据,通过人脸生成模块的解码层将预先获取的历时人脸运动的编码信息,以及语音数据对应的编码信息进行人脸生成,得到人脸信息,然后通过人脸生成模块的表情迁移层将表情特征迁移至人脸信息中,得到具有情绪特征的人脸动画的序列。

在一种具体实施方式中,人脸生成模块的解码层是由6个解码器堆叠组成,内部结构包括多头注意力层和前馈神经网络层。预先获取的历时人脸运动的编码信息经过解码层的第一个多头注意力层后与残差连接的输入加和后进行一次规范化,在第二个多头注意力层和语音数据的编码信息进行两个模态的融合后,再一次进行加和后一次规范化的操作,再通过一个前馈神经网络层计算后进行一次加和后一次规范化操作,最终输出人脸信息。为了语音驱动的人脸动画富有情绪表征,在得到了人脸信息后,将人脸信息与语音数据对应的表情特征输入到语音识别模块的表情迁移层中,通过表情迁移层的处理,将语音数据对应的表情迁移到人脸信息上,从而得到了具有情绪特征的人脸动画的序列。

S1034:获取最终的人脸动画模型。

在本步骤的具体实施方式中,构建判别器中的人脸动画损失函数:

其中,λ是控制重建损失函数对总损失函数的贡献度,

针对每一帧的语音数据,将人脸动画模型输出的语音数据对应的人脸动画的训练与训练数据库中标定的语音数据的真实人脸动画序列输入判别器中进行分类判别,得到人脸动画损失函数的值,然后根据人脸动画损失函数的值,优化人脸动画模型的参数,得到最终的人脸动画模型。

本实施例提供的人脸动画模型的训练方法,通过语音编码模块对每一帧的语音数据进行处理,得到语音数据对应的编码信息,然后再通过语音情绪识别模块对每一帧的语音数据进行处理,得到语音数据对应的表情特征,最后将语音数据对应的编码信息以及语音数据对应的表情特征输入到人脸生成模块,语音数据对应的人脸动画的序列,通过时序生成对抗网络对人脸动画模型进行训练,得到最终的人脸动画模型。从而使得生成的人脸动画带有丰富情绪表征的表情,不再局限于口型驱动。

图4为本申请实施例提供的人脸动画模型的训练方法实施例三的流程示意图,如图4所示,上述方法实施例二中步骤S1031中具体包括:

S201:获取语音数据的特征信息。

在本步骤的具体实施方式中,在语音编码模块输入每一帧的语音数据后,在语音编码模块中的特征抽取层进行特征抽取,其中特征抽取层是由卷积神经网络组成,卷积神经网络包括卷积层、池化层和全连接层,其中卷积神经网络的具体结构在本方案中不做具体限定。

具体的,每一帧的语音数据输入到卷积层后,通过卷积层提取局部区域的特征,然后经过池化层进行特征选择,最后经过全连接层输出得到语音数据的特征信息。

S202:获取插值后的特征信息。

在本步骤的具体实施方式中,获取语音数据的特征信息后,通过线性插值层进行线性插值处理。

具体的,通过插值函数进行插值处理,插值函数在本方案中不做具体限定,用户可根据具体数据选择线性插值的方法。

S203:获取语音数据的编码信息。

在本步骤的具体实施方式中,将获取得到的插值后的特征信息输入到编码层,对插值后的特征信息进行编码处理。

具体的,编码层是由6个编码器堆叠而成,其内部结构为一个多头注意力层和前馈神经网络层,前馈神经网络层输入和输出之前都有一个残差连接后进行一次规范化的操作,从而得到语音数据的编码信息。

本实施例提供的人脸动画模型的训练方法,通过语音编码模块中的语音特征抽取层、线性插值层以及编码层对每一帧的语音数据进行处理,得到语音数据的编码信息。实现了对每一帧的语音数据更加具体的处理,准确的得到了侧重于口型,缺乏表情的人脸动画序列。

图5为本申请实施例提供的人脸动画模型的训练方法实施例四的流程示意图,如图5所示,上述方法实施例二中步骤S1032中具体包括:

S301:获取语音数据对应的语音特征。

在本步骤的具体实施方式中,针对每一帧的语音数据,通过语音情绪识别模块的情绪特征抽取层进行DeepSpeech抽取得到语音数据对应的语音特征。具体的,DeepSpeech是基于长短期记忆-连接时序分类的端对端语音识别技术,通过将机器学习领域的长短期记忆(Long Short Term Memory,LSTM)建模与连接时序分类(Connectionist TemporalClassification,CTC)训练引入传统的语音识别框架里,实现对每一帧的语音数据的特征提取处理。

S302:获取情绪概率分布。

在本步骤的具体实施方式中,通过语音情绪识别层对上述步骤得到的语音数据对应的语音特征处理,得到情绪概率分布。具体的,语音情绪识别层需要先通过预训练得到一个能正确输出情绪表情分布的语音情绪识别模型,该模型技术上有三种实现方式:基于人工抽取的语音特征加传统机器学习算法的分类模型、声谱图或手工特征加卷积循环神经网络的分类模型和基于预训练加微调的分类模型。对于以上三种方式,可进行随意选择,在本方案中不做具体限定。

S303:获取语音数据对应的表情特征。

在本步骤的具体实施方式中,通过对得到的情绪概率分布处理,得到语音数据对应的表情特征。具体的,将情绪概率分布输入到表情查询层的表情数据库中,表情数据库中储存了各种情绪对应的表情,称为表情基。语音情绪识别层输出情绪概率分布即为表情基权重,可以映射到表情的blendshape系数,通过blendshape系数在表情数据库中匹配相应的表情基,然后通过相应表情基的加权平均得到情绪表情,表情计算公式表示为:

其中,B=[b

本实施例提供的人脸动画模型的训练方法,通过语音情绪识别模块中的语音情绪特征抽取层、语音情绪识别层和情绪表情查询层对每一帧的语音数据进行处理,得到语音数据对应的表情特征。实现了语音驱动人脸动画的情绪驱动。

图6为本申请实施例提供的人脸动画模型的训练方法实施例五的流程示意图,如图6所示,上述方法实施例二中步骤S1033中具体包括:

S401:获取人脸信息。

在本步骤的具体实施方式中,将语音数据的编码信息和预先获取的历时人脸运动的编码信息输入到人脸生成模块的解码层中,通过解码处理得到人脸信息。

具体的,解码层是由6个解码器堆叠组成,内部结构包括多头注意力层和前馈神经网络层。预先获取的历时人脸运动的编码信息经过解码层的第一个多头注意力层后与残差连接的输入加和后进行一次规范化,在第二个多头注意力层和语音数据的编码信息进行两个模态的融合后,再一次进行加和后一次规范化的操作,再通过一个前馈神经网络层计算后进行一次加和后一次规范化操作,最终输出人脸信息。

S402:获取具有情绪特征的人脸动画的序列。

在本步骤的具体实施方式中,为了语音驱动的人脸动画富有情绪表征,在得到了人脸信息后,将人脸信息与语音数据对应的表情特征输入到语音识别模块的表情迁移层中,通过表情迁移层的处理,将语音数据对应的表情迁移到人脸信息上,从而得到了具有情绪特征的人脸动画的序列。

本实施例提供的人脸动画模型的训练方法,通过人脸生成模块中的解码层获取得到人脸信息,然后通过表情迁移层,将语音情绪识别模块中输出的语音数据对应的表情特征迁移到人脸信息上,从而得到具有情绪特征的人脸动画的序列。实现了富有情绪特征的表情驱动。

图7为本申请实施例提供的人脸动画模型的训练方法实施例六的流程示意图,如图7所示,上述方法实施例二中步骤S1034中具体包括:

S501:构建判别器中的人脸动画损失函数。

在本步骤中,为了能使得人脸动画模型输出的人脸动画的序列与真实人脸动画序列更加接近,因为生成人脸动画的序列是时序数据,所以采用时序生成对抗网络对人脸动画模型进行训练。为了提高口型合成的效果,对损失函数进行改进训练。

在一种具体实施方式中,时序生成对抗网络中包括生成器和判别器,其中生成器即为人脸动画模型,判别器的损失函数为:

其中,D

为了提高口型合成的效果,在上述公式的基础上增加一个像素级的人脸重建损失函数项。因为口型只与人脸的下半部分有关,所以只需要计算重建人脸下半部分在像素上的损失之和。假设在t时刻重建的人脸为W×H像素的图像,则t时刻人脸重建损失函数

/>

其中,F

最终得到人脸动画损失函数为:

其中,λ是控制重建损失函数对总损失函数的贡献度,

S502:计算人脸动画损失函数的值。

在本步骤的具体实施方式中,将真实人脸动画序列、语音数据输入到生成器,输出的人脸动画序列。将人脸动画序列与真实人脸动画序列以及用户信息输入到判别器中,经过上述人脸动画损失函数,计算得到人脸动画损失函数的值。

S503:优化人脸动画模型的参数。

在本步骤的具体实施方式中,在得到人脸动画损失函数的值后,通过确定人脸动画损失函数的值是否最小,来确定人脸动画模型的性能。若人脸动画损失函数未收敛,则人脸动画损失函数的值不是最小,则需要重复训练过程,直到损失函数的值最小,结束训练。其中若人脸动画损失函数未收敛,则通过随机调整人脸动画模型的参数来达到训练的目的。

本实施例提供的人脸动画模型的训练方法,采用时序生成对抗网络对人脸动画模型进行训练,其中基于生成对抗网络的训练目标是判别器无法判别输入的人脸动画序列是生成器生成的还是真实的序列。使得得到的人脸动画模型性能更好。

本申请实施例还提供一种语音数据的处理方法,图8为本申请实施例提供的语音数据的处理方法实施例的流程示意图,如图8所示,具体包括以下步骤:

S601:获取每一帧的语音数据。

在本步骤的具体实施方式中,在对预先构建的人脸动画模型进行推理时,需要输入预先采集的语音的每一帧的语音数据,因此在预先采集到语音之后,需要对采集到的语音进行分帧处理,具体的,根据指定的长度,比如时间段或者采样数进行分段,结构化为用户编程的数据结构。其中,采集到的语音包括wav格式的语音数据和该语音对应的情绪标签数据对。

S602:获取语音数据对应的人脸动画的序列。

在本步骤中,将每一帧的语音数据输入到人脸动画模型,经过人脸动画模型的语音编码模块、语音情绪识别模块以及人脸生成模块处理后得到语音数据对应的人脸动画的序列。

在一种具体实施方式中,将每一帧的语音数据输入到语音编码模块,通过语音编码模块的特征抽取层,采用时序卷积神经网络对语音数据进行特征处理,得到语音数据的特征信息,然后通过线性插值层,对语音数据的特征信息进行线性插值处理,得到插值后的特征信息,最后通过编码层对插值后的特征信息进行编码,并通过线性映射层进行线性映射处理,得到语音数据的编码信息。然后通过语音情绪识别模块的情绪特征抽取层进行DeepSpeech抽取得到语音数据对应的语音特征,然后通过情绪识别模块的语音情绪识别层对语音特征进行情绪分类,得到情绪概率分布,最后通过情绪识别模块的情绪表情查询层,基于情绪概率分布在表情数据库中进行查询,得到语音数据对应的表情特征。最后通过人脸生成模块的解码层将预先获取的历时人脸运动的编码信息,以及语音数据对应的编码信息进行人脸生成,得到人脸信息,然后通过人脸生成模块的表情迁移层将表情特征迁移至人脸信息中,得到语音数据对应的人脸动画的序列。

本实施例提供的语音数据的处理方法,通过将每一帧的语音数据输入到人脸动画模型,经过人脸动画模型的语音编码模块、语音情绪识别模块和人脸生成模块处理最终得到语音数据对应的人脸动画的序列。通过语音编码模块和语音情绪识别模块,实现了语音驱动人脸动画的表情驱动。

下面通过具体模型推理架构图以及模型训练架构图,对本申请实施例提供的人脸动画模型的训练方法、语音数据处理方法进行详细介绍,图9为本申请实施例提供的人脸动画模型推理架构示意图,如图9所示,人脸动画模型包括语音编码模块、人脸生成模块和语音情绪识别模块。具体的:

语音编码模块,语音编码模块负责对输入的每一帧的语音数据进行编码。如图9所示,在输入语音编码模块和语音情绪识别模块之前,先对语音进行分帧,得到每一帧的语音数据,并且每一帧的语音数据在表情数据库中都有对应的情绪标签。然后用时序卷积神经网络对每一帧的语音数据进行特征处理,再进行线性插值,得到插值后的特征信息,最后经过编码层编码,再进行一次线性映射得到语音数据的编码信息a

语音编码模块中的编码层是由6个编码器堆叠而成,如图10所示,其内部结构为一个多头注意力(Multi-Head Attention)层和前馈神经网络(Feed Forward)层,前馈神经网络层输入和输出之前都有一个残差连接(后进行一次Add&Norm的操作。

语音情绪识别模块,因为语音编码模块很难捕捉到生成表情的信息,所以采用语音情绪识别模块增强表情特征信息,用以丰富生成的人脸动画的表情特征。与语音编码模块一样,对语音分帧之后,对每一帧的语音数据进行操作,具体步骤如下:

(1)利用DeepSpeech抽取语音特征;

(2)输入DeepSpeech抽取的语音特征进行情绪分类,输出情绪概率分布;

(3)根据情绪概率分布从表情数据库中合成语音数据对应的表情特征。

语音情绪识别层需要先通过预训练得到一个能正确输出情绪概率分布的语音情绪识别模型,具体的实现方法包括:基于人工抽取的语音特征加传统机器学习算法的分类模型、声谱图或手工特征加卷积循环神经网络的分类模型和基于预训练加微调的分类模型。本方案对此实现方法不做具体限定,可根据具体情况选择合适的实现方法。

具体的,根据情绪概率分布从表情数据库中合成语音数据对应的表情特征,包括:表情数据库中储存了各种情绪对应的表情,称为表情基。语音情绪识别层输出情绪概率分布,可以映射到表情的blendshape系数,通过blendshape系数在表情数据库中查询相应的表情基,然后通过相应表情基的加权平均得到情绪表情,计算公式为:

其中,B=[b

人脸生成模块,人脸生成模块主要有两个处理层:解码层和表情迁移层。在解码层,输入为语音数据的编码信息和预先获取的历时人脸运动的编码信息,经过解码层进行解码生成人脸信息,生成人脸信息之后,输入用户信息(Speaker Identity),经过样式嵌入(Style Embedding)后,在表情迁移层将语音数据对应的表情特征迁移到人脸信息上,生成具有情绪特征的人脸动画的序列。

其中,解码层的内部结构如图11所示,解码层由6个解码器堆叠形成,预先获取的历时人脸运动的编码信息经过解码层的第一个多头注意力层(Multi-Head Attention)后与残差连接的输入经过Add&Norm操作后,在第二个多头注意力层和语音数据对应的表情特征进行两个模态的融合后,再一次进行Add&Norm的操作,再通过一个前馈神经网络层计算后进行一次Add&Norm操作输出具有情绪特征的人脸动画的序列。

图12为本申请实施例提供的人脸动画模型训练网络架构示意图,如图12所示,人脸动画模型训练网络为时序生成对抗网络,包括生成器(Generator)和判别器(Discriminator)。其中,生成器即为人脸动画模型。

基于时序生成对抗网络训练框架的训练目标是判别器无法判别输入的人脸动画序列是生成器生成的语音数据对应的人脸动画的序列还是真实人脸动画序列,这是通过在判别器的最后连接一个二分类器输出分类标签来决定生成的人脸动画序列是否是真实人脸动画序列实现的。图13为判别器网络结构示意图。如图13所示,判别器中有两个分类判别:(1)对每一帧的语音数据和语音数据对应的人脸动画的序列的分类判别;(2)真实人脸动画序列和语音数据对应的人脸动画的序列的分类判别。图13中只给出了对每一帧的语音数据和语音数据对应的人脸动画的序列的分类判别,判别器分类的损失函数为:

其中,D

为了提高口型合成的效果,在上述公式的基础上增加一个像素级的人脸重建损失函数项。因为口型只与人脸的下半部分有关,所以只需要计算重建人脸下半部分在像素上的损失之和。假设在t时刻重建的人脸为W×H像素的图像,则t时刻人脸重建损失函数

其中,F

最终得到人脸动画损失函数为:

其中,λ是控制重建损失函数对总损失函数的贡献度,

本申请提供的人脸动画模型的训练方法、语音数据处理方法。在原先直接预测mesh序列的生成人脸动画模型的基础上加入了一个语音情绪识别模块,用表情迁移的方法将每一帧的语音数据中包含的情绪信息体现在人脸动画的表情上,使得生成的人脸动画带有丰富情绪表征的表情,解决现阶段的语音驱动人脸动画的模型因为无法获取足够的表情特征信息而集中于口型的合成而缺少表情动画的技术瓶颈。同时,因为使用了表情迁移的方法,且生成的人脸动画是时序数据,所以在训练阶段,采用了时序对抗生成网络训练生成模型。

本申请实施例还提供一种人脸动画模型的训练装置,图14为本申请实施例提供的人脸动画模型的训练装置实施例一的结构示意图,如图14所示,人脸动画模型的训练装置700包括:

采集处理模块701,用于对采集到的语音进行分帧处理,得到每一帧的语音数据。

信息获取模块702,用于获取表情数据库以及训练数据库,表情数据库中包括:表情数据以及对应的表情标签,训练数据库中包括标定的语音对应的真实人脸动画序列。

模型训练模块703,用于基于每一帧的语音数据,以及表情数据库,训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,其中,人脸动画模型用于生成输入的语音数据对应的人脸动画的序列。

图15为本申请实施例提供的人脸动画模型的训练装置实施例二的结构示意图,如图15所示,人脸动画模型800包括语音编码模块801,语音情绪识别模块802,人脸生成模块803;

相应的,模型训练模块703基于每一帧的语音数据,以及表情数据库,训练数据库,对预先构建的人脸动画模型进行时序生成对抗网络训练,得到训练后的人脸动画模型,包括:

语音编码模块801,用于针对每一帧的语音数据,对语音数据进行编码,得到语音数据对应的编码信息。

语音情绪识别模块802,用于针对每一帧的语音数据,对语音数据进行情绪识别处理,得到语音数据对应的表情特征。

人脸生成模块803,用于针对每一帧的语音数据,根据语音数据对应的表情特征,预先获取的历时人脸运动的编码信息,以及语音数据对应的编码信息,得到语音数据对应的人脸动画的序列。

模型训练模块703,用于基于训练数据库中标定的语音的真实人脸动画序列,构建的人脸动画损失函数,以及人脸动画模型输出的每一帧语音数据对应的人脸动画的序列进行时序生成对抗网络训练,优化人脸动画模型的参数,重复模型训练直至人脸动画损失函数收敛,得到最终的人脸动画模型。

图16为本申请实施例提供的人脸动画模型的训练装置实施例三的结构示意图,如图16所示,语音编码模块801,包括:

特征抽取单元8011,用于针对每一帧的语音数据,采用时序卷积神经网络对语音数据进行特征处理,得到语音数据的特征信息。

线性插值单元8012,用于对语音数据的特征信息进行线性插值处理,得到插值后的特征信息。

编码单元8013,用于对插值后的特征信息进行编码,并通过线性映射层进行线性映射处理,得到语音数据的编码信息。

图17为本申请实施例提供的人脸动画模型的训练装置实施例四的结构示意图,如图17所示,语音情绪识别模块802,包括:

情绪特征抽取单元8021,用于针对每一帧的语音数据,进行DeepSpeech抽取得到语音数据对应的语音特征。

语音情绪识别单元8022,用于对语音特征进行情绪分类,得到情绪概率分布。

情绪表情查询单元8023,用于基于情绪概率分布在表情数据库中进行查询,得到语音数据对应的表情特征。

图18为本申请实施例提供的人脸动画模型的训练装置实施例五的结构示意图,如图18所示,人脸生成模块803,包括:

解码单元8031,用于针对每一帧的语音数据,将预先获取的历时人脸运动的编码信息,以及语音数据对应的编码信息进行人脸生成,得到人脸信息。

表情迁移单元8032,用于将表情特征迁移至人脸信息中,得到具有情绪特征的人脸动画的序列。

图19为本申请实施例提供的人脸动画模型的训练装置实施例六的结构示意图,如图19所示,模型训练模块703,包括:

函数构建单元7031,用于构建判别器中的人脸动画损失函数:

其中,λ是控制重建损失函数对总损失函数的贡献度,

模型训练单元7032,用于针对每一帧的语音数据,将人脸动画模型输出的语音数据对应的人脸动画的序列与表情数据库中标定的语音数据的真实人脸动画序列输入判别器中进行分类判别,得到人脸动画损失函数的值

模型优化单元7033,用于根据人脸动画损失函数的值,优化人脸动画模型的参数。

本申请实施例还提供一种语音数据的处理装置,图20为本申请实施例提供的语音数据的处理装置实施例的结构示意图,如图20所示,语音数据的处理装置900包括:

语音分帧模块901,用于对待处理的语音进行分帧处理,得到每一帧的语音数据。

模型推理模块902,用于针对每一帧的语音数据,将语音数据输入人脸动画模型进行处理,得到语音数据对应的人脸动画的序列。

其中,人脸动画模型是预先训练的用于生成输入的语音数据对应的人脸动画的序列。

本申请实施例还提供一种电子设备,图21为本申请实施例提供的电子设备的结构示意图,如图21所示,电子设备110包括:处理器111,以及与处理器通信连接的存储器112;

存储器111存储计算机执行指令。

处理器112执行存储器存储的计算机执行指令,以实现任一项实施例中的方法。

本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现任一项实施例中的方法。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

技术分类

06120115934074