一种语音信号驱动的脸部动画生成方法与流程

专利2022-06-29  125


本发明涉及脸部动画领域,尤其涉及一种语音信号驱动的脸部动画(简称为语音动画)生成方法。



背景技术:

程序式的语音动画技术(yuyuxu,andrewwfeng,stacymarsella,andarishapiro.apracticalandconfigurablelipsyncmethodforgames.inproceedingsofmotionongames,pages131-140.acm,2013.)(pifedwards,chrislandreth,eugenefiume,andkaransingh.jali:ananimator-centricvisememodelforexpressivelipsynchronization.acmtransactionsongraphics(tog),35(4):127,2016.),从语音中自动识别反映发音的音素序列(例如英语中的音节、中文中的拼音),并根据人类在发音时嘴唇的形状将音素分组为视素,且为每个视素制作动画关键帧;通过一定的协同发音规则连接整个序列,得到脸部动画。这些技术通常局限于人为设定的关键帧和协同发音规则而无法生成出真实的语音动画;并且受限于音素识别结果的准确度。

基于样本的语音动画技术(tonyezzat,gadigeiger,andtomasopoggio.trainablevideo-realisticspeechanimation,volume21.acm,2002.)(sarahltaylor,moshemahler,barry-johntheobald,andiainmatthews.dynamicunitsofvisualspeech.inproceedingsoftheacmsiggraph/eurographicssymposiumoncomputeranimation,pages275-284.eurographicsassociation,2012.),也进行音素序列到动画的映射,但是为了提高动画的真实性,不再使用人为设定的规则,而直接从数据样本中提取多个动画片段进行拼接。这些技术的效果通常局限于样本的数量,并且在片段拼接处往往会产生瑕疵;同样也受限于音素识别结果的准确度。

wang等人提出一种基于隐马尔可夫链模型的技术(lijuanwang,weihan,franksoong,andqianghuo.text-driven3dphoto-realistictalkinghead.ininterspeech2011.internationalspeechcommunicationassociation,september2011.),从语音信号中提取梅尔倒谱系数(me1-frequencycepstralcoefficients,mfcc)作为语音特征,使用二维图像中人脸标定点(landmarks)的主成分分析(principalcomponentanalysis,pca)系数作为动画特征。该技术借助隐马尔可夫链对语音特征与动画特征之间的映射关系进行建模;挖掘两种特征之间的自然规则,相比基于样本的技术提高了数据的利用率。

近年来,深度神经网络促进了语音动画领域技术进一步的提升。fan等人(bofan,leixie,shanyang,lijuanwang,andfrankksoong.adeepbidirectionallstmapproachforvideo-realistictalkinghead.multimediatoolsandapplications,75(9):5287-5309,2016.)使用双向的长短时记忆模块(bidirectionallongshort-termmemory,bilstm)从数据中学习语音到动画的映射,尤其是学习自然的协同发音模式;但是bilstm需要整段语音输入,无法做到实时生成。suwajanakorn等人在此基础上提出一种延时的单向长短时记忆模块(supasornsuwajanakorn,stevenmseitz,andirakemelmacher-shlizerman.synthesizingobama:learninglipsyncfromaudio.acmtransactionsongraphics(tog),36(4):95,2017.),通过短暂的延时获取下文信息来帮助处理协同发音;做到在一定延时下,实时地生成高质量语音动画。此技术的局限性在于需要大量的数据,并且只能生成特定人物的脸部视频。

talyor等人(sarahtaylor,taehwankim,yisongyue,moshemahler,jameskrahe,anastasiogarciarodriguez,jessicahodgins,andiainmatthews.adeeplearningapproachforgeneralizedspeechanimation.acmtransactionsongraphics(tog),36(4):93,2017.)提出一种滑动窗口的技术,用深度神经网络(deepneuralnetwork,dnn)将一个窗口长度内的音素映射到脸部的主动外观模型(activeappearancemodel,aam)系数;输入的音素窗口内包含短暂的上下文信息,能够很好地被dnn用于学习自然发音模式。karras等人(terokarras,timoaila,samulilaine,anttiherva,andjaakkolehtinen.audio-drivenfacialanimationbyjointend-to-endlearningofposeandemotion.acmtransactionsongraphics(tog),36(4):94,2017.)进一步提升滑动窗口技术,输入为一个窗口的线性预测编码(linearpredictivecoding,lpc)语音特征,经过两阶段卷积神经网络(对应特征维度的共振峰分析阶段、对应时间维度的发音阶段),以及两层全连接网络,输出一帧三维脸部模型的顶点位置。这两种技术的泛用性较差,尤其是当输入的语音与模型的训练语音差别很大时。cudeiro等人(danielcudeiro,timobolkart,cassidylaidlaw,anuragranjan,andmichaelblack.capture,learning,andsynthesisof3dspeakingstyles.computervisionandpatternrecognition(cvpr),pages10101-10111,2019.)进一步改进,利用现有的语音识别模块来提取语音特征,提升了泛用性;但与此同时,引入的语音识别模块体积过于庞大,也使得该技术生成动画的速度缓慢。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供了一种语音信号驱动的脸部动画生成方法。本发明使用梅尔频谱来提取语音信号的频率特征;参照无表情、闭嘴的脸部模型,计算得到的形变梯度,被用于表示动画中的脸部运动。本发明通过三阶段(对应步骤(2)至(4))的深度神经网络将一个窗口的梅尔频谱特征映射为一帧形变梯度;形变梯度可以用于驱动任意脸部模型,输出的风格可以在深度神经网络中由独热向量进行显示控制。

