原文链接:https://ieeexplore.ieee.org/abstract/document/9767771/
一、研究内容
现有的相关算法中常用说话人识别作为辅助任务来做情绪识别,虽然这些方法能减少个体间的声纹差异,但无法减少个体间的表达差异。这里的表达差异指不同的人对同一种情绪的演绎有所不同,比如同样是高兴,有的人会哈哈大笑,而有的人只会呵呵一笑。
本文假设个人基准可以被建模为个体重型言语的表示,利用已有的个体中性语音做减法,从而消去声纹以及个体表达的差异。
二、模型架构
1.模块解释:
1.Emotion Encoder: 情绪编码器,输入为声谱图,由提取深度信息的残差卷积层和聚合时间的平均池化层组成,输出为情绪嵌入。
2.Neutral Encoder: 中性编码器,结构与情绪编码器相同,输入为同一个人的 K 条中性语音,输出为 K 个嵌入。
3.Averager:用于平均中性编码器的输出的 K 个嵌入,同一个人的中性语音嵌入呈正太分布。
4.Translator: 用于将情绪编码器输出的嵌入转换为基准嵌入,内含多个注意力块,用于情绪特征的分离和个体基准信息的保留。
5.Standardizer: 已经证明,人脸图像可以表示中性人脸和情感人脸的叠加,此标准器用于标准化情绪嵌入。
6.Classifier: 将提取到的情绪信息用于情绪分类。
这里已经有了中性语音嵌入,却不直接将情绪语音嵌入减去已有的中性语音嵌入,而是将情绪语音嵌入做转换得到自己的基准嵌入,把这个基准嵌入用到减法当中,能取得更好的效果。
2.三个损失函数:
1.Le 为中性编码器得到的同一个人的多个嵌入之间的距离之和,由于L2距离容易使得相似的距离变小(?),会导致梯度消失问题,因此此处选择L1距离。
2.Lt 为已有中性语音嵌入和由情绪语音得到的基准嵌入之间的距离。
3.Lc 为分类损失,采用交叉熵损失函数。
三、训练
若将上图中的结构统一训练,Lc 的训练会导致中性编码器失效。因此,需要先用 Lc 对中性编码器单独训练。总体的训练步骤如图: