本发明属于深度学习中的模式识别领域,具体涉及一种基于vtlp数据增强及多尺度时频域空洞卷积模型的语音情感识别方法。
背景技术:
随着人工智能的迅猛发展,已经到感知智能的阶段,人类行为多方面建模技术的不断改进,情感识别已成为人机交互研究的一个重要领域。随着科技的进步,人们对情感的解释在不断进步,对自动情感识别的需求也在不断增长。语音情感识别(ser)在人工智能领域是一个很重要且具有挑战性的任务,随着越来越多的人机交互的产品的开发,ser任务应用在各个领域,比如情感状态可以用来检测人的疲劳状态,可以用于呼叫中心对打电话者情绪的检测,机器在与人类交互的第一步是实现对人类的理解,进而采取不同的策略进行应答,所以语音情感识别的研究变得尤为重要。
目前,语音情感识别方向的研究主要分为传统方式和基于深度学习两种方式,传统的语音情感分类器主要有:隐马尔可夫模型、混合高斯模型、支持向量机、人工神经网络等。基于深度卷积神经网络算法已经应用到包括计算机视觉等诸多人工智能应用,并且在很多人工智能应用之中表现出了当前最佳的准确度,使深度卷积神经网络的的应用量有了迅速的增长,如卷积神经网络、循环神经网络、深度置信网络,长短时记忆网络等。
技术实现要素:
为了实现上述目的,本发明提出一种基于vtlp((vocaltractlengthperturbation))数据增强及多尺度时频域空洞卷积模型的语音情感识别方法,其特征在于:包括以下步骤:
s1:部署tensorflow深度学习框架,对初始语音进行预处理,实现切割、预加重、分帧加窗以及端点检测算法,优化输入语音的质量,标注情感类别;
s2:基于公开的语音数据集,针对每类情感,分别应用vtlp扩充数据集,形成完整数据;
s3:基于s2生成的数据集使用傅里叶变换生成相应频谱图,将谱图做不同尺度缩放,作为网络输入;
s4:基于s3生成的频谱图,构建时频域特征粗提取网络,提取频谱图的时频域特征,调整网络参数;
s5:将s4提取的时频域特征做特征级融合,构建句子级细化特征提取网络,部署空洞卷积;
s6:将s5中训练好的网络对语音中的情感进行识别,得出类别概率和识别准确度,完成语音情感的识别。
进一步,步骤s1所述的对初始语音进行预处理,按照以下步骤进行:
s1-1:设n时刻的语音采样值为x(n),其中n=0,1,2,3,…,做预加重处理,预加重公式为:
y(n)=x(n)-ax(n-1),
其中,a为预加重系数,这里a=0.98,y(n)为预加重之后的语音;
s1-2:对预加重后的语音y(n)进行分帧加窗处理,进行短时处理,将语音信号分成若干段短时语音,分帧加窗表达式:
sw(n)=y(n)*w(n),
其中,w(n)为窗函数,汉明窗的表达式为:
其中n为帧长;
s1-3:进行端点检测,确定一段语音的起始点和终止点,首先计算语音的短时能量,代表声音的强度,声音强度表达式:
其中volume为最低门限,高于此阈值部分初步认为是有声音段,低于此阈值部分进行下一步操作;
s1-4:根据上一步的计算,得到volume大于门限的部分,确定有声段帧的起点和终点,从该起点向前推一帧,计算短时过零率zcr,zcr的表达式为:
其中函数{a}表示在a为真时值为1,否则为0,判断zcr是否高于阈值,若高于阈值,则认为是清音部分,则该点为新的有声起始点,若低于阈值,则认为该点往前部分为环境噪音或静音,不再向前推算;
s1-5:给出每段语音的标签值,分别有高兴、生气、难过、中性四种不同的情绪标签,分别对应为1、2、3、4,人工对每段语音打上标签。
进一步,步骤s2中所述的应用vtlp扩充数据集,通过为每句话随机生成一个折叠因子在频率轴进行映射,将原始频率f映射到一个新的频率空间,可用以下公式表达:
其中α为折叠因子,s为采样频率,fhi为覆盖有效共振峰的边界信息,α在0.9~1.1之间。
进一步,步骤s3将步骤s2生成的语音按照傅里叶变换变换为频谱图,傅里叶快速变换为:设离散语音信号x(n)经过分帧处理后表示为xn(m),其中m为一帧内采样点序号,信号x(n)的短时傅里叶变换公式为:
其中,w(n-m)沿着x(m)序列滑动。
进一步,步骤s4中所述的工作按照以下步骤进行:
s4-1:搭建时频域神经网络模型,时频域神经网络包含两个卷积层,两个池化层,其中一个卷积层卷积核大小设计为2*10,一个卷积核大小设计为8*2,两个池化层为3*3池化,步长为2;
s4-2:对于时频域卷积网络中的卷积层的各个部分,定义公式为
y=f(x,{wi})+x,
其中x是输入的特征图,y是经过参数wi计算的输出特征图,f(x,{wi})表示需要训练的映射函数;
s4-3:使用vio_peo数据集,其中将5000张图片用作训练,500张用于验证,500张图片用于测试训练过程设置迭代次数为100,对网络的参数进行优化;
进一步,步骤s5中所述的工作按照以下步骤进行:
s5-1:将上述步骤生成的时序和频域特征做特征级融合,融合方式为concat,将两个向量进行相加;
s5-2:将特征融合的结果送入空洞卷积层中进行句子级细化特征的提取,空洞卷积的卷积核大小为3*3,空洞率为2,步长为1的卷积层。最后有个fc层用于分类,用于分类的函数为:y=softmax(x)其中x为经过卷积层得到的一维向量,y为得到的分类结果;
s5-3:使用数据集训练搭建好的空洞卷积神经网络模型,训练方式为端到端,对空洞卷积网络的参数进行优化。
进一步,步骤s6使用测试数据集进行测试,得到测试集的准确率。
本发明的有益效果是:解决了传统语音识别研究中数据量过小,传统特征提取过程复杂的问题,将语音识别问题转化为频谱图识别,充分考虑了频谱图的特点,设计了多尺度时频域卷积网络,提高语音识别任务的准确度并降低了时间消耗。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和权利要求书来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,其中:
图1是本发明具体实施的流程示意图;
图2是本发明时频卷积网络结构示意图;
图3是happy类初始语音序列;
图4是sad类初始语音序列;
图5是sad原始语音;
图6是预加重后的语音频谱;
图7是原始语音;
图8是分帧加窗后的语音频谱;
图9是端点检测过程;
图10是频谱图;
图11是训练收敛过程;
图12是loss下降过程;
图13是混淆矩阵;
图14是分类精确度对比。
显而易见地,上面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
具体实施方式
以下将参照附图,对本发明的优选实施例进行详细的描述。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
如图1所示,一种基于vtlp数据增强及多尺度时频域空洞卷积模型的语音情感识别方法,算法按以下步骤进行:
s1:部署tensorflow深度学习框架,对初始语音进行预处理,实现切割、预加重、分帧加窗以及端点检测算法,优化输入语音的质量,标注情感类别;
s2:基于公开的语音数据集,针对每类情感,分别应用vtlp扩充数据集,形成完整数据;
s3:基于s2生成的数据集使用傅里叶变换生成相应频谱图,将谱图做不同尺度缩放,作为网络输入;
s4:基于s3生成的频谱图,构建时频域特征粗提取网络,提取频谱图的时频域特征,调整网络参数;
s5:将s4提取的时频域特征做特征级融合,构建句子级细化特征提取网络,部署空洞卷积;
s6:将s5中训练好的网络对语音中的情感进行识别,得出类别概率和识别准确度,完成语音情感的识别。
进一步,步骤s1所述的对初始语音进行预处理,按照以下步骤进行:
s1-1:设n时刻的语音采样值为x(n),其中n=0,1,2,3,…,做预加重处理,预加重公式为:
y(n)=x(n)-ax(n-1),
其中,a为预加重系数,这里a=0.98,y(n)为预加重之后的语音;
s1-2:对预加重后的语音y(n)进行分帧加窗处理,进行短时处理,将语音信号分成若干段短时语音,分帧加窗表达式:
sw(n)=y(n)*w(n),
其中,w(n)为窗函数,汉明窗的表达式为:
其中n为帧长;
s1-3:进行端点检测,确定一段语音的起始点和终止点,首先计算语音的短时能量,代表声音的强度,声音强度表达式:
其中volume为最低门限,高于此阈值部分初步认为是有声音段,低于此阈值部分进行下一步操作;
s1-4:根据上一步的计算,得到volume大于门限的部分,确定有声段帧的起点和终点,从该起点向前推一帧,计算短时过零率zcr,zcr的表达式为:
其中函数{a}表示在a为真时值为1,否则为0,判断zcr是否高于阈值,若高于阈值,则认为是清音部分,则该点为新的有声起始点,若低于阈值,则认为该点往前部分为环境噪音或静音,不再向前推算;
s1-5:给出每段语音的标签值,分别有高兴、生气、难过、中性四种不同的情绪标签,分别对应为1、2、3、4,人工对每段语音打上标签。
进一步,步骤s2中所述的应用vtlp扩充数据集,通过为每句话随机生成一个折叠因子在频率轴进行映射,将原始频率f映射到一个新的频率空间,可用以下公式表达:
其中α为折叠因子,s为采样频率,fhi为覆盖有效共振峰的边界信息,α在0.9~1.1之间。
进一步,步骤s3将步骤s2生成的语音按照傅里叶变换变换为频谱图,傅里叶快速变换为:设离散语音信号x(n)经过分帧处理后表示为xn(m),其中m为一帧内采样点序号,信号x(n)的短时傅里叶变换公式为:
其中,w(n-m)沿着x(m)序列滑动。
进一步,步骤s4中所述的工作按照以下步骤进行:
s4-1:搭建时频域神经网络模型,时频域神经网络包含两个卷积层,两个池化层,其中一个卷积层卷积核大小设计为2*10,一个卷积核大小设计为8*2,两个池化层为3*3池化,步长为2;
s4-2:对于时频域卷积网络中的卷积层的各个部分,定义公式为
y=f(x,{wi})+x,
其中x是输入的特征图,y是经过参数wi计算的输出特征图,f(x,{wi})表示需要训练的映射函数;
s4-3:使用vio_peo数据集,其中将5000张图片用作训练,500张用于验证,500张图片用于测试训练过程设置迭代次数为100,对网络的参数进行优化;
进一步,步骤s5中所述的工作按照以下步骤进行:
s5-1:将上述步骤生成的时序和频域特征做特征级融合,融合方式为concat,将两个向量进行相加;
s5-2:将特征融合的结果送入空洞卷积层中进行句子级细化特征的提取,空洞卷积的卷积核大小为3*3,空洞率为2,步长为1的卷积层。最后有个fc层用于分类,用于分类的函数为:y=softmax(x)其中x为经过卷积层得到的一维向量,y为得到的分类结果;
s5-3:使用数据集训练搭建好的空洞卷积神经网络模型,训练方式为端到端,对空洞卷积网络的参数进行优化。
进一步,步骤s6使用测试数据集进行测试,得到测试集的准确率。
为了验证本发明的效果,进行了以下实验:
实验平台:cpu:intel(r)core(tm)i5-6200u2.40ghz,windows10;gpu:nvidia1080ti。
编程软件:pycharm,vs2012,opencv2.4.9,matlab2016。
本发明对对话语音进行语音情感识别实验,如图3和图4分别为happy和sad的初始语音序列,图5和图6分别为原始谱图和经过一阶高通数字滤波器实现预加重后的谱图,将预加重后的语音进行分帧加窗,使用汉明窗,如图7和图8,接着通过短时能量和过零率确定语音的起始点和结束点,如图9所示,分别表示原始语音,语音短时能量以及语音过零率,之后通过短时傅里叶变换将语音形式转换为频谱,作为神经网络的输入,图10为通过转化的频谱图。
实验过程使用leave-one-out策略执行10次交叉验证。在每个训练过程中,使用9个演员作为训练数据,剩下的1名作为测试数据。在cnn的训练中,我使用tensorflow深度学习框架。优化方法为随机梯度下降法(sgd),最小批处理规模为64。我们使用nesterov动量为0.9,重量衰减为0.0001。cnn经过了50个epoch的训练,准确率逐渐收敛。在每一个卷积层之后,我们采用批处理归一化层,使用的激活函数是整流线性单元(relu)。优化目标函数采用交叉熵损失。图11为训练的收敛过程,图12为损失函数下降过程,预测结果混淆矩阵图如13所示,图14表明本发明的匹配精确度的提升,证明本发明的有效性。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。