本发明的目的是通过以下技术方案来实现的,一种语音信号驱动的脸部动画生成方法,包括以下步骤:

(1)提取语音特征:对一个窗口内的语音提取梅尔频谱(melspectrogram)特征;所述特征是由特征图维度、频率维度、时间维度组成的三维张量(tensor)。

(2)收集频率信息:对步骤(1)得到的梅尔频谱,沿着频率维度方向,使用神经网络(neuralnetwork),抽象、收集所有频率信息,得到频率抽象信息。

(3)汇总时间信息:对步骤(2)所得的频率抽象信息,沿着时间维度方向,使用神经网络确定时间上下文中每帧信息的重要程度,并依据重要程度进行汇总,得到时间汇总信息。

(4)解码动作特征:对步骤(3)所得的时间汇总信息,与用户输入的控制风格的独热(one-hot)向量连接;经过两个相似的神经网络分支,分别输出缩放/剪切(scaling/shearing)系数与旋转(rotation)系数,两个分支的输出系数组合起来得到表示脸部动作的形变梯度(deformationgradients)。

(5)驱动脸部模型:对于任意给定的脸部模型(无表情、闭嘴状态),使用步骤(4)得到的形变梯度驱动脸部模型,作出相应的脸部动作。

(6)滑动信号窗口:重复步骤(1)至步骤(5),对所有语音信号窗口进行处理,生成完整的脸部动画。

本发明的有益效果是:步骤(2)收集频率信息的方法,是依据梅尔频谱特性进行设计的,可以鲁棒地抽象语音特征;步骤(3)汇总时间信息的方法,是依据辅音、元音发音原理设计的,可以高效地学习人类自然发音模式;步骤(4)中首次提出在语音驱动的脸部动画中使用形变梯度来表示脸部动作,可以更准确地描述脸部运动的局部变化。本方法达到当前最先进的语音驱动的脸部动画技术水平,且轻量化、鲁棒、可实时(在一定延时下)。本发明可以在vr虚拟社交、虚拟语音助手与游戏等应用中使用语音信号驱动脸部动画的生成。

附图说明

图1是本发明的方法流程示意图;

图2是本发明的方法中步骤(2)中子步骤(2.3)所述记忆单元的工作流程示意图;

图3是本发明的方法中步骤(3)流程示意图;

图4是本发明用语音信号驱动脸部模型动画的实施实例,驱动人类脸部模型说出英文单词“smash”的动画帧顺序节选;

图5是本发明用语音信号驱动脸部模型动画的实施实例,驱动卡通动物脸部模型说出英文单词“smash”的动画帧顺序节选。

具体实施方式

本发明的核心技术利用频率维度的卷积与双向长短时记忆模块抽象语音特征,用时间维度的双向长短时记忆与注意力模块汇总窗口内时间上下文信息,用形变梯度来表示脸部运动。如图1所示,该方法主要分为六个步骤:提取语音特征、收集频率信息、汇总时间信息、解码动作特征、驱动脸部模型以及最后通过在一段语音序列上滑动信号窗口不断重复前五个步骤,获取完整的动画序列。

1.提取语音特征:对一个窗口内的语音提取梅尔频谱(melspectrogram)特征;所述特征是由特征图维度、频率维度、时间维度组成的三维张量(tensor)。

1.1对输入音频窗口长度为laudio的语音信号进行短时傅里叶变换(帧长度为lfft、帧间隔为lhop);使用fmel个梅尔滤波器(melfilters),将傅立叶变换的结果转换到梅尔频率下,得到帧长度为lframe的梅尔频谱。

1.2将梅尔频谱关于时间的第一与第二阶导数作为辅助特征,与原始特征堆叠成3×fmel×lframe形状的张量(tensor),其中第一维的3表示特征图数量,第二维的fmel表示频率维度的长度,第三维的lframe表示时间维度的长度。

2.收集频率信息:对步骤(1)得到的梅尔频谱,沿着频率维度方向,使用神经网络(neuralnetwork),抽象、收集所有频率信息,得到频率抽象信息。

2.1对步骤(1)所得的梅尔频谱,用二维卷积网络,提取梅尔频谱的局部频率特征;所述二维卷积网络依次包括:第一二维卷积层、第一二维最大池化层、第二二维卷积层、第二二维最大池化层;所述两个二维卷积层,分别通过cfreq_conv0、cfreq_conv1个沿着频率维度方向的卷积核(大小都为kfreq×1,其中kfreq表示频率维度方向大小,1表示时间维度方向大小)对输入进行卷积计算获取若干局部特征图(数量等同于卷积核数量),两个二维卷积层都使用负数倾斜率为0.2的带泄漏线性整流(leakyrelu,lrelu)作为激活函数;所述两个二维最大池化层,在沿着频率维度方向的一个区域内(大小都为sfreq×1)选取局部特征最大值,完成下采样池化操作;得到的局部频率特征为一个形状的张量,其中第一维的cfreq_conv1表示特征图数量,第二维的表示频率维度的长度,第三维的lframe表示时间维度的长度。

2.2对步骤(2.1)所得的局部频率特征,用cfreq_conv2个大小为1×1(频率维度与时间维度方向大小都等于1)的卷积核投影局部频率特征;使用负数倾斜率为0.2的带泄漏线性整流(leakyrelu,lrelu)作为激活函数;输出为一个形状的张量,其中第一维的cfreq_conv2表示特征图数量,第二维的表示频率维度的长度,第三维的lframe表示时间维度的长度。

2.3对步骤(2.2)所得的投影之后的局部频率特征,沿着频率维度的正反两个方向,分别用一个长短时记忆单元循环地处理频率维度上的每个特征;如图2所示,所述长短时记忆单元具有一个状态器(用于存储记忆单元的历史信息)和三个门:输入门it作用于每个频率特征xt(x表示输入,下标t表示第t个输入的时刻)与记忆单元上一步的输出ht-1(h表示输出,下标t-1表示第t-1个输入的时刻,即上一步),表示是否允许新的频率特征信息加入到记忆单元的状态器中,数值为0到1(包括两端),如果输入门数值为1(即开门)则加入新信息,如果为0(即关门)则加入零向量,如果为0到1中间数值则将新信息乘以门数值再加入;遗忘门ft作用于记忆单元的状态器,表示是否保留上一步状态器存储的历史频率信息st-1(s表示状态器的状态,下标t-1表示第t-1个输入的时刻,即上一步),数值为0到1(包括两端),如果遗忘门数值为1(即开门)则保留存储的信息,如果为0(即关门)则重置存储信息为零向量,如果为0到1中间数值则将存储信息乘以门数值再保留;输出门ot作用于记忆单元的状态器,表示是否将当前记忆单元的状态st(s表示状态器的状态,下标t表示第t个输入的时刻)作为输出,数值为0到1(包括两端),如果为1(即开门)则当前记忆单元的状态作为输出,如果为0(即关门)则输出零向量,如果为0到1中间数值则将当前记忆单元的状态乘以门数值再作为输出;三个门的具体数值由当前输入xt与该记忆单元上一步的输出ht-1连接、投影得到,其具体公式如下:

其中,xt为当前输入,ht-1为记忆单元上一步的输出;it为输入门数值,wi、bi分别为输入门的权重与偏置参数;ft为输入门数值,wf、bf分别为遗忘门的权重与偏置参数;ot为输入门数值,wo、bo分别为输出门的权重与偏置参数;为对当前输入、上一步输出的投影,wf、bf分别为投影的权重与偏置参数;st-1、st分别为上一步与当前的记忆单元状态器的状态;ht为当前记忆单元的输出。

每个方向的长短时记忆单元的特征图数量为两方向的特征图数量之和为cfreq_lstm,因此本步骤两方向长短时记忆单元的输出为形状的张量,其中第一维的cfreq_lstm表示特征图数量,第二维的表示频率维度的长度,第三维的lframe表示时间维度的长度。

长短时记忆单元的状态器以及围绕状态器运行的三个门,使其可以在分析某个频率特征时充分考虑其他频率的特征,顺应人类发音时会出现共振峰的自然现象。

