语音情感识别之手工特征深度学习方法

举报
Tython 发表于 2020/04/13 15:49:15 2020/04/13
【摘要】 本文章主体基于PilgrimHui的论文笔记:《语音情感识别(三)手工特征+CRNN》,在原来基础上,补充了数据处理部分以及论文方法的一些细节,欢迎语音情感分析领域的同学一起讨论。

本文章主体基于PilgrimHui的论文笔记:《语音情感识别(三)手工特征+CRNN》,在原来基础上,补充了数据处理部分以及论文方法的一些细节,欢迎语音情感分析领域的同学一起讨论。

 

1. Emotion Recognition from Human Speech Using Temporal Information and Deep Learning2018 InterSpeech

1)数据处理:Hamming窗,窗大小30ms,窗移10ms得到多个framesframe采用的特征向量为eGeMAPS特征集中的20个特征,得到长度为20维的向量。每个utterance使用裁剪和padding的做法使得定长512帧,所以输入为20x512的矩阵。每个样本归一化到0均值1标准差(根据对应的说话人)。使用的数据集为EmoDB7分类。

2)模型方法:首层卷积只沿着时间方向卷,没有频率方向的卷积。经过max pooling, global conv, max pooling等操作,得到128*64feature maps。按列输入LSTM(长度为128的列向量)获取时序特征,softmax分为7类。实验时采用Leave-One-Speaker-Out测试效果。

3)准确率为88.9%,跟传统ComParE+SVM 86%的效果比,高出近3%。不过该数据集我实验时6分类达到90+%

1.png

 

2. Speech Emotion Recognition from Variable-Length Inputs with Triplet Loss Function2018 InterSpeech

1)数据处理:IEMOCAP数据,筛选出标签置信度大的样本,按0.06s分帧,得到句子的平均帧731,设定统一句子长度F800(根据实验)。使用的特征基于ComParE特征集,对每帧使用openSMILE库提取了147LLDsLow level Descriptors)。

2)模型方法:语音情感识别方面的前人工作主要集中于特征和模型的探索,本文将triplet loss应用到模型中,输入三个样本,用LSTM提取特征,训练。最后从loss层的前一层取出特征向量送到SVM分类。

3Triplet 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 losscycle mode),在实验中的方法对比上并没有凸出模型表现的优势。

2.png

3.png

 

3. Exploring Spatio-Temporal Representations by Integrating Attention-based Bidirectional-LSTM-RNNs and FCNs for Speech Emotion Recognition2018 InterSpeech

1)数据处理:一个句子按时间窗1024切分成多个帧,每帧的长度是1024个点,对每帧用YAAFE提取743维特征,之后用PCA做白化。IEMOCAP数据4分类。CHEAVD中文数据8分类。

2)模型方法:模型分为CNNBLSTM两部分。CNN对句子的特征矩阵进行卷积,提取卷积特征。BLSTM沿时间轴进行时序建模,采用attention提取时序特征。最后拼接两部分特征加全连接网络,预测最后标签。

3)实验结果CHEAVDIEMOCAP上分别46.364WA,效果优于单个CNNBLSTM模型,但相比业界其他模型效果一般。

 4.png

4. Learning Spontaneity to Improve Emotion Recognition in Speech2018 InterSpeech

1)数据集为IEMOCAP,在识别情感之前先做一个自发性检测,之后对于自发性的情感和念稿子的情感分别训练不同的SVM分类器。发现这么做可以提高表现,而且自发性情感的准确率会更高。

2)特征集使用的是InterSpeech 2009 挑战赛的特征集,主要有MFCCZCRVPF0等,共k维特征(每帧)。然后做平滑后计算一阶delta,变成2k维。对这些特征计算12种统计量,最后得到24k维的向量。

3)启发:提前判别情感的自发性可提升SA效果,如果先判别性别等信息,是否能提升性能。

5.png

 

5. Automatic Speech Emotion Recognition Using Recurrent Neural Network with Local Attention2017 ICASSP

1)数据处理:25ms的时间窗,每秒100帧,每帧提取257维的FFT频谱特征和32维的LLD特征,分别用于不同实验。根据全数据集的均值和标准差做正则化。IEMOCAP数据4分类。

2SER比较流行的传统做法是在LLDs做统计得到HSFs然后喂给分类器(比如最常用的SVM),常用的LLDsHSFs如下图所示。但是有个挑战就是如何平衡这二者,因为LLDs是在短时帧上计算的静态特征,HSFs是在一个utterance上对多个帧做统计聚合得到的动态特征,如果只使用HSFs的话会忽略“句子中有些沉默段或非感情段是无效区”这个事实,只使用LLDs的话特征层次太低,而且也没有做显著性区域捕捉。

2)模型方法:论文提出了Weighted Pooling的方法,对比通常的几种做法,发现这么做可以提高准确率。如下图(a)就是传统的做法通过计算HSFs然后喂给分类器的做法,图(b)是给每一帧都分类标签然后计算损失,图(c)是只取最后一个(和第一个)时间步的输出,图(d)是对所有时间步的输出取均值,图(e)就是利用注意力机制来做加权求和,图(f)只是在(e)的基础上把注意力的计算抽象成一个Attention Model。图(e)WAUA效果最佳(63.5%58.8%)。

3Attention机制可以使模型聚焦到有声音的帧,忽略掉静音帧或噪音帧,可以取代VAD的作用。

4)数据集是IEMOCAP,输入的特征使用了两种,一种是原始声谱(257维的FFT向量),一种是手工LLDs。论文还做了原始声谱+DNN(下图图a的模型)和手工LLDs+SVM的对比,发现由DNN自己学习特征的模型可以得到更高的准确率。

6.png

7.png

 

6. An End-to-End Deep Learning Framework with Speech Emotion Recognition of Atypical Individuals2018 InterSpeech

1)数据处理:音频信号处理细节未给出,数据集为EmotAsS,由2018 InterSpeech挑战赛提供,是非典型人群(残疾人)的语音情感数据。

2)论文调查了三种特征,原始信号,CQT声谱图,STFT声谱图,发现STFT声谱图最好。

3)论文比较了三种模型,CRNNResNetCNN结合扩展特征(openSMILE提取的COMPARE特征)。发现做了数据平衡后,CRNN的效果最好。没做数据平衡前,CNN结合扩展特征的效果最好。

4)论文使用了数据增强和数据平衡技术,可以提高模型表现。其中数据增强时speed rate0.9时效果最好(模型为CRNN)。

5)因为挑战赛的baseline中,使用各种特征的SVM都打败了端到端的框架,所以论文还做了SVM的实验来证明论文的模型比SVM好,SVM使用的特征集分别有ComparEBoAW

6)最后做结果级融合,融合SVMCRNN,效果达到最佳。

8.png

 

7. What is my Dog Trying to Tell me? The Automatic Recognition of The Context and Perceived Emotion of Dog Barks2018 ICASSP

1)数据描述:通过狗吠声来识别狗的情感和状态,情感Emotion有五种(AggressionFearDespairFunHappiness),状态Context有七种(AloneBallFightFoodPlayStrangerWalk),数据集称为EmoDog。含12只马地犬,226句狗吠。

2)数据处理:论文使用的特征有eGeMAPS特征,ComparE特征,MFCC和一阶差分,二阶差分。做实验时候把ComparE分成两种:ComparE Prosprosodic韵律学的)和ComparE Specspectralcepstral频谱和倒谱)。另外还使用了BoAW的模式来计算特征(使用openXBOW库获得)。

3)模型方法:论文主要对比不同特征集的效果,并无算法上的创新。下图是不同特征在SVM上的分类结果,调用liblinear库实现。另外论文还做了回归预测的实验,预测情感强度,调用libsvm库来实现SVR。其中Emotion任务中88维的eGeMAPS特征的效果最佳,Context任务中ComParE特征集效果最好。

11.png

8. Towards Temporal Modelling of Categorical Speech Emotion Recognition2018 InterSpeech

1)一句话含有多个segments,作者假设不是每个segment都含有情绪。一些静音、暂停、音素转换、不发声的音素等片段被认为是不含情绪的。因此一句话可以切分成一系列片段,包含有情绪和无情绪两类。通过基于LSTMCTC机制,可以对每个segment判断是否有情绪,并且对应到具体的情绪类别。

2)预处理方法:首先根据语音的标注文本得到句子的音素序列:有文本时采用CMU发音字典可得,没文本时采用ASR模型可得。每个音素对应一个标签,但是当前不知道语音的帧的边界,即一个音素的起止点。

3CTC方法:句子按一定时间窗切片,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

4LSTM的输出长度和标签长度不匹配,通常有三种做法,final-pooling取最后一帧输出,mean-pooling对所有帧取平均,weighted-pooling利用注意力机制加权求和。本文使用了CTC的机制,实验表明比之前三种方法要好。数据集为IEMOCAP。对于CTC的介绍见另一篇笔记CTC介绍

5)输入的帧水平特征为238LLDs(以GeMAPS2016 InterSpeech挑战特征集ComparE为基础),通过openSMILE库获得。

 

9. Emotion Identification from raw speech signals using DNNs2018 InterSpeech

1)数据处理:比较了不同的特征提取方法:MFCC,时域特征,频域特征。MFCC采用23维的MFCC输入到DNN;时域特征采用40ms的时间窗,窗移30ms,对每个时间窗采用一维卷积,卷积步移1.25ms,之后连接Network-in-NetworkNIN)非线性层,进行训练[6];频域特征跟时域类似,不同的是对频谱进行二维卷积,具体设定参考论文[16]IEMOCAP四分类。实验结果标明时域特征效果最佳。

2)模型方法:时延神经网络TDNN,卷积网络CNN的前身,计算过程类似卷积,对限定时间窗下的频谱矩阵进行全连接计算,并随着时间轴往前推进。TDNN可以表达语音特征在时间上的关系。具体参考博客

3TDNN-Statistics PoolingTDNN在每个时间窗下(含多个delayed frame)的输出求均值和标准差,然后拼接多个均值和标准差,输入到softmax层,如此,对输入的多个frame将得到一个预测标签。缺点是对于静音帧、非语音帧也计算了loss,而往往这些帧是不带感情信息的。

4TDNN-LSTM:在TDNN上接LSTM,每帧的对应一个标签。实验中采用单向LSTM,效果优于Bi-LSTM

5TDNN-LSTM-AttentionTDNN-LSTM的基础上接入Attention层,对无语音帧分配较低权重,不需要预处理的SAD检测。效果优于其余四种方法。

6LSTMLSTM-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训练效果最佳,WAUA达到70.1%60.7%。论文实验很充分,结果也优于大多数sota算法,所有实验用kaldi完成,论文作者中就有kaldi的作者daniel povey

13.png


 

计算机生成了可选文字: Temporal Modeling  TDNN-Statistics Pooling  TDNN-LSTM  TDNN-LSTM-Attent10n  LSTM  LSTM-Attention  WA  65 . 5  59 . 5  66 . 3  59 . 9  63 . 4  UA  55 . 3  56 . 4  60 . 3  53 . 7  56 . 2

 

计算机生成了可选文字: Temporal Modeling  LSTM  LSTM with max pooling  WA  54 , 5  59 , 9  UA  48 , 9  53 , 7

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。