神经网络在语音识别上的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H a r b i n I n s t i t u t e o f T e c h n o l o g y
神经网络与智能信号处理
实验报告
神经网络实验报告
1、实验名称:
神经网络在语音识别上的应用
2、实验目的:
进一步了解神经网络在语音识别上的应用,了解神经网络的基本原理,学习神经网络的算法,还可以进一步分析不同的隐节点数以及训练步数对误差性能的影响。
3、实验要求:
1、设计一个标准的BP学习算法网络来对语音信号26个字母进行识别。
2、在训练时采用不同的隐含层神经元个数,分析其对网络性能、语音识别系统的识别率的影响。
3、用所创建的BP神经网络进行26个字母的语音识别,观察并记录结果,并分析其误差。
4、实验步骤:
1、语音识别的基本原理
语音识别的总体流程如下:
语音输入时要先经过预处理,包括预加重、分帧加窗等。然后进行特征提取,该实验中的特征参数为MFCC 参数。语音特征参数的时间序列构成语音的模式,将其与获得的参考模式逐一比较,获得最佳匹配的参考模式便是识别结果。
由于语音信号的复杂性,所以在一开始在语音信号输入语音识别系统时需要进行预处理,预处理包括预加重,分帧加窗,端点检测等。预加重的目的是为了加强语音的高频部分,以便在特征提取阶段进行频谱分析。分帧加窗的目的是为了使帧与帧之间平滑过渡,保持连续性以及保持语音信号的短时平稳性,降低由于不连续而产生的Gibbs 效应。端点检测的目的就是从语音信号序列中截取实际有效的语音信号。
特征提取阶段,是从语音数据中提取能反映语音信号特征和变化规律的参数,以唯一表征语音,这儿选用的语音信号特征参数为MEL 频率倒谱系数,即MFCC 。MEL 频率倒谱的实现过程如下图所示:
(1)对语音信号进行预处理,加窗、分帧将其变为短时信号。
(2) 将短时时域信号转变为频域信号,并计算其短时能量,离散傅立叶变换。将时域信号
后补若干0形成长为N 的序列,再经过离散傅立叶变换得到线性频谱,变换公式:
0n,k N-1
(3)在频标内三角带通滤波器个加于坐标得到滤波器组,转化关系为
(4)求对数能量。为了使计算结果对噪声和谱估计噪声有更好的鲁棒性,一般将上述经过Mel频谱取对数能量。则由线性频谱得到对数频谱的总的传递函数为:
(5)离散余弦变换(DCT)
将上述的对数频谱经过离散余弦变换到倒谱域,即可得到MEL倒谱系数即MFCC系数
2、BP神经网络的建立
BP神经网络是一种多层前馈神经网络,采用的算法是误差反传法,误差反传法特点就是使输入输出层连接权值进行调整,而且隐含层连接权值可根据误差与上层输出进行修改,即有了学习能力。在BP神经网络中存在前向传播信息流和误差反传信息流。前向传播信息流就是输入信号从输入层进入到隐含层,再从输出层输出。它的输出是整个神经网络的计算结果。网络会计算最后输出与期望间的误差。如果误差超过一定的范围,就沿着神经网络反传,进行误差反传。误差反传就是误差从输出层经隐含层到输入层的过程。误差衡量的是输出信息与期望信息的距离。在误差反传的过程中,连接权值根据误差值等一些参数来进行调整,使得调整后的BP网络的实际输出更接近于理想输出。
本实验中的BP神经网络设计为3层,即其隐含层只有一层。在训练阶段和识别阶段BP网络的输入均是由输入语音的MFCC参数组成。这些特征参数构成一个矩阵,矩阵的每一列代表一个单独的语音,矩阵的行数为每个输入的维数,矩阵的列数为语音样本数。
要识别所有的字母,BP神经网络的输出层采用5维的来识别26个英文字母。00000~11010分别对应字母A~Z。但实际中我们只识别A~E,所以只需3维就够了,001~101分别对应A~E。
当神经网络的各节点采用S型传递函数时一个隐含层就可以实现任意判决分类问题。对于规模不大的神经网络的模式分类、边界判决问题,使用两层隐含层并不一定比一层隐含层更优越。同时考虑到语音识别系统的效率问题,所以本实验只采用一层隐含层,隐含层神经元的数目为15个。
BP神经网络的创建函数:net=newff(pr,sn,transf,trainf)
其中pr为输入的数值范围;sn为一维数组,数组的维数表示神经网络的层数,数组的大小表示该层的神经元个数。transf也是一维数组,表示神经网络各层的传递函数。trainf为神经网络的训练函数。
BP神经网络的训练函数:net=train(net,sample,target)
参数中的net是指未经训练的BP神经网络,sample为供训练的语音样本,target为相对应的sample的期望输出,该函数返回一个已经训练好的BP神经网络。
BP神经网络的仿真函数:Y=sim(net,sample)
Net为已经训练好的BP神经网络,sample为供测试使用的语音样本特征。该仿真函数返回每个样本特征对应的识别结果。
5、试验结果分析
由于识别26个字母的输入较大,本实验中只用A~E五个字母来训练识别,它们的基本原理是一样的。BP神经网络的网络参数设置为:BP网络共3层,输入神经元的个数为30,隐含层神经元的个数为20,输出层神经元的个数为3。如果训练步数为150。则输出为
每一列代表一个字母,则输出Y接近于[001,010,011,100,101…….]即输出为A,B,C,D,E,A,B,C,D,E,A,B,C,D,E
下图为其误差图:
当隐含层为15,训练步数为150时,则其输出为:
输出Y的误差就比较大,下图是其误差图:
当隐含层为30时,训练步数为150时,其输出:
其误差也比较大,误差图如下:
比较上面3幅误差图可以发现,当训练步数为150时,隐含层数目为20时,其误差最小,隐含层数目为15和30时,其误差都较大。得出结论,BP神经网络隐含层个数的选择对网络性能的影响很大。若隐含层神经元个数较少,神经网络就可能训练不出所期望的输出结果,因为个数较少时,网络容易陷入局部较小,鲁棒性能较弱,容错能力不强,结果造成识别率低。若隐含层神经元个数过多,网络的训练时间很长性能也不定能得到提高。
所以综上所述,隐含层神经元数目最终选取20个。
当神经元个数选取20个时,训练步数分别选取100,150,200,比较其误差。
训练步数=100
训练步数=150