2.4对步骤(2.3)中沿着频率维度正反两方向长短时记忆单元的输出,全部连接成为一个向量得到形状的张量,其中第一维的表示特征图数量,第二维的lframe表示时间维度的长度;并用一个特征图数量为cfreq的全连接层进行投影,收集所有频率的信息,得到频率抽象信息zfreq为cfreq×lframe形状的张量,其中第一维的cfreq表示特征图数量,第二维的lframe表示时间维度的长度。至此,频率维度被完全收集,抽象到特征图维度中。

3.汇总时间信息:对步骤(2)所得的频率抽象信息,沿着时间维度方向,使用神经网络确定时间上下文中每帧信息的重要程度,并依据重要程度进行汇总,得到时间汇总信息;具体流程如图3所示。

3.1对步骤(2)所得的频率抽象信息,用两个隐藏层,传递时间维度的时间上下文信息;所述每个隐藏层中,沿着时间维度的正反方向,分别用一个长短时记忆单元循环地处理时间维度上的每帧,传递时间信息;所述长短时记忆单元与步骤(2.3)中所述长短时记忆单元结构原理相同,但作用于时间维度方向,具有一个状态器(用于存储记忆单元的历史信息)和三个门:输入门作用于每帧时间特征与记忆单元上一步的输出,表示是否允许新的时间帧信息加入到记忆单元的状态器中,数值为0到1(包括两端),如果输入门数值为1(即开门)则加入新信息,如果为0(即关门)则加入零向量,如果为0到1中间数值则将新信息乘以门数值再加入;遗忘门作用于记忆单元的状态器,表示是否保留上一步状态器存储的历史时间信息,数值为0到1(包括两端),如果遗忘门数值为1(即开门)则保留存储的信息,如果为0(即关门)则重置存储信息为零向量,如果为0到1中间数值则将存储信息乘以门数值再保留;输出门作用于记忆单元的状态器,表示是否将当前记忆单元的状态作为输出,数值为0到1(包括两端),如果为1(即开门)则当前记忆单元的状态作为输出,如果为0(即关门)则输出零向量,如果为0到1中间数值则将当前记忆单元的状态乘以门数值再作为输出;三个门的具体数值由当前输入时间帧(或上一个隐藏层的输出)与该单元上一步的输出连接、投影得到。

每个方向的长短时记忆单元的特征图数量都为两方向的特征图数量之和为ctime,因此本步骤所得的时间上下文信息mfreq为ctime×lframe形状的张量,其中第一维的ctime表示特征图数量,第二维的lframe表示时间维度的长度。

3.2对步骤(3.1)所得的时间上下文信息,用隐藏层权衡上下文中各帧信息的重要性权重并进行加权和汇总;所述隐藏层中,选取时间上下文信息mfreq中间的kqry帧用catt个一维卷积核(大小也为kqry)投影作为询问项qatt(形状为catt×1,其中catt为特征图数量与卷积核数量相同,1为时间维度长度),对整个时间上下文信息mfreq进行线性投影作为键值项katt(形状为catt×lframe,其中catt为特征图数量,lframe为时间维度长度),询问项qatt与键值项katt之和通过tanh激活函数、线性投影(特征图数量从catt投影为1)与softmax归一化,获取每一帧的权重(形状为1×lframe),并使用该权重对时间上下文信息mfreq进行加权和汇总,得到时间汇总信息zatt(形状为ctime,其中ctime为特征图数量);所述隐藏层通过时间维度的权重模仿人类自然发音的模式,例如元音发音时间跨度长,辅音发音则表现为瞬时发音并且与该辅音前后的过渡元音有关。

4.解码动作特征:对步骤(3)所得的时间汇总信息,与用户输入的控制风格的独热(one-hot)向量连接;经过两个相似的神经网络分支,分别输出缩放/剪切(scaling/shearing)系数与旋转(rotation)系数,两个分支的输出系数组合起来得到表示脸部动作的形变梯度(deformationgradients)。

本发明首次在语音驱动的语音动画中,使用形变梯度来表示脸部动作,相比于以往的技术,能够更准确地描述脸部运动的局部变化。

4.1形变梯度

本发明采用了(robertwsumnerandjovanpopovic.deformationtransferfortrianglemeshes.acmtransactionsongraphics(tog),23(3):399-405,2004.)描述的方式计算脸部模型的形变梯度。脸部模型由多个三角形面片组成,用分别表示脸部模型与形变之后的脸部模型中第i个三角形的三个顶点。为了处理垂直于三角形方向的形变,为三角形按照如下公式计算第四个顶点:

第i个三角形的形变梯度是一个满足如下公式的变换矩阵ti:

其中vi与分别由参照和形变三角形的三个向量堆叠而成:

因此,

本发明进一步采用(qianyiwu,juyongzhang,yu-kunlai,jianminzheng,andjianfeicai.alivecaricaturefrom2dto3d.inproceedingsoftheieeeconferenceoncomputervisionandpatternrecognition,pages7336-7345,2018.)描述的方法对变换矩阵进行极分解,ti=risi。其中si表示缩放/剪切变换,为对称矩阵,可以用6个参数表示;ri表示旋转变换,使用rodrigues’formula可以用3个参数表示。因此每个三角形的形变梯度由9个参数表示。

本发明中的形变梯度是定义在一个模板脸部模型上的,该模板脸部模型无表情、闭嘴状态、由n个三角形组成,因此对应的形变梯度包含9n=6n 3n个参数。

4.2解码动作

将用于控制说话人风格的cspeaker维度独热向量与步骤(3)所得的时间汇总信息zatt连接,经过一个特征图数量为cdec0的全连接层与负数倾斜率为0.2的带泄漏线性整流(leakyrelu,lrelu)激活函数得到zdec(形状为cdec0)。之后zdec分别经过两个结构相似、并行的神经网络分支,解码缩放/剪切与旋转参数。

在每个分支中,zdec会再次与cspeaker维度独热控制向量连接,并由三个全连接层进行投影;第一个全连接层特征图数量为cdec1,激活函数为负数斜率0.2的lrelu;第二个特征图数量为cdec2,激活函数为tanh;第三个没有激活函数(在缩放/剪切与旋转分支中,特征图数量分别为cpca_s与cpca_r)。分支的最后是一个固定的线性全连接层(在缩放/剪切与旋转分支中,特征图数量分别为6n与3n),其参数由该分支对应的训练数据的主成分分析基底与均值进行初始化;主成分分析过程中保留97%的能量,缩放/剪切与旋转分支中,保留的基底数量分别为cpca_s与cpca_r(与前述中分支第三个全连接层的特征图数量相同)。两个分支分别解码得到表示缩放/剪切的参数s(大小为6n)与表示旋转的参数r(大小为3n)。

5.驱动脸部模型:对于任意给定的脸部模型(无表情、闭嘴状态),使用步骤(4)得到的形变梯度驱动脸部模型,作出相应的脸部动作。

5.1获取给定脸部模型(由m个三角形组成)与模板脸部模型(由n个三角形组成)的三角形对应关系(本子步骤每个给定模型只需要执行一次):

如果给定脸部模型与模板脸部模型之间拓扑结构不同,则不能直接使用步骤(4)所得的形变梯度,需要首先获取两个模型之间的三角形对应关系;如果拓扑结构相同,则可以直接使用。

本发明采用了(robertwsumnerandjovanpopovic.deformationtransferfortrianglemeshes.acmtransactionsongraphics(tog),23(3):399-405,2004.)描述的方法,在用户给定若干顶点对应关系的情况下自动求解不同拓扑的两个脸部模型之间的三角形对应关系。

所述自动求解方法,首先需要寻找一系列变换矩阵(包含缩放/剪切与旋转变换,不包含平移变换)oi,i∈{1,...,m}将给定脸部模型形变到最接近模板脸部模型的状态。定义如下三个能量方程es、ei、ec与限制条件下的能量方程之和e,最小化e可以将给定脸部模型形变到目标状态:

其中,es表示约束形变平滑度的能量,m为给定脸部模型中三角形的数量,adj(i)表示第i个三角形周围邻接三角形的集合;ei表示约束形变程度的能量,i表示单位矩阵;ec表示形变之后两个模型顶点距离的能量,n为给定脸部模型中顶点的数量,为形变之后的给定脸部模型第i个顶点的位置,ci为在模板脸部模型中最接近的顶点的位置;e为前三能量项之和,表示形变之后的给定脸部模型中的n个顶点位置,ws、wi、wc分别为es、ei、ec对应的权重,该能量方程服从于用户给定的m个顶点对应关系,为第k个顶点对应关系中形变之后的给定脸部模型的顶点位置,mk为第k个顶点对应关系中顶点的目标位置。

由于最小化上述能量方程e的过程中,需要寻找也就是为形变之后的给定脸部模型的每个顶点,在模板脸部模型中寻找最近顶点;而随着优化过程,顶点位置发生变化,最近顶点的关系也在发生变化;因此需要迭代寻找最近顶点、最小化上述能量方程e的过程若干步。

将给定脸部模型形变到最接近模板脸部模型的状态之后,计算模板脸部模型与形变之后的给定脸部模型中所有三角形的质心。对形变之后的给定脸部模型中每个三角形,在模板脸部模型中寻找合理对应三角形,需要满足质心距离小于一定阈值(手动调整)并且两个法向量夹角小于90°。相同地也对模板脸部模型中每个三角形,在形变之后的给定脸部模型中寻找合理对应三角形。所有的合理对应关系,组成了两个模型间的三角形对应关系。

5.2将对应模板脸部模型的形变梯度迁移到给定脸部模型上:

将步骤(4)所得的缩放/剪切参数s与旋转参数r恢复成模板脸部模型所有三角形的变换矩阵集(其中n为模板脸部模型的变换矩阵数量,等于其三角形数量);根据步骤(5.1)所得的三角形对应关系构建出给定脸部模型的变换矩阵集(其中m′为给定脸部模型的变换矩阵数量;给定脸部模型中的一个三角形k,如果在模板脸部模型中不拥有对应三角形,则使用单位矩阵作为k的变换矩阵;如果拥有一个对应三角形,则直接使用对应三角形的变换矩阵作为k的变换矩阵;如果拥有多个对应三角形,则将k复制若干份,每份对应其中一个;由于存在拥有多个对应三角形的情况,因此最终得到的变换矩阵数量m′≥m)。

5.3依据迁移的形变梯度,求解给定脸部模型的顶点位置:

通过最小化如下能量方程,求得对应迁移的形变梯度下,给定脸部模型顶点位置

其中c是由堆叠而成,a是一个将c与关联起来的大型稀疏矩阵。通过设置能量方程梯度为0,可以由以下公式求解:

由于a只与给定脸部模型有关,a和ata可以预先计算,且每个模型只需要一次预计算。

6.滑动信号窗口:重复步骤(1)至步骤(5),对所有语音信号窗口进行处理,生成完整的脸部动画。

在整段输入语音信号上,以秒的间隔获取一系列音频窗口,对于每个窗口重复步骤(1)至步骤(5),生成完整的动画,动画的帧率为fps帧每秒。生成速度可达实时,延时为(其中laudio为步骤(1)中所述的输入音频窗口长度)。

实施实例

损失函数:发明人使用监督学习的方法训练步骤(2)至步骤(4)中涉及的神经网络参数。将语音与动画数据组织成若干数据对(xt,yt),其中xt表示第t帧数据对应的语音信号窗口,yt表示对应的形变梯度参数。按照步骤(4)中的描述,yt可以进一步分为缩放/剪切部分与旋转部分训练过程中,步骤(4)的输出标记为对于两部分参数,本发明使用相似的能量项进行约束,以缩放/剪切部分为例,能量项包含考虑绝对数值的与考虑数值时间导数的

对于旋转部分,的定义方式与上述公式相似。最终的损失函数是四个能量项的加权和,权重使用karras等人(terokarras,timeaila,samulilaine,anttiherva,andjaakkolehtinen.audio-drivenfacialanimationbyjointend-to-endlearningofposeandemotion.acmtransactionsongraphics(tog),36(4):94,2017.)提出的技术进行自动动态平衡。

训练实例:发明人在一台配备intelcorei7-8700k中央处理器(3.70ghz),nvidiagtx1080ti图形处理器(11gb)的计算机上实施本发明的实例。实施过程中使用数据库vocaset(danielcudeiro,timebolkart,cassidylaidlaw,anuragranjan,andmichaelblack.capture,learning,andsynthesisof3dspeakingstyles.computervisionandpatternrecognition(cvpr),pages10101-10111,2019.)对模型进行训练。

模型参数:发明人在实施本发明的实例时,步骤(1)到(6)所涉及的参数如下:

(1)提取语音特征:音频窗口长度laudio=0.568秒;短时傅立叶变换帧长度lfft=0.064秒,帧间隔lhop=0.008秒;梅尔滤波器个数fmel=128;所得梅尔频谱帧数lframe=64。

(2)收集频率信息:卷积核的数量(也是卷积之后特征图的数量)分别为cfreq_conv0=32,cfreq_conv1=64,cfreq_conv2=64;前两层卷积核大小kfreq=3,池化区域大小sfreq=2;频率维度的两方向长短时记忆单元的特征图数量之和为cfreq_lstm=64(即单一方向特征图数量为32);全连接投影特征图数量cfreq=256。

(3)汇总时间信息:时间维度的两方向长短时记忆单元的特征图数量之和为ctime=512(即单一方向特征图数量为256);注意力模块中kqry=3,catt=128。

(4)解码动作特征:模板脸部模型的三角形数量n=9976;说话人风格控制向量维度cspeaker=8;第一个全连接层特征图数量cdec0=512;每个分支中前两个全连接层特征图数量cdec1=512,cdec2=256;缩放/剪切的参数s保留的主成分分析基底数量(也是缩放/剪切分支第三个全连接层特征图数量)cpcas=85,旋转的参数r保留的主成分分析基底数量(也是旋转分支第三个全连接层特征图数量)cpca_r=180。

(5)驱动脸部模型:m由具体给定模型参数决定;在步骤(5.1)中迭代优化公式(5)的过程中,第一步ws=1.0、wi=0.001、wc=0,之后再迭代四步,wc由1变到5000。

(6)滑动信号窗口:重复步骤(1)至(5):动画帧率fps=60。

实例时耗:将vocaset的脸部模型作为模板脸部模型(由9976个三角形组成),并在vocaset的数据上训练模型50次迭代,耗时约5小时。对于输入的语音信号,每一个窗口生成一帧动画(从步骤(1)至(5),步骤(5)中直接驱动模板脸部模型)耗时约10毫秒,达到实时的速率。对于拓扑结构不同于模板脸部模型的其他给定脸部模型,需要事先按照步骤(5.1)进行模型三角形对应关系的设定,根据模型复杂度以及实施人员的熟练度,耗时大约在15~40分钟;对于任意模型此工作只需进行一次。

动画节选:发明人实施本发明实例,用语音信号驱动脸部动画。使用vocaset的脸部模型生成语音动画,其顺序节选帧如图4所示(图中人物正在说英文单词“smash”);使用拓扑不同于模板脸部模型的卡通动物脸部模型生成语音动画,其顺序节选帧如图5所示(图中卡通动物正在说英文单词“smash”)。


技术特征:

1.一种语音信号驱动的脸部动画生成方法,其特征在于,包括以下步骤:

(1)提取语音特征:对一个窗口内的语音提取梅尔频谱特征;所述特征是由特征图维度、频率维度、时间维度组成的三维张量。

(2)收集频率信息:对步骤(1)得到的梅尔频谱,沿着频率维度方向,使用神经网络抽象、收集所有频率信息,得到频率抽象信息。

(3)汇总时间信息:对步骤(2)所得的频率抽象信息,沿着时间维度方向,使用神经网络确定时间上下文中每帧信息的重要程度,并依据重要程度进行汇总,得到时间汇总信息。

(4)解码动作特征:对步骤(3)所得的时间汇总信息,与用户输入的控制风格的独热向量连接;经过两个神经网络分支,分别输出缩放/剪切系数与旋转系数,两个分支的输出系数组合起来得到表示脸部动作的形变梯度。

(5)驱动脸部模型:对于任意给定的无表情、闭嘴状态脸的部模型,使用步骤(4)得到的形变梯度驱动脸部模型,作出相应的脸部动作。

(6)滑动信号窗口:重复步骤(1)至步骤(5),对所有语音信号窗口进行处理,生成完整的脸部动画。

2.根据权利要求1所述的语音信号驱动的脸部动画生成方法,其特征在于,所述步骤(1)包含如下子步骤:

(1.1)对输入音频窗口长度为laudio的语音信号进行短时傅里叶变换,帧长度为lfft、帧间隔为lhop;使用fmel个梅尔滤波器,将傅立叶变换的结果转换到梅尔频率下,得到帧长度为lframe的梅尔频谱。

(1.2)将梅尔频谱关于时间的第一与第二阶导数作为辅助特征,与原始特征堆叠成3×fmel×lframe形状的张量,其中第一维的3表示特征图数量,第二维的fmel表示频率维度的长度,第三维的lframe表示时间维度的长度。

3.根据权利要求1所述的语音信号驱动的脸部动画生成方法,其特征在于,所述步骤(2)包含如下子步骤:

(2.1)对步骤(1)所得的梅尔频谱,用二维卷积网络,提取梅尔频谱的局部频率特征;所述二维卷积网络依次包括:第一二维卷积层、第一二维最大池化层、第二二维卷积层、第二二维最大池化层;所述两个二维卷积层,分别通过cfreq_conv0、cfreq_conv1个沿着频率维度方向的大小都为kfreq×1的卷积核对输入进行卷积计算获取若干局部特征图,其中,所述局部特征图的数量等同于卷积核数量,kfreq表示频率维度方向大小,1表示时间维度方向大小;两个二维卷积层都使用负数倾斜率为0.2的带泄漏线性整流作为激活函数;所述两个二维最大池化层,在沿着频率维度方向的大小为sfreq×1的区域内选取局部特征最大值,完成下采样池化操作;得到的局部频率特征为一个形状的张量,其中第一维的cfreq_conv1表示特征图数量,第二维的表示频率维度的长度,第三维的lframe表示时间维度的长度;

