!!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!!
💕💕作者:优创学社
💕💕个人简介:本人在读博士研究生,拥有多年程序开发经验,辅导过上万人毕业设计,支持各类专业;如果需要论文、毕设辅导,程序定制可以联系作者
💕💕各类成品java系统 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询交流。学习资料、程序开发、技术解答、代码讲解、源码部署,需要请看文末联系方式。
摘要
本设计介绍了基于深度学习的语音情绪识别系统的开发过程。随着自然语音处理的不断发展,语音情绪识别成为一个新的研究热点。本设计使用的数据集共有一千二百多条。采用Python语言进行编译,所使用的的是深度学习的技术,用到了语音信号处理的语音特征值的提取技术,也用到了语音信号处理基础理论。本设计系统中包括了语音音频的遍历,语音音频特征值提取,卷积神经网络模型训练,做出测试数据的时域图、频域图和语谱图,对测试语音数据集的预测,达到对语音情绪识别的效果。本设计通过对神经网络模型进行不同的训练次数来逐步提高网络模型的预测能力,优化神经网络。最终结果表明,本设计的语音情绪识别网络预测成功在98%以上,能够很好地预测语音的情绪,达到了本设计任务目标,实现了本设计的要求的功能。
关键词:深度学习;卷积神经网络;Python,语音信号特征提取
ABSTRACT
This design introduces the development process of a speech-emotion recognition system based on deep learning.With the continuous development of natural speech processing, speech emotion recognition has become a new research hotspot.More than 1,200 datasets are used in this design.The Python language uses the deep learning technology, the extraction technology of speech signal processing, and also the basic theory of speech signal processing.This design system includes the traversal of speech audio, speech audio eigenvalue extraction, neural network model training, make the time domain map, frequency domain map and language spectrum map of the test data, the prediction of the test speech data set, to achieve the effect of speech emotion recognition.This design gradually improves the predictive power of the network model by optimizes the neural network model.The final results show that the successful prediction of the speech emotion recognition network in this design is above 98%, which can well predict the emotion of speech, achieve the task objectives of this design, and realize the functions required functions of this design.
Key words: DEEP LEARNING; CONVOLUTIONAL NEURAL NETWORK; PYTHON; EXTRACTION OF SPEECH SINGAL FEATURES.
目录
一.绪论....................................................... 1
1.1研究背景................................................. 1
1.2 研究现状................................................ 1
1.3 研究内容和研究方案....................................... 2
1.3.1 研究内容........................................... 2
1.3.2 研究方案........................................... 3
1.4 论文组织结构............................................ 3
二 自然语言处理理论基础......................................... 5
2.1 语音信号的理论基础....................................... 5
2.1.1.语音信号的数字化.................................... 5
2.1.2 时域表示........................................... 6
2.1.3频谱表示............................................ 7
2.1.4语谱图.............................................. 8
2.2语音信号预处理........................................... 9
2.2.1分帧和加窗.......................................... 9
2.2.2预加重............................................. 10
2.3语音特征值提取.......................................... 10
2.4人工神经网络............................................ 14
2.4.1 卷积神经网络(Cnn)................................ 14
2.4.2.池化层............................................ 17
三. 系统分析................................................. 19
3.1 需求概述............................................... 19
3.2 系统概述............................................... 19
3.3功能实现................................................ 22
3.3.1 语音信号的遍历..................................... 22
3.3.2 卷积神经网络设计................................... 24
3.3.3 神经网络的训练并保存网络模型........................ 26
3.3.4 神经网络的预测..................................... 31
四. 神经网络系统改进.......................................... 33
4.1 改进神经网络........................................... 33
4.2 神经网络的比较分析...................................... 36
4.3 总结................................................... 39
五 结果总结................................................... 40
5.1 两次实验数据对比分析.................................... 44
5.2 两次实验总结........................................... 45
5.3 实验三................................................. 45
5.4 总结................................................... 47
结论.......................................................... 48
参考文献...................................................... 50
附录 A 中文译文.............................................. 51
1.1研究背景
在20世纪40年代时,在当时walter pitts和warren mcculloch建立了基于人脑神经计算机。这被认为是深度学习的开端,此后深度学习就一直在不断的平稳发展。尤其是在2012年深度学习开始表现出其巨大的优越性。在以前,由于计算机对数据的存储不足,深度学习神经网络不能充分地学习得到训练,其优越性并没有表现出来。而随着大数据时代的到来,计算机所能容纳的数据越来越多。进而深度学习神经网络能过得到充分的训练,逐渐的开始展现出深度学习神经网络的能力。在2016年阿尔法狗战胜了围棋九段的大师李世石。从而体现出深度学习神经网络在计算方面已经成功的超过了人类。,由此也看出,深度学习的神经网络已经变得非常成熟了。目前深度学习中比较常用的神经网络是卷积神经网络cnn和循环神经网络。其中循环神经网络有rnn和lstm。其中卷积神经网络应用于视觉处理方面得到了广泛的发展,例如现在的智能电动汽车特斯拉 采用的就是深度学习的技术来处理路段情况进而达到无人驾驶的功能,其中分不开的就是卷积神经网络的视觉处理。同时卷积神经网络也广泛的用在分类检索上。由此,卷积神经网络也可进行语音的识别和处理,这为语音情绪识别的多打下基础。
随着社会的不断发展,人机交互的方式也在不断地变化。在上世纪人们刚开始发明计算机是也只能在键盘输入指令来达到人机交互的能力。而现在,随着科技的不断进步人们希望机器能做的事情越来越多,人们已经不再满足机器只能靠输入指令来交互了。人们希望机器能听懂人们的话,甚至能识别出人们的情绪,以此来使机器更方便的为人们提供服务。让机器能识别人的语音情绪成为了越来越迫切的需求。随着深度学习的快速发展,语音识别的技术也在不断地得到发展。深度学习为语音的情绪识别打击了坚实的基础。在最近的二十年里,自然语言处理得到了快速的发展。现在语音信号的提取技术越来越多,提取处理的语音参数也越来越好,于是机器就越来越能听懂人类。表现出来机器越来越智能了。
1.2 研究现状
虽然近二十年里,自然语言处理已经得到了广泛的发展。但语音的情绪处理依旧处于语音信号处理新的领域里面。语音的情绪识别里包含了许多领域的内容。
与多个学科交叉。比如:生物学,人工智能,语音信号的处理,新型的人机交互等等。语音情绪的识别并不像研究了很多年的语音信号识别一样,只注重语音信号的识别正确性,而要注重语音情感的特征值。由此对于语音的音调变化,频率的变化,语音能量的变化尤为关注。因为这些语音信号参数包含着说话人的情绪信息。这是在语音情绪识别中不能忽略的重要参数,在语音信号特征提取的时就是要提取出语音音频信号的频率,作为要用于神经网络模型的特征参数,来进行网络训练。现在深度学习的发展已经成熟,进而带动着语音信号情绪识别也在快速的发展。
目前,语音情绪识别的技术在世界各国都在快速的发展,在日常生活中语音能反应人的基本情绪,人们希望通过语音来获得当事人的基本状态。对于专业的演员表演出的语音情绪,目前的识别已经达到了很高的水平。但对于日常的人们生活中,语音情绪识别却表现出很低的预测率,即不能很好地识别出日常生活当中的人的情绪。因为在日常生活当中,人们的语音情绪并没有像演员表演一样,语音情绪特别的丰富。所以机器不能判断出当事人说话是否是生气的,还是否是正常的。同时机器也不能识别出说话人是否有挖苦嘲讽的含义。这是机器在进行日常语音识别是出现的弊端。但语音已然是人类表达情绪的重要方式,在人们日常交流中起到重要作用,而且人们大多数的语音是受人们的情绪所支配的。这使得计算机识别人语音情绪,从而判断人的心理情绪是可行的。
现在,世界上的各个国家都在进行着语音情绪识别的研究,其应用范围也在不断地扩展。比如:电话客服在接通电话时可采用人工进行语音情绪的识别,远程的学前教育,而且有的国家已经把语音情绪识别的技术用在了刑侦的犯罪嫌疑人的审问方面,用来破获犯罪分子的心理情绪,从而达到侦破犯罪案件的目的。虽然现在的语音情绪识别没有大面积的普及使用,但随着网络技术的不断发展,随着深度学习的不断发展,语音情绪识别技术会得到更好地发章。最终能使其完美的理解人的情绪,从而达到更好地人机交互。
1.3 研究内容和研究方案
1.3.1 研究内容
语音情绪识别系统中,首先要准备好语音情绪识别的训练集数据和测试集数据,然后进行代码编写。程序代码:1.对语音数据集进行预处理。2.对语音数据集内容进行处理,分析出不同语音的音频信号,提取出不同语音的mfcc。3.写出网络模型,不同的网络模型分析数据的结果不同,本次论文采用cnn的网络模型。4.对网络模型进行保存处理。5.使用语音训练数据集对cnn网络模型进行训练,并测试对训练数据集的成功率。6.使用训练好的语音情绪识别网络模型对预测数据集进行预测,得到一个预测结果。
1.3.2 研究方案
1.网络模型方案:采用 cnn 的神经网络模型,使语音数据集对该神经网络进行训练和预测。
2.相关技术:语音情绪识别系统是基于深度学习的,其中所用到的知识有语音信号处理(PYTHON),深度学习,神经网络模型(CNN)。
3.此次实验主要采用的神经网络是卷积神经网络cnn。实验的运行过程:首先对语音数据集进行预处理,然后提取出不同情绪语音的特征值(MFCC),然后写出其处理这些特征值的神经网路模型,使用准备好的训练数据集对其训练和测试。然后保存训练完成的网络模型,再用准备好的测试集,让神经网络对其测试,得到测试结果。系统工作原理图如图 1-1 所示。
图 1-1 系统工作原理图
Fig.1-1 Working schematic diagram of the system
1.4 论文组织结构
本设计的组织结构如下,将本论文分为以下五个部分:
第一部分:绪论。主要叙述选题的研究目的和意义,并通过分析当前的研究语音情绪识别的背景和发展趋势,阐述选题研究的内容。
第二部分:自然语言处理理论基础。主要包括两个部分。1.语音信号的处理。2.神经网络的认识。通过学习认识语音情绪识别的过程。
第三部分:系统分析。主要是解决本次实验的问题:1.语音的保存。2.特征值的提取。3.设计的神经网络模型。
第四部分:神经网络系统改进。主要是对网络模型的改进,是的网络模型对预测数据集的预测成功率提高,更好地识别语音的情绪。
第五部分:结果总结。主要是对本次实验预测数据的分析,计算出系统对预测数据预测的成功率。对系统进行测试,并对系统测试结果进行分析,总结和建议,是系统变得更完善。
第二章 自然语言处理理论基础
2.1 语音信号的理论基础
在语音信号的理论基础中包括了语音信号的数字化,语音的时域图,语音的频域图,语音的语谱图和神经网络等等。通过学习这些基础的语音信号处理知识,就能基本了解语音情绪识别的基本原理,即可设计神经网络模型来完成本次设计系统。
2.1.1.语音信号的数字化
语音信号的数字化就是将语音信号转化为数字信号存入到计算机当中。提取过程如下图 2-1 所示。当语音信号转化成数字信号后,就能对其进行信号参数提取等后续操作。提取的语音信号参数被用于语音识别,语音情感识别等不同领域。本设计实验中需要提取语音参数特征来训练神经网络模型。
图 2-1 语音信号的数字化图
Fig.2-1 Digitalization diagram of the voice signal
图 3-2 语音情绪识别系统流程图
图 3-3 语音情绪识别功能模块图
功能实现
3.3.1 语音信号的遍历
本次试验中通过递归调用的方法遍历所有的语音信号,提取语音信号的所有情绪标签。如图 3-4 所示。
图 3-4 的程序含义:
首先自定一个函数listdir,参数设置为path,list_name。path传入的是语音音频的相对地址,list_name传入的是语音音频的文件名。函数是以递归的方式进行遍历语音文件操作的。函数体listdir中先建立一个列表label_list。接着跟进一个for循环,进入该文件夹,遍历该文件夹中的文件。接着进行if判断如果还是个文件夹,继续调用本身,否则查询该文件是否有’.wav’后缀名。有的话就加入进list_name列表里。接下来就是列表里的内容进行分类操作,加上不同的六种语音标签。出现一种情绪就把标签加入,这使得每条语音都有了自己的情绪标签。
再此后的程序中,根据语音音频的标签,在提取不同语音信号特征时也带有这样标签进行网络模型的训练。
图 3-4 语音音频遍历
Fig.3-4 Voice-over-audio traversal
在通过 librosa.feature.mfcc 函数提取每一条语音MFCC 特征值。如下图3-5 所示:
图 3-5 中的程序是对语音音频特征的提取。
首先就是音频导入函数librosa.load函数将语音音频加载进来,获得语音的音频信号x,采样率sample_rate,获得音频的时长duration,音频的读取时间offset。
再用函数librosa.feature.mfcc()提取出语音音频的参数特征,再利用np.mean()函数对求取的语音特征取平均值得到了新的语音音频的特征mfccs。
接下来的操作就是语音特征值与之前提取出的情绪标签相对于应,从而获取出不同情绪的特征值的特点。
图 3-5 语音信号特征提取
Fig.3-5 Characteristic extraction of speech signals
由此我们得到了所有语音的特征值,这位下面的语音情绪识别的神经网络的训练提供训练语音数据。
3.3.2 卷积神经网络设计
本实验中最重要的就是人工神经网络的设计,本实验中采用的是卷积人工神经网络。
卷积人工神经网络的设计
(1)首先进行一维卷积,将padding设为’same’,即允许进行填充,输入数据设置为216个一维数据。激活非线性’relu’函数。输出256张特征图,并有5层channel。
(2)对上层进行一维卷积,padding设为’same’,即允许进行填充。激活非线性’relu’函数。输出128张特征图,并有5层channel。
(3)将dropout设为0.1,即随机失活10%神经元,防止神经网络出现过拟合。
(4)进行最大池化操作,将池化参数设为8,即从8个特征值中选取一个最大的值代替。
(5)对上层进行一维卷积,padding设为’same’,即允许进行填充。激活非线性’relu’函数。输出128张特征图,并有5层channel。
(6)对上层进行一维卷积,padding设为’same’,即允许进行填充。激活非线性’relu’函数。输出128张特征图,并有5层channel。
(7)对上层进行一维卷积,padding设为’same’,即允许进行填充。激活非线性’relu’函数。输出128张特征图,并有5层channel。
(8)将dropout设为0.2,即随机失活20%神经元,防止神经网络出现过拟合。
(9)对上层进行一维卷积,padding设为’same’,即允许进行填充。激活非线性’relu’函数。输出128张特征图,并有5层channel。
(10)对上层进行Flatten,即将上层卷积的参数数据转化为一维数据,激活’softmax’函数,进行全连接Dense(6),参数为6,因为一共六种情绪进行分类操作。该神经网络如下图 3-6 所示。其示意图如下图 3-7 所示。
图 3-6卷积神经网络
Fig.3-6. Convolutional neural networks
图 3-7卷积神经网络示意图
Fig.3-7 Schematic representation of the convolutional neural network
3.3.3 神经网络的训练并保存网络模型
对设计人工卷积神经网络(Cnn)进行训练
(1)首先设置一个优化器,优化器的参数设为0.0001,调用函model.compile,其中该函数的参数,loss=categorical_crossentropy,即设为分类交叉熵,用于分类的神经网络模型。optimizer=opt,选择已定义好的优化器opt。如图3-8所示。
图 3-8 优化器
Fig.3-8 The Optimizer
(2)调用函数model.fit,其测试参数为x_traincnn,y_train,batch_size=128,即每次训练128个数据,epochs=400,即对全体数据训练400轮次。validation_data=(x_testcnn, y_test),即验证数据设为x_testcnn,y_test。如下图3-9。并画出其model loss图和其model accuracy图。如下图3-10,3-11所示。
图 3-9 表明了对于神经网络的训练。Model.fit()函数就是对神经网络的训练。其中参数epoch代表着训练的轮次,每训练完一次数据集的语音条数为一次epoch。x_traincnn代表着训练数据集的特征,y_train代表着训练数据集语音情绪标签。x_testcnn代表了测试数据集的特征,y_train代表着测试数据集语音情绪标签。在这段代码中,x_testcnn,y_test代表了验证数据,验证网络模型是否出现过拟合的现象。
通过cnn.history[‘loss’]函数画出网络训练中训练数据和测试数据的模型损失函数和模型的准确率。第一段代码代表了画出模型的损失函数。title表明损失函数的名字model loss。ylabel表明纵轴表示损失,xlabel表明横轴表示训练次数,这里的次数是训练的轮次。
通过cnn.history[‘acc’]函数画出模型的预测数据的准确率。title表明模型准确率的名字model accuracy。ylabel表明纵轴表示准确率,xlabel表明横轴代表训练的次数,这里的次数代表训练的轮次。
神经网络模型的损失函数和模型准确率是两种分析网络模型好坏的重要参数。用过这两组数据就可判断神经网络是否出现了过拟合现象。当网络出现了过拟合的数据后就应该立刻停止训练,过拟合的网络模型是没有意义的。
下面进行操作是对网络模型的保存,然后用训练好的模型对测试数据进行预测,从而达到预测人的情绪的目的。
图 3-9 神经网络模型训练图
Fig.3-9 Training diagram of the neural network model
在图 3-10 中得到测试数据集和训练数据集的模型损失函数。图中表明这是在epoch=400下的模型损失函数。观察该损失模型,随着神经网络训练轮次的不断增加,训练测试集数据的损失函数在不断的降低在训练的最后损失函数降到了0.75以下。
在图中 3-11 中的得到epoch=400,测试数据集和训练数据集的模型预测的正确率。从图中可以看出训练数据集的预测准确率在不断的升高,达到了很好的预测的效果。最后成功率达到了90%以上。
图 3-10 model loss
Fig.3-10 model loss
图 3-11 model accuracy
Fig.3-11 model accuracy
保存训练完成的人工卷积神经网络如下图 3-12 所示,保存后的神经网络如下图 3-13 所示。
图 3-12 卷积神经网络模型保存
Fig.3–12 Convolutional neural network model preservation
图 3-12 是对卷机神经网络的保存,通过调用model.save()函数来达到保存神经网络的目的。本次设计还保存了网络的模型结构。
图 3-13 保存的神经网络
Fig.3-13 Conserved neural networks
3.3.4 神经网络的预测
已保存的网络模型,对测试数据集进行测试,得到预测语音情绪的结果。如下图 3-14 所示。预测结果如下图 3-15 所示。
图 3-14 神经网络模型预测图
Fig.3-14 Neural network model prediction graph
用该训练好的神经网络模型对测试数据集进行预测得到预测结果在图中 3-15 。改图是预测数据的部分截图。
图中表明预测数据量一共预测了一百三十五条语音数据,其中正确预测出的数据有一零五条语音数据,预测错误数据有三十条,预测准确率达到了77.8%表明该模型已经能够很好的完成语音的情绪识别任务。
图 3-15 测试数据预测结果(部分)图
Fig.3-15 Test data prediction results (part) Fig
更多项目:
另有10000+份项目源码,项目有java(包含springboot,ssm,jsp等),小程序,python,php,net等语言项目。项目均包含完整前后端源码,可正常运行!
!!! 有需要的小伙伴可以点击下方链接咨询我哦!!!