本发明涉及人工智能技术领域,更具体的,涉及一种基于音频分析与深度学习的争吵识别方法。
背景技术:
公共交通场所人群混杂密集,人与人之间极易产生摩擦、发生口角,进而引发打架、拥挤、踩踏等一系列影响公共交通秩序,妨碍公共交通工具正常运行,乃至危害人身安全的严重后果。然而目前公共场所并未采用专门用于争吵的识别技术,故难以对激烈争吵等采取及时有效的预警与人工干预。
目前国内在争吵等人际交往异常方向的研究扔存在空白。大脑对争吵行为的感知方式可分为“视”和“听”——鉴于争吵行为不同于一般的“举手”、“打球”等规律可循的简单行为,基于视觉的争吵行为识别难度甚高,目前国内外在基于视觉的争吵行为识别领域的研究仍存在空白之处;在音频识别领域,目前国内外在语音情感领域的研究多着眼于说话人基本情感的识别,针对争吵等人际交往异常情况的研究也存在空白之处。
作为人机情感交互的基础,情感识别的研究工作受到越来越多的关注,关于实现情感识别,国内外也涌现出了不尽相同的多种算法模型。但总结来说,情感识别过程一般包括四个部分:数据获取、数据预处理、情感特征获取、情感分类。其中,各个组成部分的实现方法又各有差异。目前,实现情感分类的常用方法主要由:支持向量机(svm)、决策树、随机森林、隐马尔可夫模型、贝叶斯网络、k-means、线性回归分析、多层感知器、多分类器融合和深度神经网络等。seppanen[1]等人提取了基频、能量、时长相关的40多维情感声学特征,使用knn分类器取得了60%的识别率。li[2]等人在susas情感识别数据库上提取了振幅微扰和频率微扰两种音质特征作为语音情感识别特征,通过mfcc特征与振幅微扰及频率微扰的特征组合达到了69.1%的识别正确率。hu[3]等人提出一种基于gmm超向量的支持向量机方法用于语音情感识别分类任务,发现基于gmm超向量的svm分类器要好于单纯的svm分类器。隋小芸[4]等人提出一种基于局部特征优化的语音情感识别方法,通过聚类分析去除语音中情感特征不显著的语音帧并进行分类,这种通过局部特征优化的语音情感识别方法在语料库上的平均准确率提高5%到17%。
目前,语音情感识别技术已愈渐成熟,虽然基本完成对常见情感的分类,但仍存在以下缺点:(1)国内外关于语音情感识别的研究仍主要着眼于如何综合利用各主流算法模型,提高语音情感识别率;(2)相关研究多是针对单一说话人单个语句的情感识别,未考虑语音对话的特点,难以实现争吵等与情感密切相关的对话异常情况的识别。
技术实现要素:
本发明为克服现有的语音情感识别技术缺乏对现实情境下的争吵等异常情绪进行研究,存在局限于单人单句识别的技术缺陷,提供一种基于音频分析与深度学习的争吵识别方法。
为解决上述技术问题,本发明的技术方案如下:
基于音频分析与深度学习的争吵识别方法,包括以下步骤:
s1:采集与应用场景相匹配的语音样本,包括争吵与非争吵两类数据;
s2:根据语音样本制作用于情感识别的争吵语音数据集,并构建深度神经网络进行训练,得到情感识别模型;
s3:根据语音样本制作用于相关性分析的对话语音数据集,得到相关性系数数据表,并构建支持向量机分类器进行训练,得到对话相关性分类模型;
s4:采集待检测音频,针对情感识别模型、对话相关性分类模型对待检测音频进行预处理,提取语音特征和相关性系数;
s5:将语音特征输入情感识别模型,判断语音情感是否符合争吵的特点;若是,执行步骤s6;否则判断为非争吵语音;
s6:将相关性系数输入对话相关性分类模型,判断语音是否处于对话的状态;若是,则判断为争吵语音,否则判断为非争吵语音。
其中,所述步骤s2具体包括以下步骤:
s21:根据语音样本制作用于情感识别的争吵语音数据集;
s22:对争吵语音数据集进行语音特征的提取,并对每一帧分别进行z-score标准化,得到语音特征序列组;
s23:根据语音特征序列组最大的序列长度对其他序列进行补零,将不定长序列转化为定长序列,得到定长特征序列组;
s24:根据定长特征序列组构建基于长短时记忆网络lstm和注意力机制的深度神经网络;
s25:对深度神经网络进行训练,得到情感识别模型。
其中,在所述步骤s24中,所述定长特征序列组的数据标签进行进行独热编码one-hotencoding转换。
其中,在所述步骤s24中,所述的深度神经网络具体包括:
输入层:输入步骤s23中得到的定长特征序列组,并对“0”值进行过滤;
单向lstm层:含有与特征序列维度一一对应的神经元,对时序信息进行初步提取,返回全部输出的特征序列;
双向lstm层:连接新的单向lstm层,与上一层单向lstm层输出一一对应,用于进一步时间信息建模,经过双向传播,返回全部输出的特征序列;
注意力机制层:从双向lstm层输出的每一时间步中发现序列的依赖关系;
第一全连接层:含有多个神经元,执行全连接运行,输出为:
f=f(w·t+b)
其中,w为全连接层的权重值;所述t为全连接层的输入;b为全连接层的偏置层;所述f(·)为relu激活函数,公式为f(x)=max(0,x),所述x为该函数的自变量;
第一dropout层:连接在第一全连接层后,重叠率为0.3,为了避免过拟合;
第二全连接层:含有多个神经元;
第二dropout层:连接在第二全连接层后,重叠率为0.2;
输出层:该层神经元个数为2,通过sigmoid回归算法将特征映射到目标的两个分类,即愤怒/不愤怒;其中,sigmoid函数值在0~1之间,其函数形式为:
f(x)=1/(1+e-x)
其中,x为该函数的自变量。
其中,所述lstm模型包括单向lstm层和双向lstm层,包含多个lstm单元,每个单元包含3中门结构,包括遗忘门、输入门和输出门,以此保持状态信息的更新与双向传播;
在双向lstm层中,其双向传播过程包括前向传播过程和后向传播过程,其中,前向传播过程具体为:
ft=σ(wf·[ht-1,et]+bf)
it=σ(wi·[ht-1,et]+bi)
其中,
后向传播过程与前向传播过程相同,不同之处在于序列信息为从句子后部向前传播,这样得到后向传播信息
接着将lstm模型输出引入所述注意力机制中,权重计算公式具体为:
etj=utanh(whj+b)
其中,hj表示注意力机制encoder中的隐藏状态信息,u,w是权重参数,b表示偏置参数;利用hj通过dot点积得到相似度etj,表示每个encoder过程的隐藏状态对当前的输出st的一个贡献度,st为注意力机制层中每个encoder过程的输出参数;然后,利用softmax函数将相似度etj转化为概率分布atj;最后,通过encoder中的隐藏状态hj与条件概率atj的加权和得到注意力向量ct。
其中,所述步骤s25具体过程为:
随机抽取80%语音样本数据形成训练集,剩下20%作为测试集对深度神经网络进行训练;训练使用交叉熵损失函数计算损失,并采用自适应矩估计adam算法对深度神经网络进行参数的动态更新,最后得到情感识别模型。
其中,所述步骤s3具体包括以下步骤:
s31:根据语音样本制作用于相关性分析的对话语音数据集;
s32:提取对话语音数据集的mel频率倒谱系数mfcc,为了使两个说话人的时间序列能一一对应,对于一个对话场景下音频的每一帧,当a说话时,a的序列alist对应于这帧的值用这帧的mfcc表示;当a的对方b说话时,alist序列此时的值用0表示;b说话时b的序列blist同理,得到alist和blist两个一一对应维数相同的序列;
s33:提取pearson相关性系数,具体为:
提取两个序列alist和blist之间的pearson相关性系数,具体计算公式为:
其中,x,y表示变量,cov(x,y)表示协方差,σx,σy表示标准差,μx表示x的期望,μy表示y的期望;
s34:提取spearman相关性系数,具体为:
提取两个序列alist和blist之间的spearman相关性系数,具体计算公式为:
其中,n为元素个数,若以xi,yi分别表示两个随机变量的第i个值,1≤i≤n,对x,y进行排序,得到x,y的排序集合x,y,其中元素xi,yi为xi,yi在x,y中的排序序号,则di=xi-yi(1≤i≤n);
s35:提取kendell相关性系数,具体为:
提取两个序列alist和blist之间的kendell相关性系数,具体计算公式为:
其中,c表示变量x,y中拥有一致性的元素对数;d表示x,y中拥有不一致性的元素对数;n1表示x含有的元素个数s表示x中拥有的小集合数;ui表示第i个小集合所包含的元素数;t表示y中拥有的小集合数;vi表示第i个小集合所包含的元素数;
s36:将得到的一个场景下的两个序列alist和blist之间的pearson相关性系数、spearman相关性系数、kendell相关性系数作为特征值,表征此场景下的对话相关性或非对话相关性,汇总上述三个相关性系数得到相关性系数数据表;
s37:将相关性系数数据表导入支持向量机分类器中,得到对话相关性分类模型。
其中,所述步骤s4具体包括以下步骤:
s41:采集待检测音频;
s42:对待检测的音频序列进行降噪处理,减少录音设备和环境噪音对语音造成的噪声影响;
s43:将降噪处理后的音频序列分成固定长度的语音段、提取mfcc系数并进行归一化处理,作为情感识别模型的输入;
s44:将降噪处理后的音频序列利用端点检测及说话人识别技术,在说话人发生改变处进行切割,依次得到单说话人的若干音频段,然后以同样方式提取mfcc系数,降维求均值,补零得到不同说话人的序列,并求得序列间pearson系数、spearman系数、kendell系数三种相关性系数,作为对话相关性分类模型的输入。
其中,所述步骤s5具体为:将步骤s43得到的语音特征输入情感识别模型中,从输出层sigmoid输出对语音情感的判断,即愤怒/不愤怒,并对数据进行标记,若为愤怒,则执行步骤s6;否则判断为非争吵语音。
其中,所述步骤s6具体为:将步骤s44得到的三种相关性系数输入对话相关性分类模型,按次序输入支持向量机模型进行预测,对对话相关性给出判断,输出1代表预测为对话相关,输出0代表预测为对话不相关。
与现有技术相比,本发明技术方案的有益效果是:
本发明提供的基于音频分析与深度学习的争吵识别方法,基于双向lstm和自注意力机制的深度学习模型,实现与争吵相关情感的初步识别,在情感识别基础上,提取对话相关性的语音特征,通过基于支持向量机的对话相关性分类模型,最终实现争吵识别,本发明将争吵识别方法结合情感识别与对话相关性分析,对现实情境下的争吵进行有效的判定,适合应用于公共交通场所,用于辅助管理人员监管,可以及时有效地发现争吵和避免引起相关的后果。
附图说明
图1为本发明所述方法流程示意图;
图2为深度神经网络结构示意图;
图3为lstm单元结构示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
如图1所示,基于音频分析与深度学习的争吵识别方法,包括以下步骤:
s1:采集与应用场景相匹配的语音样本,包括争吵与非争吵两类数据,且保持数据平衡;
s2:根据语音样本制作用于情感识别的争吵语音数据集,并构建深度神经网络进行训练,得到情感识别模型;
s3:根据语音样本制作用于相关性分析的对话语音数据集,得到相关性系数数据表,并构建支持向量机分类器进行训练,得到对话相关性分类模型;
s4:采集待检测音频,针对情感识别模型、对话相关性分类模型对待检测音频进行预处理,提取语音特征和相关性系数;
s5:将语音特征输入情感识别模型,判断语音情感是否符合争吵的特点;若是,执行步骤s6;否则判断为非争吵语音;
s6:将相关性系数输入对话相关性分类模型,判断语音是否处于对话的状态;若是,则判断为争吵语音,否则判断为非争吵语音。
在具体实施过程中,本发明提供的基于音频分析与深度学习的争吵识别方法,基于双向lstm和自注意力机制的深度学习模型,实现与争吵相关情感的初步识别,在情感识别基础上,提取对话相关性的语音特征,通过基于支持向量机的对话相关性分类模型,最终实现争吵识别,本发明将争吵识别方法结合情感识别与对话相关性分析,对现实情境下的争吵进行有效的判定,适合应用于公共交通场所,用于辅助管理人员监管,可以及时有效地发现争吵和避免引起相关的后果。
实施例2
更具体的,在实施例1的基础上,所述步骤s2具体包括以下步骤:
s21:根据语音样本制作用于情感识别的争吵语音数据集;本实施例采用的争吵语音数据集收集自影视剧作品的争吵片段,音频时长在10s左右,能较好体现争吵过程中的语音特征且不至于使得音频过长而难以处理和泛化。经过降噪和听辨筛选,保留情感表达充分且不易混淆、音质较好的音频共430条,16khz采用,16bit量化,其中争吵音频215条,非争吵音频215条,满足数据平衡要求。
s22:对争吵语音数据集进行语音特征的提取,并对每一帧分别进行z-score标准化,得到语音特征序列组,即梅尔频率倒谱系数mfcc。mfcc是常用的语音特征,将捋人耳的听觉感知特征与语音信号的产生机制有机结合。本实施例利用python中的librosa工具包分别对上述两个数据提取48维的mfcc系数作为音频特征,并进行归一化处理。
s23:根据语音特征序列组最大的序列长度对其他序列进行补零,将不定长序列转化为定长序列,得到定长特征序列组;
s24:根据定长特征序列组构建基于长短时记忆网络lstm和注意力机制的深度神经网络;
s25:对深度神经网络进行训练,得到情感识别模型。
更具体的,在所述步骤s24中,所述定长特征序列组的数据标签进行进行独热编码(one-hotencoding)转换。
更具体的,如图2所示,在所述步骤s24中,所述的深度神经网络具体包括:
输入层:输入步骤s23中得到的48维定长特征序列组,并对“0”值进行过滤;
单向lstm层:含有48个神经元,对时序信息进行初步提取,返回全部输出的特征序列,仍为48维;
双向lstm层:连接新的含有48个神经元的单向lstm层,与上一层单向lstm层输出一一对应,用于进一步时间信息建模,经过双向传播,返回全部输出的特征序列,为96维;
注意力机制层:从双向lstm层输出的每一时间步中发现序列的依赖关系;
第一全连接层:含有64个神经元,执行全连接运行,输出为:
f=f(w·t+b)
其中,w为全连接层的权重值;所述t为全连接层的输入;b为全连接层的偏置层;所述f(·)为relu激活函数,公式为f(x)=max(0,x),所述x为该函数的自变量;
第一dropout层:连接在第一全连接层后,重叠率为0.3,为了避免过拟合;
第二全连接层:含有32个神经元;
第二dropout层:连接在第二全连接层后,重叠率为0.2;
输出层:该层神经元个数为2,通过sigmoid回归算法将特征映射到目标的两个分类,即愤怒/不愤怒;其中,sigmoid函数值在0~1之间,其函数形式为:
f(x)=1/(1+e-x)
其中,x为该函数的自变量。
更具体的,如图3所示,所述lstm模型包括单向lstm层和双向lstm层,包含多个lstm单元,每个单元包含3中门结构,包括遗忘门、输入门和输出门,以此保持状态信息的更新与双向传播;
在双向lstm层中,其双向传播过程包括前向传播过程和后向传播过程,其中,前向传播过程具体为:
ft=σ(wf·[ht-1,et]+bf)
it=σ(wi·[ht-1,et]+bi)
其中,
后向传播过程与前向传播过程相同,不同之处在于序列信息为从句子后部向前传播,这样得到后向传播信息
接着将lstm模型输出引入所述注意力机制中,权重计算公式具体为:
etj=utanh(whj+b)
其中,hj表示注意力机制encoder中的隐藏状态信息,u,w是权重参数,b表示偏置参数;利用hj通过dot点积得到相似度etj,表示每个encoder过程的隐藏状态对当前的输出st的一个贡献度,st为注意力机制层中每个encoder过程的输出参数;然后,利用softmax函数将相似度etj转化为概率分布atj;最后,通过encoder中的隐藏状态hj与条件概率atj的加权和得到注意力向量ct。
更具体的,所述步骤s25具体过程为:
随机抽取80%语音样本数据形成训练集,剩下20%作为测试集对深度神经网络进行训练;训练使用交叉熵损失函数计算损失,并采用自适应矩估计adam算法对深度神经网络进行参数的动态更新,学习率设置为0.0001,批大小为32,最大循环数为20,最后得到情感识别模型。
更具体的,所述步骤s3具体包括以下步骤:
s31:根据语音样本制作用于相关性分析的对话语音数据集;本实施例采用的对话语音数据集收集自影视剧作品中的对话片段;简单起见,本实施例只考虑两个人的对话;若以a代表说话人a在说话,b代表说话人b在说话,为了确保相关性,剪辑的所有片段都至少是abab型的,且在一个片段中a、b个数均为偶数,a和b的总数从4到12不等。采样频率设置为44100hz,16bit量化;再捋每一个对话片段的语音数据分别按时间顺序进行分割,使被分割的每个小片段只含有一个说话人的声音;本实施例最终得到10个争吵对话场景的数据,11个正常对话场景的数据,共180条单说话人音频。
s32:提取对话语音数据集的mel频率倒谱系数mfcc,本实施例利用python中的librosa工具包对上述语音数据集提取20维的mfcc系数作为音频特征,并进行归一化处理,为了得到说话人的语音时间序列,对每一列20维的mfcc求均值,以此代表这帧的语音特征。为了使两个说话人的时间序列能一一对应,对于一个对话场景下音频的每一帧,当a说话时,a的序列alist对应于这帧的值用这帧的mfcc表示;当a的对方b说话时,alist序列此时的值用0表示;b说话时b的序列blist同理,得到alist和blist两个一一对应维数相同的序列;
s33:提取pearson相关性系数,具体为:
提取两个序列alist和blist之间的pearson相关性系数,具体计算公式为:
其中,x,y表示变量,cov(x,y)表示协方差,σx,σy表示标准差,μx表示x的期望,μy表示y的期望;
s34:提取spearman相关性系数,具体为:
提取两个序列alist和blist之间的spearman相关性系数,具体计算公式为:
其中,n为元素个数,若以xi,yi分别表示两个随机变量的第i个值,1≤i≤n,对x,y进行排序,得到x,y的排序集合x,y,其中元素xi,yi为xi,yi在x,y中的排序序号,则di=xi-yi(1≤i≤n);
s35:提取kendell相关性系数,具体为:
提取两个序列alist和blist之间的kendell相关性系数,具体计算公式为:
其中,c表示变量x,y中拥有一致性的元素对数;d表示x,y中拥有不一致性的元素对数;n1表示x含有的元素个数s表示x中拥有的小集合数;ui表示第i个小集合所包含的元素数;t表示y中拥有的小集合数;vi表示第i个小集合所包含的元素数;
s36:将得到的一个场景下的两个序列alist和blist之间的pearson相关性系数、spearman相关性系数、kendell相关性系数作为特征值,表征此场景下的对话相关性或非对话相关性,汇总上述三个相关性系数得到相关性系数数据表;
s37:将相关性系数数据表导入支持向量机分类器中,得到对话相关性分类模型;本实施例中训练支持向量机分类器训练样本占比train_size=0.6,采用线性核函数kernel=’rbf’即高斯核,gamma值为20,惩罚系数c=0.8;决策函数decision_function_shape=’ovr’,为一个类别与其他类别的划分。
更具体的,所述步骤s4具体包括以下步骤:
s41:采集待检测音频;
s42:对待检测的音频序列进行降噪处理,减少录音设备和环境噪音对语音造成的噪声影响;
s43:将降噪处理后的音频序列分成固定长度10s的语音段、提取48维mfcc系数并进行归一化处理,作为情感识别模型的输入;
s44:将降噪处理后的音频序列利用端点检测及说话人识别技术,在说话人发生改变处进行切割,依次得到单说话人的若干音频段,然后以同样方式提取mfcc系数,降维求均值,补零得到不同说话人的序列,并求得序列间pearson系数、spearman系数、kendell系数三种相关性系数,作为对话相关性分类模型的输入。
更具体的,所述步骤s5具体为:将步骤s43得到的语音特征输入情感识别模型中,输入大小为timesteps*48,其中timesteps代表音频的帧数,48即特征个数,从输出层sigmoid输出对语音情感的判断,即愤怒/不愤怒,并对数据进行标记,若为愤怒,则执行步骤s6;否则判断为非争吵语音。
更具体的,所述步骤s6具体为:将步骤s44得到的三种相关性系数输入对话相关性分类模型,按次序输入支持向量机模型进行预测,对对话相关性给出判断,输出1代表预测为对话相关,输出0代表预测为对话不相关。
在具体实施过程中,本发明实施例基于情感识别分析和对话相关性分析,应用双向长短期记忆网络、注意力机制以及相关性分析,成功构建了争吵语音识别框架,并取得了理想的分类正确率。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
[1]eero
[2]xili,jidongtao,johnson,m.t.,soltis,j.,savage,a.,leong,k.m.,newman,j.d..stressandemotionclassificationusingjitterandshimmerfeatures[p].acoustics,speechandsignalprocessing,2007.icassp2007.ieeeinternationalconferenceon,2007.
[3]haohu,ming-xingxu,weiwu.gmmsupervectorbasedsvmwithspectralfeaturesforspeechemotionrecognition[p].acoustics,speechandsignalprocessing,2007.icassp2007.ieeeinternationalconferenceon,2007.
[4]隋小芸,朱廷劭,汪静莹.基于局部特征优化的语音情感识别[j].中国科学院大学学报,2017,34(04):431-438.