WHCSRL 技术网

【语音识别】基于BP神经网络的语音情感识别Matlab源码

1 个模型

语音是人类交流的重要手段,是相互传递信息最方便、最基本、最直接的方式。语音信号在传递语义信息的同时,也传递情感信息,情感在人们的交流中起着重要的作用。因此,随着人机交互技术的飞速发展,语音信号中的情感信息越来越受到研究人员的关注,尤其是在语音合成和语音识别领域。长期以来,情商研究只存在于心理学和认知科学领域,但近年来,随着信息技术的飞速发展以及人与计算机的关系日益密切,如何实现计算机的拟人化和感知周围环境和情绪 此类内容已成为人机交互能力的重要标志和目标。情绪智力与计算机技术的结合产生了情绪识别的新研究课题。语音信号的情感识别也可以看作是模式识别的问题。研究人员通常提取许多语音特征作为情感特征,并将提取的语音特征输入分类器进行情感识别。
论文重点研究了基于BP神经网络的语音情感识别。主要研究内容如下:
(1)语音信号的前端处理。对情感句子执行有效的预加重、加窗和端点检测。研究了短时过零率和短时能量提取方法,并对基音周期估计算法进行了比较和分析。该方法是通过研究前人提出的方法进行改进的。介绍了基音周期估计算法。
(2)语音情感特征参数的分析与提取。对大量情感句子的特征变化规律进行统计分析,研究与情感相关的特征信息,确定用于语音情感识别的16个特征值,形成16维特征向量,包括:第一共振峰,第二和第三共振峰的最大值、最小值和平均值;平均短时过零率的最大值;基音频率的平均值、最大值和最小值以及短时能量的最大值和最小值和平均值。
(3) 因为提取的特征向量是高维的,具有一定的相关性,即存在一定的冗余度。因此,本文对神经网络训练集中的样本进行归一化,然后进行主成分分析,既降低了输入特征向量的维数,又去除了冗余信息。本文还分析了BP神经网络的结构、原理和不足。在MATLAB实验环境中,采用两种改进的BP算法进行语音情感识别。与传统的BP算法相比,改进的BP算法从识别率和收敛速度都得到了一定程度的提升。

1.1 BP 神经网络

1.2 情感特征

2 部分代码

function sum=bpnn(trainsample,testsample,class)
%%%% 输入参数:trainsample为训练样本,testsample为测试样本,class代表训练样本的类别,对应trainsample中的数据
%%%%sum:五种基本情绪的识别率
对于 i=1:140
特征(:,i) = trainsample(:,i);
结尾
%%%% 特征值归一化
[input,minI,maxI] = premnmx(feature');

%%%% 构造输出矩阵
s = 长度(类);
输出 = 零 (s, 5);
对于 i = 1: s
输出(i, class(i)) = 1;
结尾

%%%%创建一个神经网络
net = newff( minmax(input), [10 5], {'logsig''purelin'} ,'traingdx'); %%%%创建一个前馈神经网络

%%%% 设置训练参数
net.trainparam.show = 50;
net.trainparam.epochs = 150;
net.trainparam.goal = 0.1;
net.trainParam.lr = 0.05;

%%%% 开始训练
净 = 火车(净,输入,输出);

%%%% 读取测试数据
对于 i=1:140
Featuretest(:,i) = testsample(:,i);
结尾
c=testsample(:,141);
%%%% 测试数据归一化
testInput = Tramnmx(featuretest', minI, maxI);

%%模拟
Y = sim(net, testInput)
总和=[0 0 0 0 0]; %%%% 每种情绪的正确识别次数
%%%%统计识别正确样本的数量
对于 i=1:20
如果 Y(1,i)>Y(2,i)&&Y(1,i)>Y(3,i)&&Y(1,i)>Y(4,i)&&Y(1,i)>Y(5) ,一世)
总和(1)=总和(1)+1;
结尾
结尾
对于 i=21:40
如果 Y(2,i)>Y(1,i)&&Y(2,i)>Y(3,i)&&Y(2,i)>Y(4,i)&&Y(2,i)>Y(5) ,一世)
总和(2)=总和(2)+1;
结尾
结尾
对于 i=41:60
如果 Y(3,i)>Y(1,i)&&Y(3,i)>Y(2,i)&&Y(3,i)>Y(4,i)&&Y(3,i)>Y(5) ,一世)
总和(3)=总和(3)+1;
结尾
结尾
对于 i=61:80
如果 Y(4,i)>Y(1,i)&&Y(4,i)>Y(2,i)&&Y(4,i)>Y(3,i)&&Y(4,i)>Y(5) ,一世)
总和(4)=总和(4)+1;
结尾
结尾
对于 i=81:100
如果 Y(5,i)>Y(1,i)&&Y(5,i)>Y(2,i)&&Y(5,i)>Y(3,i)&&Y(5,i)>Y(4) ,一世)
总和(5)=总和(5)+1;
结尾
结尾
sum=sum./20;

3 仿真结果

4 参考

[1] 詹新明,杨灿。 (2009)。基于matlab和bp网络的语音识别系统。微机信息, 25(025), 176-178.

[2] 颜才兵。基于BP神经网络的语音情感识别算法研究。迪斯。武汉理工大学,2009.

推荐阅读