[0045] 本次实验选取的语音数据库是EMODB和RAVDESS,它们在语音情感识别中应用广泛。EMODB由10位演员对10条语句演绎得到,语音情感包括温和、生气、害怕、高兴、悲伤、厌
恶、难过,经过听辨测试后保留男性情感语句233句,女性情感语句302句,共535句语料。
RAVDESS语音数据库中由24位专业演员(12位女性,12位男性)用中性的北美口音述说,语音
情感包括平静(温和),快乐(高兴),悲伤(难过),愤怒(生气),恐惧(害怕),惊吓和令人厌恶
(厌恶),共1440句语料。
[0046] 上述2个数据库虽然是离散语音情感数据库,但是根据Mehrabian研制的原版PAD情绪量表以及中国科学院心理所修订的中文简化版PAD情绪量表与基本情感类型的对应关
系,可以获得数据库中各情感类型的PAD量表值,所以以上2个数据库中语料能够作为本文
实验所需的维度情感语音数据,涉及的基本情感类型对应的PAD量表值见表2。
[0047] 表2基本情感类型对应的PAD量表值
[0048]
[0049] 步骤1、使用Opensmile工具包读取语音数据库中.wav语音文件,并分别提取四种语音特征集。
[0050] 步骤1.1、配置Opensmile工具包读取IS09_emotion特征集,并读取EMODB语音数据库中的每一个.wav语音文件,Opensmile工具包自动提取IS09_emotion的语音特征并保存
在.txt文件,将每个.txt文件中的特征集保存在.csv文件中,得到EMODB语音数据库中每一
个.wav语音文件的IS09_emotion特征集;
[0051] 步骤1.2、同理配置Opensmile工具包分别读取IS10_paraling、IS11_speaker_state、IS12_speaker_trait特征集,得到EMODB语音数据库中每一个.wav语音文件的IS10_
paraling、IS11_speaker_state、IS12_speaker_trait特征集;
[0052] 步骤1.3、同上述提取步骤,得到RAVDESS语音数据库中每一个.wav语音文件的IS09_emotion、IS10_paraling、IS11_speaker_state、IS12_speaker_trait特征集;
[0053] 步骤2、建立Stacking学习模型。如图1所示,将LightGBM、AdaboostRegressor作为Stacking的M1(初级学习器,下同),通过M1融合四种语音特征集,并将岭回归作为Stacking
的M2(次级学习器,下同),通过M2对融合后的语音特征集做最终的语音情感识别预测。如图
2所示基于特征集融合的语音情感识别流程图。
[0054] LightGBM(Light Gradient Boosting Machine)是GBDT(Gradient Boosting Decision Tree,梯度提升迭代决策树)的一种,2015年由微软公司提出。传统GBDT模型在保
证速率时往往会导致精度的丢失,同时在分布式处理时,各机器之间的通信损失,也在一定
程度上降低了数据的处理效率。
[0055] LightGBM摈弃了level‑wise(按层生长)的决策树生长算法,而采用了leaf‑wise(按叶子生长)算法。Level‑wise是一种低效的算法,因为它不加区分的对待同一层的叶子,
带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。
Leaf‑wise每轮迭代都从现有的叶子中找到最大增益的分裂方法,如此循环直至达到给定
的最大深度,此方法有效避免了不必要的开销,提高了计算速率。另外,传统GBDT算法中,最
耗时的步骤是利用Pre‑Sorted的方式在排好序的特征值上枚举所有可能的特征点,然后找
到最优划分点,而LightGBM中使用histogram直方图算法替换了传统的Pre‑Sorted以减少
对内存的消耗。
[0056] AdaboostRegressor是Adaboost的回归算法。Adaboost是一种迭代算法,本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的
总体分类的准确率,来确定每个样本的权值。其核心思想是针对同一个训练集训练不同的
分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类
器)。
[0057] 岭回归(Ridge Regression)实质上是一种改良的最小二乘估计法,它是一种专用于共线性数据分析的有偏估计回归方法。最小二乘法可以简单的求得未知的数据,并使得
这些求的数据与实际数据之间误差的平方和为最小。如通过线性函数f(x)=AX+b来拟合D
={(X1,y1),(X2,y2)...(Xn,yn)}并使得损失函数 最小,岭回归算法是
在上式基础加入L2正则化,得到损失函数如下:
[0058] 步骤2.1、分别将EMODB和RAVDESS语音数据切分训练数据集、测试数据集,分别记为Train、Test,切分比例为4∶1。如下表3所示。
[0059] 表3语音数据库切分
[0060]
[0061] 步骤2.2、基于EMODB语音数据库采用4折交叉验证来切分IS09_emotion的训练特征集得到Train1,Train2,Train3,Train4。此时LightGBM模型要进行4次训练和预测。
[0062] 步骤2.3、将训练数据中的Train2,Train3,Train4做为训练集Set1,Train1做为验证集,基于训练集Set1训练LightGBM模型,预测得到验证集Train1的结果Val1,同时预测得到
测试集Test的结果Test1。
[0063] 步骤2.4、将训练数据中的Train1,Train3,Train4做为训练集Set2,Train2做为验证集,基于训练集Set2训练LightGBM模型,预测得到验证集Train2的结果Val2,同时预测得到
测试集Test的结果Test2。
[0064] 步骤2.5、同理预测得到验证集Train3,Train4的结果Val3,Val4,同时每次预测得到测试集Test的结果Test3,Test4。
[0065] 步骤2.6、将得到的Val1,Val2Val3,Val4进行矩阵拼接,得到IS09_emotion特征集T
的融合前训练特征集ValLGBM‑09=[Val1,Val2Val3,Val4] ,同理基于AdaboostRegressor模型要进行4次训练和预测,得到IS09_emotion特征集的融合前训练特征集ValAD‑09。将此
ValLGBM‑09、ValAD‑09数据作为M2的训练数据。
[0066] 步骤2.7、对Test1,Test2,Test3,Test4求平均值,得到融合前测试特征集TestLGBM‑avg‑09=(+Test2+Test3+Test4)/4,同理也可得到TestAD‑avg‑09,将TestLGBM‑avg‑09、TestAD‑avg‑09作为M2的测试数据。
[0067] 步骤2.8、基于IS10_paraling、IS11_speaker_state、IS12_speaker_trait特征集做上述相同操作,分别得到融合前训练特征集ValLGBM‑10、ValAD‑10、ValLGBM‑11、ValAD‑11、ValLGBM‑12、ValAD‑12,同样也可以得到融合前测试特征集TestAD‑avg‑10、TestAD‑avg‑11、TestAD‑avg‑12、TeStLGBM‑avg‑10、TeStLGB‑avg‑11、TestLGBM‑avg‑12
[0068] 步骤2.9、基于RAVDESS语音数据库做上述相同操作。
[0069] 步骤3、建立评价标准,通过Stacking学习模型得到的预测结果与真实结果进行计算,得到评价该模型的评价标准。
[0070] 步骤3.1、基于EMODB语音数据库,将ValLGBM‑09、ValAD‑09、ValLGBM‑10、ValAD‑10、ValLGBM‑11、ValAD‑11、ValLGBM‑12、ValAD‑12作为岭回归的训练数据,经训练后通过TestAD‑avg‑09、TestAD‑avg‑10、TestAD‑avg‑11、TestAD‑avg‑12、TestLGBM‑avg‑09、TestLGBM‑avg‑10、TestLGBM‑avg‑11、TestLGBM‑avg‑12测试数据来验证模型的预测结果。通过预测计算得到各个评价标准值如表4所示。图3、4、5、6分别为MAE、MSE、R_2、Pcc结果簇状图。
[0071] 表4 EMODB语音数据库的预测结果
[0072]
[0073]
[0074] 步骤3.2、基于RAVDESS语音数据库做上述相同操作,得到最终的预测结果,并通过预测计算得到评价标准如表5所示。图7、8、9、10分别为MAE、MSE、R_2、Pcc结果簇状图。(注
意:AD_IS09_EMOTIO意思是在IS09_EMOTIO特征集上使用AdaboostRegresso模型训练预测
得到的评价指标;Stacking方法1指的是使用Stacking模型训练预测得到的评价指标,次级
学习器做了交叉验证;Stacking方法2指的是使用Stacking模型训练预测得到的评价指标,
次级学习器没做交叉验证。上同)。
[0075] 表5 RAVDESS语音数据库的预测结果
[0076]
[0077]