从单个音频生成语音面部动画
【原文:《Audio2Face: Generating Speech/Face Animation from Single Audio with Attention-Based Bidirectional LSTM Networks》于2019年5月IEEE International Conference on Multimedia & Expo Workshops(ICMEW)发表】
2019年5月,浙江大学网络系统与控制研究所,伏羲AI实验室与网易合作在2019 IEEE International Conference on Multimedia & Expo Workshops (ICMEW)发表名为《Audio2Face: Generating Speech/Face Animation from Single Audio with Attention-Based Bidirectional LSTM Networks》。主要描述通过一段音频,精确模拟发声人的唇部动作和面部表情。
现在基于视觉的面部捕捉技术在模拟人类面部表情上取得了很大的成功,但是动态捕捉技术因为其复杂的设置和处理步骤而十分的昂贵和耗时。并且事实上只有在关键动画部分才会应用到视觉捕捉技术,那么我们是否可以用更低成本的音频或者文本来生成其他细节部分呢?答案是肯定的。
1. 采用双向LSTM的深度神经网络
(1)双向RNN计算前向状态序列和后向状态序列
(2)H是LSTM层输出的一个矩阵,由输出向量H =[h1, h2, ..ht.., h T ] 组成,这里的T代表句子的长度,表征y是通过注意力机制层输出向量的加权和形成的序列
(3)本文使用引入注意力机制的Bi -RNN模型
2. 音频特征的提取
本文选取了两种音频特征提取的方式发现MFCC的表现更加好。但近年来一种新的音频特征提取方式正在取代MFCC,名为filter bank output的音频特征提取方式在2019年有关语音的顶会论文中采用率高达75%而MFCC只有18%。所以在这里如果换成这种新的特征提取方式实验的效果会不会更好?
3. 训练的数据集
训练的数据集主要分成两种:一个女性演员一个男性演员。
女演员被要求从不同场景读长度较短四个文本(每个文本持续约15分钟),在4个数据集中(F1,F2,F3,F4),我们最后得到的动画的目标主要聚焦在女演员的脸部下半部分。而男演员需要读长度较长的两个文本(每个文本持续30分钟),同时我们捕捉男演员的整个脸部表情,有2个数据集(M1,M2)。建立合适大小的训练集,每个演员60分钟会有不错的结果。
4.损失函数
本文设计一个比较特殊的损失函数包含两个损失:target Loss和smooth Loss。
Target Loss:为了确保输出的改变脸部形状的参数能大致正确,本文选取Huber loss作为target loss,这种损失函数比MSE和MAE两种损失函数的收敛到最小值速度更加快。
δ是一个可以调整的超参数,本文设置为1
Smooth Loss:因为声学音素在相邻帧之间的相似性,如果训练网络只用target loss的话会导致可考虑数量的不稳定,就像对一些个别的音素反应会很小。因此引入了smooth loss ,本文使用余弦距离在两个相邻的帧样本之间来设置smooth loss。
4. 与其他方法进行对比:实验结果表明256个节点每一层对于语音动画任务能得到一个可以接受的结果,尽管512个节点在面部动画任务上的表现更加的优异。
5.本文具体流程模型图如下:
本文提出端到端的深度学习方法,将输入音素的标签最后正确的映射到最后调节面部表情的参数上。
最后值得思考的问题:如何处理眨眼睛这种和语音没有什么联系的面部动作?如果引用恒定的眨眼机制会不会面部会显得僵硬,这也是这个实验需要去完善的部分。
撰稿:李砚龙
审稿:丁美荣