[Paper Reading] Capture, Learning, and Synthesis of 3D Speaking Styles

Overview

Overview

本文提出了一种与说话声音以及人脸形状无关的语音表情驱动方法。其中音频通过现有的DeepSpeech提取MFCC音频特征,通过编码器提取音频特征,并在特征上叠加区分说话人(及风格)的编码,用于提取说话人风格以及音频特征。通过解码器输出逐顶点的偏移量,叠加到人脸模版上,即可得到语音对应的表情动画。根据合成的表情模型采用现有的FLAME模型很容易提取到当前的人脸形状和表情系数,通过修改或替换人脸形状系数,即可得到任意脸型的说话表情。

语音驱动表情的泛化问题

语音和表情之间的关联关系十分复杂,具有较好泛化能力的模型需要考虑两个方面因素:

  • 相同的说话内容,给定不同的说话人的风格、口音、语言等都能够有较好的泛化能力,即相似的说话表情动画
  • 相同的说话内容,给定不同的脸型和动作都能够有较好的泛化能力,即相似的说话表情动画

目前已有的方法较少考虑数据集中说话者脸型对说话表情的影响。通常数据集中语音数据的variance要远远大于脸型的variance(采集者数量)。大部分3D表情数据直接从通过scan或重建等方式得来,包含了采集者的具体脸型。如果不加以区分,则实际学习到的是从语音到特定若干类型脸型的人脸表情动画,因此导致在其它目标脸型上动画表情泛化效果不好。

音频特征

论文使用现有的DeepSpeech模型对音频进行语音识别处理,提取音频特征。DeepSpeech是端到端的语音识别模型,改进的版本可以用于提取26个字母的MFCC音频特征,描述了当前语音所对应的字母的概率,对包含噪声、不同语言类型以及不同来源的音频输入具有较好的泛化能力。实际输入的音频增加一维,描述了默音的概率。

表情特征

论文采用了现有的FLAME人脸表情概率模型,该模型从人脸形状系数、人脸Pose、人脸表情等多维度描述不同人脸的不同表情。给定人脸表情系数,位姿以及脸型系数,即可得到相对标准人脸模版的顶点偏移量。将偏移量叠加到标准人脸模版上,即可得到对应的表情。

网络结构

网络采用编解码器结构,结构图如下所示:

Network Architecture

经过DeepSpeech提取的音频特征的维度为27(原文29,未知原因),训练集包含八位采集者的音频数据,用维度为8的one-hot向量进行编码区分。将身份编码向量直接连接到音频特征组成长度为35(原文37=29+8)的特征向量。为了包含发音中的时序因素,实际采用时间窗口长度为16,包含前后各8帧的序列组成维度为16*35的音频特征图,作为编码器输入。

解码器包含四个卷积层和两个全连接层。卷积层采用3*1的卷积核在时序卷积,提取音频特征的帧间关系。另外分别采用32和64个卷积核,减少网络参数,避免过拟合。在经过卷积层处理,输出长度为64维的特征向量。连接身份编码向量后(72=64+8),输出给维度为128和50的两个全连接层。

解码器由一个全连接层组成,输入维度为50,对应表情系数;输出维度为5023*3,对应模型各顶点各分量坐标(x,y,z)的偏移值。使用训练集表情模型的PCA分量初始化解码器网络参数。

Loss Functions

损失函数包括两个部分:位置项计算预测的输出与真实人脸表情模型之间的顶点欧式距离误差;速度项计算了预测输出和真实模型逐顶点的速度差。顶点速度由连续两帧顶点位置差计算得到。两个部分的权重为1.0和10.0。

模型训练

训练数据集

为了包含丰富多样包含音频和3D表情数据的4D数据集,论文构建了VOCASET数据集,包含了12个采集者,每个采集者480段3-4秒钟的音频数据,并同时立体相机以60FPS帧率重建人脸3D表情模型。重建的3D表情模型序列经过FLAME模型对齐,得到拓扑一致的,包含5023个顶点的表情模型数据,并将人脸位姿调正。

原始音频数据经过DeepSpeech离线处理,每秒音频数据输出50帧的音频特征,即音频单帧长度为0.02s。为了对齐3D人脸模型重建帧率,通过线性差值,得到每秒60帧的音频特征数据。为了考虑音频的时序性,采用长度为16的滑动窗口获取音频特征序列作为输入。

最终的训练数据集以16帧音频数据-单帧人脸表情数据对方式组织,用于网络训练。其中单帧人脸表情数据对应着音频序列中的最中间帧时的表情。

训练参数设置

网络基于TensorFlow实现,采用Adam优化器,epoch=50,学习率为1e-4。采用minbatch进行训练,尺寸为64.

总结

通过将说话者的身份编码连接到音频特征上,引导网络区训练集中不同脸型对说话表情的影响。此处不同脸型是针对训练集,而非推断过程中网络能够自动从声音中辨别脸型。实际推断过程中,需要用户来输入固定长度的身份编码(在训练集中选择特定脸型),或者通过差值训练集上身份编码,得到混合脸型上的表情。脸型对表情的影响依赖于数据集中脸型的丰富程度。本文整个Pipeline较长,前期需要DeepSpeech提取音频,中间使用encoder-decoder网络做映射,后期使用FLAME模型做实际的表情驱动和迁移。其VOCASET数据集只能作为研究使用,而FLAME模型只提供模型,并只可做研究使用。

你可能感兴趣的:([Paper Reading] Capture, Learning, and Synthesis of 3D Speaking Styles)