【论文笔记】语音情感识别之手工特征深度学习方法
本文章主体基于PilgrimHui的论文笔记:《语音情感识别(三)手工特征+CRNN》,在原来基础上,补充了数据处理部分以及论文方法的一些细节,欢迎语音情感分析领域的同学一起讨论。
1. Emotion Recognition from Human Speech Using Temporal Information and Deep Learning(2018 InterSpeech)
(1)数据处理:Hamming窗,窗大小30ms,窗移10ms得到多个frames。每个frame采用的特征向量为eGeMAPS特征集中的20个特征,得到长度为20维的向量。每个utterance使用裁剪和padding的做法使得定长512帧,所以输入为20x512的矩阵。每个样本归一化到0均值1标准差(根据对应的说话人)。使用的数据集为EmoDB。7分类。
(2)模型方法:首层卷积只沿着时间方向卷,没有频率方向的卷积。经过max pooling, global conv, max pooling等操作,得到128*64的feature maps。按列输入LSTM(长度为128的列向量)获取时序特征,softmax分为7类。实验时采用Leave-One-Speaker-Out测试效果。
(3)准确率为88.9%,跟传统ComParE+SVM 86%的效果比,高出近3%。不过该数据集我实验时6分类达到90+%。
2. Speech Emotion Recognition from Variable-Length Inputs with Triplet Loss Function(2018 InterSpeech)
(1)数据处理:IEMOCAP数据,筛选出标签置信度大的样本,按0.06s分帧,得到句子的平均帧731,设定统一句子长度F为800(根据实验)。使用的特征基于ComParE特征集,对每帧使用openSMILE库提取了147个LLDs(Low level Descriptors)。
(2)模型方法:语音情感识别方面的前人工作主要集中于特征和模型的探索,本文将triplet loss应用到模型中,输入三个样本,用LSTM提取特征,训练。最后从loss层的前一层取出特征向量送到SVM分类。
(3)Triplet loss:锚点的选取:从positive中选出离negative距离最近的点并且离positive其他点最远的点。如果从所有数据集选取计算量很大,因此在每个batch中选取。通过triplet loss学习,使得锚点离负类远,离正类近。triplet loss的好处是类内距离变小,类间距离拉大。配合交叉熵的有监督学习,保留原始标签信息。
(4)通常在一定长度内,句子越长情感识别的准确率越高。并且情绪的信息往往在句子的中段,因此对于过长的句子掐头去尾。
(5)获得等长输入的做法有:计算一个utterance上很多帧特征,然后对这些帧做一个统计(比如均值,最大值等等);做裁剪和padding使得等长;全卷积加全局池化。
(6)本文使用了三种padding策略,第一种就是按最后一帧的值pad直到达到指定长度,称为pad mode。第二种就是按原序列从头到尾的值进行pad,如果不够长就继续从原序列的头到尾序列pad,重新多次,直到长度大于指定长度,取的时候从中间随机选择连续的F帧,称为cycle mode,实验证明cycle mode效果最好。第三种跟第二种类似,只不过是重复第一帧的值来pad,然后重复第二帧的值来pad,直到最后一帧的值,取的时候也是从中间随机选择连续的F帧。
对于长度大于F的句子,掐头去尾保留连续的F帧。
(7)数据集使用的IEMOCAP,值得一提的是这篇论文只是提出了新颖的方法(triplet loss和cycle mode),在实验中的方法对比上并没有凸出模型表现的优势。
3. Exploring Spatio-Temporal Representations by Integrating Attention-based Bidirectional-LSTM-RNNs and FCNs for Speech Emotion Recognition(2018 InterSpeech)
(1)数据处理:一个句子按时间窗1024切分成多个帧,每帧的长度是1024个点,对每帧用YAAFE提取743维特征,之后用PCA做白化。IEMOCAP数据4分类。CHEAVD中文数据8分类。
(2)模型方法:模型分为CNN和BLSTM两部分。CNN对句子的特征矩阵进行卷积,提取卷积特征。BLSTM沿时间轴进行时序建模,采用attention提取时序特征。最后拼接两部分特征加全连接网络,预测最后标签。
(3)实验结果CHEAVD和IEMOCAP上分别46.3和64的WA,效果优于单个CNN或BLSTM模型,但相比业界其他模型效果一般。
4. Learning Spontaneity to Improve Emotion Recognition in Speech(2018 InterSpeech)
(1)数据集为IEMOCAP,在识别情感之前先做一个自发性检测,之后对于自发性的情感和念稿子的情感分别训练不同的SVM分类器。发现这么做可以提高表现,而且自发性情感的准确率会更高。
(2)特征集使用的是InterSpeech 2009 挑战赛的特征集,主要有MFCC,ZCR,VP,F0等,共k维特征(每帧)。然后做平滑后计算一阶delta,变成2k维。对这些特征计算12种统计量,最后得到24k维的向量。
(3)启发:提前判别情感的自发性可提升SA效果,如果先判别性别等信息,是否能提升性能。
5. Automatic Speech Emotion Recognition Using Recurrent Neural Network with Local Attention(2017 ICASSP)
(1)数据处理:25ms的时间窗,每秒100帧,每帧提取257维的FFT频谱特征和32维的LLD特征,分别用于不同实验。根据全数据集的均值和标准差做正则化。IEMOCAP数据4分类。
(2)SER比较流行的传统做法是在LLDs做统计得到HSFs然后喂给分类器(比如最常用的SVM),常用的LLDs和HSFs如下图所示。但是有个挑战就是如何平衡这二者,因为LLDs是在短时帧上计算的静态特征,HSFs是在一个utterance上对多个帧做统计聚合得到的动态特征,如果只使用HSFs的话会忽略“句子中有些沉默段或非感情段是无效区”这个事实,只使用LLDs的话特征层次太低,而且也没有做显著性区域捕捉。
(2)模型方法:论文提出了Weighted Pooling的方法,对比通常的几种做法,发现这么做可以提高准确率。如下图(a)就是传统的做法通过计算HSFs然后喂给分类器的做法,图(b)是给每一帧都分类标签然后计算损失,图(c)是只取最后一个(和第一个)时间步的输出,图(d)是对所有时间步的输出取均值,图(e)就是利用注意力机制来做加权求和,图(f)只是在(e)的基础上把注意力的计算抽象成一个Attention Model。图(e)的WA和UA效果最佳(63.5%,58.8%)。
(3)Attention机制可以使模型聚焦到有声音的帧,忽略掉静音帧或噪音帧,可以取代VAD的作用。
(4)数据集是IEMOCAP,输入的特征使用了两种,一种是原始声谱(257维的FFT向量),一种是手工LLDs。论文还做了原始声谱+DNN(下图图a的模型)和手工LLDs+SVM的对比,发现由DNN自己学习特征的模型可以得到更高的准确率。
6. An End-to-End Deep Learning Framework with Speech Emotion Recognition of Atypical Individuals(2018 InterSpeech)
(1)数据处理:音频信号处理细节未给出,数据集为EmotAsS,由2018 InterSpeech挑战赛提供,是非典型人群(残疾人)的语音情感数据。
(2)论文调查了三种特征,原始信号,CQT声谱图,STFT声谱图,发现STFT声谱图最好。
(3)论文比较了三种模型,CRNN,ResNet,CNN结合扩展特征(openSMILE提取的COMPARE特征)。发现做了数据平衡后,CRNN的效果最好。没做数据平衡前,CNN结合扩展特征的效果最好。
(4)论文使用了数据增强和数据平衡技术,可以提高模型表现。其中数据增强时speed rate为0.9时效果最好(模型为CRNN)。
(5)因为挑战赛的baseline中,使用各种特征的SVM都打败了端到端的框架,所以论文还做了SVM的实验来证明论文的模型比SVM好,SVM使用的特征集分别有ComparE和BoAW。
(6)最后做结果级融合,融合SVM和CRNN,效果达到最佳。
7. What is my Dog Trying to Tell me? The Automatic Recognition of The Context and Perceived Emotion of Dog Barks(2018 ICASSP)
(1)数据描述:通过狗吠声来识别狗的情感和状态,情感Emotion有五种(Aggression,Fear,Despair,Fun,Happiness),状态Context有七种(Alone,Ball,Fight,Food,Play,Stranger,Walk),数据集称为EmoDog。含12只马地犬,226句狗吠。
(2)数据处理:论文使用的特征有eGeMAPS特征,ComparE特征,MFCC和一阶差分,二阶差分。做实验时候把ComparE分成两种:ComparE Pros(prosodic韵律学的)和ComparE Spec(spectral和cepstral频谱和倒谱)。另外还使用了BoAW的模式来计算特征(使用openXBOW库获得)。
(3)模型方法:论文主要对比不同特征集的效果,并无算法上的创新。下图是不同特征在SVM上的分类结果,调用liblinear库实现。另外论文还做了回归预测的实验,预测情感强度,调用libsvm库来实现SVR。其中Emotion任务中88维的eGeMAPS特征的效果最佳,Context任务中ComParE特征集效果最好。
8. Towards Temporal Modelling of Categorical Speech Emotion Recognition(2018 InterSpeech)
(1)一句话含有多个segments,作者假设不是每个segment都含有情绪。一些静音、暂停、音素转换、不发声的音素等片段被认为是不含情绪的。因此一句话可以切分成一系列片段,包含有情绪和无情绪两类。通过基于LSTM的CTC机制,可以对每个segment判断是否有情绪,并且对应到具体的情绪类别。
(2)预处理方法:首先根据语音的标注文本得到句子的音素序列:有文本时采用CMU发音字典可得,没文本时采用ASR模型可得。每个音素对应一个标签,但是当前不知道语音的帧的边界,即一个音素的起止点。
(3)CTC方法:句子按一定时间窗切片,LSTM-CTC模型将每个切片对应到5类(Angry, Happy, Neutral, Sad,Null),之后去除连续类和Null类,如
B(Null Null Angry Null Angry Angry Null Null) = (Angry Angry)
B(Null Angry Angry Null Null Null Angry Null) = (Angry Angry)
最后跟对应的音素标签求交叉熵loss。
(4)LSTM的输出长度和标签长度不匹配,通常有三种做法,final-pooling取最后一帧输出,mean-pooling对所有帧取平均,weighted-pooling利用注意力机制加权求和。本文使用了CTC的机制,实验表明比之前三种方法要好。数据集为IEMOCAP。对于CTC的介绍见另一篇笔记CTC介绍。
(5)输入的帧水平特征为238个LLDs(以GeMAPS和2016 InterSpeech挑战特征集ComparE为基础),通过openSMILE库获得。
9. Emotion Identification from raw speech signals using DNNs(2018 InterSpeech)
(1)数据处理:比较了不同的特征提取方法:MFCC,时域特征,频域特征。MFCC采用23维的MFCC输入到DNN;时域特征采用40ms的时间窗,窗移30ms,对每个时间窗采用一维卷积,卷积步移1.25ms,之后连接Network-in-Network(NIN)非线性层,进行训练[6];频域特征跟时域类似,不同的是对频谱进行二维卷积,具体设定参考论文[16]。IEMOCAP四分类。实验结果标明时域特征效果最佳。
(2)模型方法:时延神经网络TDNN,卷积网络CNN的前身,计算过程类似卷积,对限定时间窗下的频谱矩阵进行全连接计算,并随着时间轴往前推进。TDNN可以表达语音特征在时间上的关系。具体参考博客。
(3)TDNN-Statistics Pooling:TDNN在每个时间窗下(含多个delayed frame)的输出求均值和标准差,然后拼接多个均值和标准差,输入到softmax层,如此,对输入的多个frame将得到一个预测标签。缺点是对于静音帧、非语音帧也计算了loss,而往往这些帧是不带感情信息的。
(4)TDNN-LSTM:在TDNN上接LSTM,每帧的对应一个标签。实验中采用单向LSTM,效果优于Bi-LSTM。
(5)TDNN-LSTM-Attention:TDNN-LSTM的基础上接入Attention层,对无语音帧分配较低权重,不需要预处理的SAD检测。效果优于其余四种方法。
(6)LSTM,LSTM-Attention:分别表示三层单向LSTM以及上面叠加attention层。在最顶层的LSTM输出层接max pooling会有效提升性能。Attention的引入也对性能提升有帮助。
(7)比较了不同的utterance(语音段)组织方法:一帧一个标签或者一utterance一个标签,发现一帧一个标签的结果更好。
(8)还做了数据增强,对振幅和速度做了扰动。振幅采用10种不同的微调,速度采用0.9, 1.0, 1.1 speed factors。发现可以WA提升6%,UA提升8%。
(9)论文对utterance采用定长和变长的方式进行实验,结果标明采用固定的较大长度的chunks训练效果最佳,WA和UA达到70.1%和60.7%。论文实验很充分,结果也优于大多数sota算法,所有实验用kaldi完成,论文作者中就有kaldi的作者daniel povey。
随时获取华为云AI最新动态,欢迎关注华为云AI公众号: