深度学习-基于机器学习的语音情感识别系统的设计
语音识别在现实中有着极为重要的应用,现在语音内容的识别技术已日趋成熟。当前语音情感识别是研究热点之一,它可以帮助AI和人更好地互动、可以帮助心理医生临床诊断、帮助随时随地高效测谎等。本文采用了中科院自动化所的CASIA语料库作为样本,先进行预处理,之后对语料库进行语音情感特征函数的提取,再结合二叉树进行SVM支持向量机的分类,最后得到识别准确率。预处理是将语音信号提纯的操作,主要分为数字化、预加重
概要
语音识别在现实中有着极为重要的应用,现在语音内容的识别技术已日趋成熟。当前语音情感识别是研究热点之一,它可以帮助AI和人更好地互动、可以帮助心理医生临床诊断、帮助随时随地高效测谎等。本文采用了中科院自动化所的CASIA语料库作为样本,先进行预处理,之后对语料库进行语音情感特征函数的提取,再结合二叉树进行SVM支持向量机的分类,最后得到识别准确率。
预处理是将语音信号提纯的操作,主要分为数字化、预加重、分帧加窗和端点检测4步,之后来到提取语音情感特征参数的阶段。虽然有许多语音情感特征参数,本文中使用的语音情感特征参数为基音频率、短时能量、共振峰和梅尔倒谱系数(MFCC)四种,再对每一种特征参数进行归一化运算。
传统的支持向量机识别语音情感信号为“一对一”模型,若有种情感,算法复杂度为。结合语音情感的分类间有较为相似和不相似两种情况,本文采用将二叉树和支持向量机结合的方法,每一层都遵循相似聚类的准则,逐层二分,从根结点的所有情感,最后分类到叶结点只有一个情感,此时完成识别分类。种情感的算法复杂度为,大大提高了效率。
本文最后在完成整个系统后端的架构之后,加入了UI界面,原本运行界面简陋的系统,拥有了更加直观的显示,在面板上就可以方便地调节参数,也可以快速得到对比结果和识别结果。
关键词: 语音情感识别,机器学习,二叉树,支持向量机
一、研究背景与意义
1.1课题背景
每个人都有情感,有高兴、愤怒、焦虑、紧张等各种各样,或是正面或是负面的情感,而从科学上来说,情感是一种综合了人类的行为、思想和感觉的精神状态。观察一个人的情感一般有迹可循,无论是比较容易发现的外在还是内在,情感信息大多主要表现在内外两个层面:内在的情感信息是指心率、脉搏、血压等通过外表无法直接观察到,需要借助工具才能发掘的信息;外在的情感信息是指面部表情、声音、姿势等通过外表能直接自然观察到的信息。
情感识别是指通过各种算法,利用计算机采集并分析各种情感信息,从而提取出可以一定程度描述情感的特征值,再根据训练集表现,建立特征值与情感的映射关系,依靠分类算法,对情感信息分门别类,最终推断出情感状态。
1.2研究意义
计算机的广泛应用和大数据时代的到来,都使得信息技术得到迅猛发展,加上各种智能设备如手机、个人电脑的普及,为了提高生活和工作的效率,语音识别逐渐出现在人们的视野内,给我们带来了莫大的便利。语音识别不仅可以用来日常将声音转化为文字,还可以利用个人声音特征信息进行加密和防伪等工作,具有极高的实用价值。
随着语音技术基本应用已经取得广泛应用,我们就开始不仅仅满足于对特定说话人语音中的单一音素和单词语句进行简单的识别,而对诸如远程语音、儿童语音、言语障碍者语音以及语言情感进行有效地识别,未来也可能成为语音识别领域一些新的研究热点。语音是很重要的表达素材,其中不仅包含了说话人所要表达的文本内容,也同时包含了说话人所要表达的情感,所以对语音中情感内容的有效准确识别不仅能够提升语音辨别度,更是提高了语音的可懂度,因此,人工智能和机器学习在这方面的应用和优势便显而易见。一些研发人员希望开发的智能设备,不仅要具有理性的人类思维逻辑,情感则是使这些机器更贴近人类的关键。同时具有理性逻辑和情感的设备可最大限度地理解用户意图,为人类提供更好的服务[2]。
(1)人机交互
随着科技的不断发展,语音人机交互已经渗透进社会的各个方面:生活中不仅有使人愉快带来方便的个人智能语音AI,还有语音导航为每一位行路人带去指引;在医学方面,病患可以通过智能语音机器人做到定时吃药,疑问早解答;在教育领域,语音人机交互更是给学生足不出户的学习体验,同时可以丰富课堂的互动。
语音情感识别在人机交互方面依然可以有很出色的拓展应用,在机器分析人的语句内容时,有时候发音相近的词语就会混淆,造成识别的精准度不高。但是语音情感识别可以将情感作为其中一个判断依据,根据人说出的词语的备选词汇和当时情绪状态做出精准的选择,提高识别准确率,同时,做出更恰当的回应,比较冷冰冰的合成语音,更亲切也更生动,给人更好的体验。
(2)心理学医学
情感在心理学中一直是研究的重点,结合人在不同情绪下脑部和身体的生理反应,各方面激素的分泌水平和神经反应,可以开发出基于语音情感识别的高精确度情感识别机器,帮助临床研究和教学,更可以帮助医生快速判断患者的精神状态,给予更有效精准的治疗方案,给更多人带来慰藉,提高临床治愈率。
(3)测谎技术
测谎技术多用于政府机关、法院和军事单位,现有的测谎技术多基于人的心率和肾上腺素分泌水平等,语音情感识别则是给测谎技术上了一个双保险,根据被测谎人的说话情感,就可以判断他目前的心理状态是从容还是焦虑,继而判断究竟是在说实话还是撒谎。
而在人多眼杂的场合,往往无法架起现有测谎仪设备进行对测谎人的测试,但是基于语音情感识别系统的测谎仪则仅仅只需要采集语音样本进行分析,就可以为测试带来较高精准度。
二、语音信号预处理及特征参数
语音信号是一种模拟信号,不仅带有噪声,而且没有办法直接用于情感分类;这个时候就需要找到数字化以及提取可用参数的方法,预处理和语音情感特征参数解决了问题,并且有利于开展下一步分类器工作。
2.1 预处理
在对信号处理的时候,一般来说计算机能识别并处理的信号是平稳信号。但是由于语音信号本质上,是一种非平稳的时变信号,所以对语音信号的预处理就是将非平稳时变非优质信号,转化并提取优质特征参数的必要条件[14]。在采集语料库的过程中即使做好了隔音和去噪措施,录取的语音信号中噪声和无声空白依然存在,而特征参数的提取需要高质量的语音信号。预处理是对语音信号的一个提纯和均衡,更是整个语音情感识别的第一步,具体包括数字化、预加重和加窗分帧等步骤[12][13]。
图2-1 预处理
2.1.1数字化
语音信号是一种模拟信号,而根据计算机的工作原理,其可以处理计算的信号,都是数字信号,所以第一步就是数字处理。首先要对语音信号进行带通滤波,因为语音信号中人声所处频带在4kHz以下,而且无声情况可以被滤除,防止混叠干扰。再进行自动增益控制,将语音信号的幅值控制在一个较为平均的范围内,下一步就是A/D转换,最后一步是PCM编码,编码之后就得到数字化成功的信号了。
图2-2 数字化流程
2.1.2预加重
由于人生理结构的决定性作用,语音信号在中低频段的能量都是比较大的,但是到了高频段,能量则是很有限,在进行一系列操作时,很有可能被衰减至没有,这就导致信息的丢失。衰减的速率是6dB/倍频,而这数字会随着频率的增高变得更大[15]。预加重就是解决这一现象的操作,首先我们对高频部分的信号进行“加重”,使得语音信号在高频和低频部分都均匀分布,提升了语音信号的可操作性。
预加重采用的是一个一阶滤波器,公式如下
是预加重系数,取值接近于1。
最后可以将预加重后的信号表示为:
2.1.3加窗分帧
分帧其实是一种对语音信号持续细分的操作,将语音信号分为短时的“一段一段”的。分帧的原因是语音信号的不平稳时变特性,让我们在提取平稳信号的时候比较有难度,所以需要将语音信号分为10-30ms的短时平稳信号。分帧通常有两种方式,一是连续分帧,另一种是交叠分帧。由于语段之间采取交叠分帧更加连续,所以一般采用交叠分帧。我们将帧长称为N,而帧移——帧与帧之间的交叠也就是重合部分帧长为M,即长为N的帧向右滑动的距离。交叠分帧的原理如下图(图2-3)所示:
图2-3 交叠分帧
从图中可以看出,帧长为25ms,而帧移为10ms。
分帧的具体操作则是需要借助窗函数来完成。分帧后的信号可以由窗函数和语音信号表示为式(2-3)
刚才说到分帧是截取N长的语音信号,每次移动M长度,直到整个语音信号被分段结束为止。这里截取语音信号的工具就是窗函数,而我们在数字信号处理中常用的窗函数有很多中,这里选取三个窗函数备选,分贝是矩形窗、汉宁窗和汉明窗。
矩形窗:
汉宁窗:
汉明窗:
图2-4 矩形窗
图2-5 汉宁窗
图2-6 汉明窗
总的来说,矩形窗的主瓣宽度最小而旁瓣的衰减最慢,汉明窗的主瓣最大而且旁瓣衰减远大于矩形窗,汉宁窗则是介于这两者之间[16]。
截断效应是滤波和分帧之后常常出现的现象,过于陡峭的矩形窗过渡带会频谱泄露,这个时候信号能量就会发生分散不利于分析利用。而窗函数就是为了克服这种现象而设计的特殊滤波器。
2.1.4端点检测
端点检测顾名思义就是检测出有用信号的两端,以此为依据摒弃无用信号——无声信号、噪声信号和过渡段数据。有用信号的两端就是起点和终点,检测到有用这两个端点后,非端点内的数据就可以去除,我们就可以得到优质的语音信号,这是关键一步。端点检测的难度存在于个体发音差异和环境差异,所以想要准确定位两个端点还是有一定难度。最常用的两种端点检测算法有短时能量算法和双门限检测算法[17]。
本文选用的是双门限检测算法,双门限指代的就是短时能量和短时过零率这两个门限,短时能量可以将无声信号和幅值较小的噪音去除,但是却没有办法将幅值较大的噪音去除,而经研究发现语音信号中噪声的短时过零率比有用信号要低很多[18],所以这两种门限结合之后准确率和提纯效率是大大提高的。
双门限检测可以分为三个部分:静音、过渡段、语音段。整个过程中设置了一个变量s来记录状态,当短时能量和过零率都超过了门限值,那么s从静音状态改变为过渡状态;处在过渡状态的s是一种不能确定到底是静音状态还是有效信息的状态,所以处在这个状态的s还要继续判断;如果检测到两个参数都低于了门限值,那么再次回到静音状态,但是某一个参数高于了门限值,那么这个时候s状态就可以变为有效信息状态。
进入到有效信息状态的s并不能就保证一定是语音信号,有些声音大又清脆的短时噪音也有可能被判断为语音信号从而进入有效信息状态,这个时候就不能将两个参数的门限值仅仅设置为一个数,而是应该结合时间参数进行判别。设置两个门限为带有时间限制的值,如果进入有效信号状态的时间低于门限值,那么返回静音状态,到达设置的时长之后就可以记录这一段语音信号了。
端点检测流程图如下所示:
图2-7 流程图
三、基于SVM支持向量机的语音情感识别
从语音信号中提取了必须的语音情感特征参数之后,下一步就是将这些特征参数应用起来,放入分类算法中,进行真正的分类工作。
分类算法的选取直接决定了这个分类系统的好坏,更是对准确率有决定性作用。在选择究竟使用哪种分类算法的时候,本文先是进行了一系列的比较。许多研究者都采用了机器学习这个大范畴内的算法来进行语音情感识别,常见的算法有:线性分类器(Linear classifier,LC)[28],隐形马尔可夫模型(Hidden Markov Model,HMM)[29],神经网络(Neural network, NN)[30],支持向量机(Support Vector Machines,SVM)[31],K近邻法(k-Nearest Neighbor,KNN)[32]等。这里主要介绍三种分类算法:隐形马尔可夫模型,神经网络,支持向量机[33]。
最后选取的支持向量机(Support Vector Machine)作为分类算法,原因主要是支持向量机字各个空间中都有比较好的表现,根据统计学和结构最小的原理,不仅带有机器学习的特性,学习能力很强,而且也兼顾到了模型的复杂性,这样综合平衡之后最综合最优的性能也就得以体现了 [34]。而且在支持向量机进行分类运算的时候,即使没有办法做到线性分类,也可以将非线性问题通过核函数映射到更高的维度中,转化为线性问题以通过通用解法求得最优分类平面。在给出额=的样本数不那么充足的情况下也能很好的分类,通过训练已有样本获得较好的分类模型。在语音识别方面应用广泛,在小样本、非线性的问题方面,具有较为显著的优势。
3.1支持向量机SVM
SVM的核心思想是将低维空间中线性不可分的样本点,通过核函数映射至高维特征空间中,然后再在高维空间中构造出满足各个样本与它的距离最大的最优分类超平面。这个时候,原本在低维中的非线性样本在高维空间中也可以变得线性可分[35]。
支持向量机具有很多优点,最突出的表现在四个方面:鲁棒性强、包容性强、效率较高、计算较简单。
支持向量机的分类方法又可以分为线性分类和非线性分类,直观一点理解,线性分类就是“画直线”,而非线性分类就是“画曲线”。下面要介绍线性分类和非线性分类的实现方法[36]:
3.1.1线性SVM
有线性样本集,其中的取值为1或者-1。这个样本集中的样本可以分为两个大类,若属于第一类,这个时候的值为1;而若属于第二类,就是-1。
设分类超平面为:
其中和都是参数,是权重向量而是补偿,满足以下约束条件:
区分这两类样本集的关键就是看和分类超平面的相对位置,而且分布于超平面的两侧,这个时候就称这是一个线性可分的SVM,满足公式:
判决函数就定义为:
整个超平面满足的约束条件是:
样本点到超平面的距离可以表示为:
图3-1 最优超平面
而为了将训练集实现最优化的分类效果,达到分类间隔最大化的需求,就要找到这一个最优分类线,如果是高于二维的空间,这个时候需要寻找的就是最优分类面。
图中的方形和圆形就是被超平面分类的两类样本点,而两条虚线上面的标注成黑色的样本点之间的距离就是最大边际距离,一般来说这个值越大,那么分类的效果就越好,训练得到的这个SVM分类机的准确率也就越高。
为了找到满足分类规则(3-3)且边际距离最大的超平面,就需要使得最大,因为(3-6)的分母已经进行了约束是一个定值。而最大就是最小,自此为止问题就转化成了求解的最小值的问题,即满足:
由于图中的两条虚线上的样本点满足的约束条件是,而这些样本点到超平面的距离是最小的,所以决定了最大边际距离,从而决定了最佳超平面的位置。这些样本点成为支持向量(Suppport vectors, SV)。
前面介绍过支持向量机拥有较好的灵活性和鲁棒性,而这个良好的鲁棒性是因为引入了松弛变量和惩罚因子。由于在寻找最佳超平面的过程中经常会引入几个异常的数据点,使得本来正常的系统变得无法求出最佳超平面,加入松弛变量和惩罚因子的改进求解公式:
这里为松弛变量,而为惩罚因子。满足的约束条件:
到现在为止,在考虑了影响因素之后我们求解的问题就变成了一个二次的凸优化问题,为了方便求解,本文引入了拉格朗日算子,问题被转化成为:
而求解这个式子的约束条件可以表示为:
这个时候,可以得到、和的关系有:
式中的和是两个类别中分别分布的一对支持向量。这个时候判决函数就可以表示为:
3.1.2非线性SVM
非线性SVM是不能直接进行分类的,一般来说都是需要先把原来的问题映射到一个更高维的空间中,化为线性可分问题,然后再用线性SVM的办法进行求解得到分类算法。而这个映射的函数表示为,在通过核函数映射之后,原本的线性问题被转化为:
其余约束条件并没有变化,这个时候的判决函数表示为:
这里可以将整体表示为一个映射函数,而这个函数就成为核函数,是一个非常重要的函数。
这时候求解的式子就可以表示为:
而判决函数则是可以表示为:
3.2核函数的选取
核函数作为将非线性SVM映射到线性SVM的重要函数,不仅很大程度上决定了未来高维空间的样本点排布,间接影响了最后的分类结果。核函数的分类主要可以分为以下几类:
(1)线性核函数:。
(2)多项式核函数:,其中是多项式的阶数,是多项式的系数,就是一个加性常数。
(3)高斯径向核函数:,其中是高斯核的宽带。
而本文在进行对线性、非线性和高斯径向核函数带入比对后的实验,根据实验结果的相对优劣,选用了多项式核函数。一般来说的值越大,那么运算的时候复杂度和用时都会相应的增加,并且并不是的值越大就越好,要根据系统表现来选择这个数字。在对进行调参的时候,从1到4的整数中,得到的系统最优,得到的最后准确率结果最高。
多项式核函数的表达式为:
这里面的两个参数本文设置为了可手动调节,以得到较优结果。在手动选取了和后,系统会自动带 入,然后利用这个核函数进行高维映射,再用SVM算法进行分类。
而为了得到最优的核函数参数和,本文采用交叉验证方法来得到一个最优值,交叉验证就是在将特征值进行映射和SVM分类之前,将所有的样本点分为两个部分:训练集和测试集,其中训练集将会用来训练分类模型,而测试集就是用来测试训练出来的这个分类模型。一般采取的都是折的交叉验证,这个“折”顾名思义就是“次”的意思,每一次都会将所有的样本点分为个等份,然后选取其中的个等份作为训练集,剩下的那1个作为测试集,直到每一份样本点都作为测试集被测试过为止,共计次。本文选择即4份训练集1份测试集,步骤如下:
将CASIA中的所有语音信号均等分为5份,每一次选取4份为训练集,1份为测试集。
对所有语音信号进行语音情感特征函数的提取。
进行5折交叉验证,最后得到最优的核函数参数和。
四、4实验结果和性能分析
4.1系统界面的设计
整个系统的编写是用matlab代码完成的,matlab软件对于信号处理来说有着丰富的库函数和极其方便的绘图方法,适合显示图像,而且在matlab中对语音信号的各种数字化处理都有着相当优势。在对整个系统进行整合之后,运行main函数,可以通过matlab主面板监控程序的运行和准确率显示,还会输出一个准确率的表格,上面记录着每一个语音信号的识别准确率,最后输出一个总的算数平均值结果。但是原本的系统每运行一次,不仅需要训练所有的训练集,然后再到识别测试集中的内容,没有针对性对我所需要的某一个语音信号进行识别,更是没有直观的输出和界面,导致每一次调的过程是复杂而且耗费时间的。
所以,为了提高针对性识别一个语音信号的情感分类,我设计了一个UI 界面来选取每次需要识别的语音信号,这样每一次选取好了某一个我需要识别的语音信号时,只需要在训练好的模型的基础上针对性地测试选中的信号,可以又快又好又直观的看到每一次训练的结果,方便比对和找到更多办法去改进。
UI界面主面板如下:
图4-1 UI界面主面板
其中包括的模块有:
训练参数gamma和coef0:手动设置的两个参数,由于时间限制,对于系统的优化只能停留在小范围增加的阶段,提升有限,很多时候手动调节这两个参数可以得到更优的效果,所以设置这两个参数可以自行输入,都必须输入正数,gamma设置范围是0.1到100,步距是0.1;而coef0的输入范围是0到100,步距为5。
选择音频:这里的音频库,我选择的依然是中科院自动化所CASIA,实验者每选择一个音频,将会传入到后端系统,进行快速识别和预测,得到针对这个语音信号的结果。
播放音频:为了防止播放错音频,或者需要进行人工试听的时候,可以点击此处进行试听。
正确率:是一个不大于1的概率,将一个音频传入后端,然后进行识别后,给出的对于这段音频的判断,每一次给出的准确率不尽相同,并且有随着参数调节持续变化的趋势。
训练时间:这里主要展示的两个数字,是整个识别的速度对比,左边的是采取二叉树SVM算法的识别时间,右边是原始SVM算法的识别时间。下面的示例可以看出这两组数字的对比是比较明显的,更加体现了二叉树SVM算法的优越性。
开始预测:这是一个独立单元,前面的操作都是对数据和概率的运算,这里才算是真刀实枪的识别;点击开始预测之后,在模拟真实情况下,给出一个语音信号,我们的系统会给出怎样的判断,一般来说会依据识别准确率给出相应的预测结果,比如准确率是0.6左右,那么我识别10次会有6次结果是正确的。
4.2.1准确率
现有的研究中,语音情感识别准确率还没有得到显著性的提高,这和本文开始介绍的几个不足有关。设计在初阶阶段,不仅没有方便的窗口程序,训练的过程只能在matlab控制面板中显示(图4-2),而且得到的准确率基本是65%上下浮动,这和两个因素有关:
(1)使用的是matlab库函数自带的SVM算法,而matlab自带的SVM算法是一个封装包,没有办法查阅其代码,更没有办法进行改进和优化;
(2)核函数的选取是潦草又没有技术含量的,特别是为了先完成整个框架的构建,我选取的核函数是最简单的线性核函数,但是效果远远不如多项式核函数,可操控的变量也是没有带来很大的作用。
本文对准确率的优化和提高,主要是多次对比之后选择了次数为2 的多项式核函数,比线性核函数的性能更优,而且在核函数参数的选取上面,原本使用的是在代码中手动调参,不仅费时费力而且得不到最优的参数,只能得到一个最优区间。改进后,核函数两个参数和采用交叉验证的方法,训练得到最优参数和,带入后语音情感特征参数的映射得到优化,从而整个系统的识别准确率得到提高。
图4-4 参数优化后的识别准确率
从上图可以明显看出,识别准确率有所提高。值得一提的是,不同情感的识别准确率有所不同(以下实验采用控制变量法,在设置gamma和coef0时的值分别为0.56和20):
(1)生气(angry):生气的基音频率和短时能量都是比较高的,在进行识别的时候,比较容易混淆的就是惊讶(surprise)和高兴(happy)两种情感。进行百次无差别随机选择随机的生气语音样本进行实验后,得出来采用二次多项式核函数的准确率为69.73%,相比较线性核函数得到了61.98%准确率提高了8%,这是很大的进步。而一个样本在每次训练的时候得出的结果也是略有偏差的:
图4-5 样本angry.214优化前后的十次实验结果折线图
如图可以看出对样本angry.214我们进行了10次实验,其中有6次的识别准确率在70%以上,而剩下4次的识别准确率也在60%以上,最高的已达78.30%,优化之前使用线性核函数的准确率虽然有一次表现不俗达到了80.91%,但是总体只有5次在50%以上,偶然性很大,所以整体水平不高。而有几次在预测识别的时候误判成了surprise。
图4-6 angry误判为surprise
(2)高兴(happy):高兴也是人们在情绪高昂的时候的情感,所以和生气还有惊喜会有时候重叠。进行百次无差别随机选择随机的高兴语音样本进行实验后,得出来的准确率为70.33%,略高于生气。使用线性核函数的时候得到的准确率有66.40%,准确率提升了约4%,也有相当的提升。而一个样本在每次训练的时候得出的结果也是略有偏差的:
图4-7 样本happy.223的十次实验结果折线图
如图可以看出对样本happy.223我们进行了10次实验,二项式核函数的准确率依然表现稳定,其中也是有6次的识别准确率在70%以上,而剩下4次的识别准确率也在60%以上,最高的已达75.8%,虽然最高的识别准确率没有生气高,但是总体的水平比较稳定。而线性核函数的最高准确率已经达到了83.37%,但是在整体表现方面还是有所欠缺。而有几次在预测识别的时候误判成了angry。
图4-8 happy误判为angry
(3)惊讶(surprise):惊讶其实可以是高兴的也可以是猝不及防的恐惧,总之是情绪的突然释放,那么其基音频率和短时能量也是相当高的,和高兴还有生气有一定概率混淆。进行百次无差别随机选择随机的惊讶语音样本进行实验后,利用二项式核函数映射的系统,得出来的准确率为72.02%,是目前为止识别准确率最高的。线性核函数得到的准确率也达到了最大值,达到了66.56%,提高了5.5%左右。
图4-9 样本surprise.215的十次实验结果折线图
如图可以看出对样本surprise.215我们进行了10次实验,二次核函数的数据比较稳定,其中有8次的识别准确率在70%以上,而剩下2次的识别准确率也在60%以上,最高的已达75.80%。而线性核函数依然存在概率问题,在某些时候的准确率比较高,甚至有3次达到了80%以上,但是整体情况依然相对较差。
(4)悲伤(sad):和前面的三种情感不同,悲伤是人在情绪比较低沉的时候发出的声音,自然基音频率和短时能量不高,而且梅尔倒谱系数(MFCC)相对更小。而悲伤却容易和害怕(fear)和平静(neutral)混淆。进行百次无差别随机选择随机的悲伤语音样本进行实验后,二次核函数得出来的准确率为69.50%,比前面几种都略低。线性核函数的准确率却相对而言比较高,平均值为66.12%,悲伤这种情感只获得了3%左右的提升。而一个样本在每次训练的时候得出的结果也是略有偏差的:
图4-10 样本sad.206的十次实验结果折线图
结 论
本文做出的两个重要调整,在识别速度和识别准确率上的优化。由实验结果分析中我们可以知道,在系统的映射核函数由线性核函数改为二次核函数并进行了参数和的优化后,总体识别准确率已由65%左右提升到了70%左右,5个百分点就可以让100份样本多出5个识别准确的机会。而识别速度更是一个进步,1/3的识别速度完全是肉眼可见的提升,在生活应用方面都带来了更大的便利。
尽管如此,本文还是存在很多需要改进的方面:
(1)对语音信号进行数字化的时候采用的是PCM编码,这种编码虽然分辨率最高且不会丢失信息,但是由于带宽太大难免拖累训练速度,可以寻找其他编码方式进行改进。
在选定参数和的时候,本文采取的方式是在独立程序中用交叉验证的方法,得到最优的和值。但是这种方法,每进行一次耗费的时间是几小时,所以无法向整个系统中添加。但是根据对文献的阅读和分析,发现Fisher方法可以又快速又高效地确定这两个参数,后期可以进行优化。
六、 目录
目 录
摘 要 I
Abstract III
1 绪 论 1
1.1 课题背景 1
1.2 研究意义 1
1.3 国内外研究综述 3
1.3.1 研究综述 3
1.3.2 现存问题 4
1.4 内容安排 5
2 语音信号预处理及特征参数 7
2.1 预处理 7
2.1.1 数字化 7
2.1.2 预加重 7
2.1.3 加窗分帧 8
2.1.4 端点检测 10
2.2 语音情感特征参数 12
2.2.1 基音频率 12
2.2.2 短时能量 15
2.2.3 共振峰 17
2.2.4 梅尔频率倒谱系数MFCC 18
3 基于SVM支持向量机的语音情感识别 20
3.1 支持向量机SVM 20
3.1.1 线性SVM 21
3.1.2 非线性SVM 23
3.2 核函数的选取 24
3.3 二叉树SVM分类模型的构建 25
4 实验结果和性能分析 29
4.1 系统界面的设计 29
4.2 实验结果与性能分析 30
4.2.1 准确率 30
4.2.2 识别速度 37
5 结 论 39
参考文献 41
在学取得成果 47
致 谢 49
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)