(2.2)对步骤(2.1)所得的局部频率特征,用cfreq_conv2个大小为1×1的卷积核投影局部频率特征;使用负数倾斜率为0.2的带泄漏线性整流作为激活函数;输出为一个形状的张量,其中第一维的cfreq_conv2表示特征图数量,第二维的表示频率维度的长度,第三维的lframe表示时间维度的长度,所述大小为1×1表示频率维度与时间维度方向大小都等于1;

(2.3)对步骤(2.2)所得的投影之后的局部频率特征,沿着频率维度的正反两个方向,分别用一个长短时记忆单元循环地处理频率维度上的每个特征;

(2.4)对步骤(2.3)中沿着频率维度正反两方向长短时记忆单元的输出,全部连接成为一个向量得到形状的张量,其中第一维的表示特征图数量,第二维的lframe表示时间维度的长度;并用一个特征图数量为cfreq的全连接层进行投影,收集所有频率的信息,得到频率抽象信息zfreq为cfreq×lframe形状的张量,其中第一维的cfreq表示特征图数量,第二维的lframe表示时间维度的长度。至此,频率维度被完全收集,抽象到特征图维度中。

4.根据权利要求1所述的语音信号驱动的脸部动画生成方法,其特征在于,所述步骤(3)包含如下子步骤:

(3.1)对步骤(2)所得的频率抽象信息,用两个隐藏层传递时间维度的时间上下文信息mfreq;所述每个隐藏层中,沿着时间维度的正反方向,分别用一个长短时记忆单元循环地处理时间维度上的每帧,传递时间信息;每个方向的长短时记忆单元的特征图数量都为两方向的特征图数量之和为ctime,所述时间上下文信息mfreq为ctime×lframe形状的张量,其中第一维的ctime表示特征图数量,第二维的lframe表示时间维度的长度;

(3.2)对步骤(3.1)所得的时间上下文信息,用隐藏层权衡上下文中各帧信息的重要性权重并进行加权和汇总;所述隐藏层中,选取时间上下文信息mfreq中间的kqry帧用catt个一维的大小为kqry的卷积核投影作为询问项qatt,对整个时间上下文信息mfreq进行线性投影作为键值项katt,询问项qatt与键值项katt之和通过tanh激活函数、线性投影与softmax归一化,获取每一帧的权重,并使用该权重对时间上下文信息mfreq进行加权和汇总,得到时间汇总信息zatt;所述询问项qatt的形状为catt×1,其中,询问项catt为特征图数量与卷积核数量相同,1为时间维度长度;键值项katt的形状为catt×lframe,其中,catt为特征图数量,lframe为时间维度长度;所述线性投影的特征图数量从catt投影为1,所述权重的形状为1×lframe;时间汇总信息zatt的形状为ctime,其中ctime为特征图数量。

5.根据权利要求1所述的语音信号驱动的脸部动画生成方法,其特征在于,所述步骤(4)中使用形变梯度来表示脸部动作,所述形变梯度定义在一个模板脸部模型上,该模板脸部模型为无表情、闭嘴状态,由n个三角形组成。

6.根据权利要求1所述的语音信号驱动的脸部动画生成方法,其特征在于,所述步骤(5)包含如下子步骤:

(5.1)获取给定脸部模型(由m个三角形组成)与模板脸部模型(由n个三角形组成)的三角形对应关系,所述脸部模型由m个三角形组成,所述模板脸部模型由n个三角形组成;

(5.2)将对应模板脸部模型的形变梯度迁移到给定脸部模型上;

(5.3)依据迁移的形变梯度,求解给定脸部模型的顶点位置。

技术总结
本发明公开了一种语音信号驱动的脸部动画生成方法,该方法主要分为六个步骤:提取语音特征、收集频率信息、汇总时间信息、解码动作特征、驱动脸部模型以及滑动信号窗口。本发明可以根据输入的语音音频信号,在一定延时下实时地驱动任意脸部模型,生成动画;动画质量达到当前最先进的语音动画技术水平,并且有轻量化、鲁棒性好的特点。本发明可以用于生成不同场景下的语音动画,如VR虚拟社交、虚拟语音助手以及游戏。

技术研发人员:周昆;柴宇进;翁彦琳;王律迪
受保护的技术使用者:浙江大学;杭州相芯科技有限公司
技术研发日:2019.12.26
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-48580.html

最新回复(0)