洛阳师范学院2012届本科生毕业设计
第5章 语音识别系统的实现与分析
5.1语音识别系统前端
5.1.1 语音库
语音识别实验的语音样本均采集自一个WAV录音机。WAV是微软开发的一种声音文件格式,具有较高的声音质量。实验中的语音文件采样率为22.050kHz,单声道,16位量化。
实验的目标设定为识别0, 1, 2?9这10个数字语音,采用中文普通话发音。语音库包括一个训练样本库和一个识别测试库。每个库中的每个数字发音5遍,这样训练样本库和识别测试库均有50个语音样本,总共100个语音样本。
5.1.2 实验环境
实验平台的操作系统为Windows 7,CUP主频为3.20GHz,内存2G。
实验环境为Matlab7,实验使用了其中的信号处理函数以及神经网络工具箱等。
5.1.3 前端参数
1.帧长与帧移
根据短时分析技术,时间范围在10ms到30ms内的语音信号片段被认为是稳定的随机信号。基于这个前提,第三章的特征参数模型才得以构建。因此语音识别首先需要对语音进行分帧。语音样本的采样率为22.050kHz,所以实验中设置帧长为256,帧移为128。
2.端点检测
端点检测的过程,需要设置的参数有低平均幅度、高平均幅度、低平均过零率、过零率阀值和最短持续时间。
平均幅度参数的取值范围与语音帧长有关,与声音能量有关。它的设置一般基于对语音样本的平局幅度的观察统计。如图5-1显示了几个语音样本的平均幅度。实验中设置低平均幅度Lapt=15,高平均幅度Hapt=25。
32
基于BP神经网络的语音识别系统
数字710080平均幅度604020050100150200250300350400450语音帧
(a) 数字7
数字8706050平均幅值40302010050100150200250300350400450语音帧
(b) 数字8
图5-1 语音样本的短时平均幅值
低平均过零率和低平均幅度同样,用于决定实际语音的起始点和结束点。实验中,低平均过零率与过零率阀值密切相关,如图5-2。而过零率阀值的设置与否关系到噪音的影响问题,在第二章的图2-5中表明了这点。系统中,过零率阀值为0.3,而低平均过零率设置为6。
threshold=0.2250200平均过零率15010050050100150200250300350400450500语音帧
33
洛阳师范学院2012届本科生毕业设计
(a) 阀值threshold=0.2
threshold=0.3200150平均过零率10050050100150200250300350400450500语音帧
(b) 阀值threshold=0.3
图5-2 数字3的短时平均过零率
5.2 BP神经网络实现与分析
5.2.1 BPNN的Matlab函数
1.BPNN的创建函数
net=newff(pr, sn, transf, trainf);
其中,pr为样本输入的数值范围;sn是一维数组,指定BP神经网络各层神经元个数;transf也是一维数组,指定BP神经网络各层的传递函数;trainf为BP神经网络的训练函数。该创建函数返回一个未经训练的BP神经网络。
2.BPNN的训练函数
net=train(net, sample, target);
其中,参数中的net为未经训练的BP神经网络;sample为供训练的语音样本特征;target为与sample相对应的期望输出。该训练函数返回一个已经训练的BP神经网络。
3.BPNN的仿真函数 Y=sim(net, sample);
其中,net为已经训练的BP神经网络;sample为供识别测试使用的语音样本特征。该仿真函数返回每个样本特征对应的识别结果。
34
基于BP神经网络的语音识别系统
5.2.2 BPNN的层次设计
1.BPNN的输入层
在训练阶段或者识别测试阶段,BP神经网络的输入均由语音的特征参数组成。这些特征参数构成一个矩阵;矩阵的每一列数据单独代表一个语音;那么矩阵的行数为每个输入的维数,列数则为语音样本数量。
BP神经网络的训练或者识别均是针对固定维度的样本来进行的。而语音的时间长短不稳定,所以在进行训练或者识别前需要截取固定维的语音特征参数。由于实验中语音识别的对象是10个单独的数字语音,样本的时长即使不完全相同,相差也不会大。实验选定的输入维数为600维,可表示的时间估算为600/12×(128~256)×[1/(22.050×10^3)],约为500ms。
2.BPNN的输出层
BP神经网络的期望输出,用于训练阶段的输出监督和识别测试阶段的正误判决。实验中总共需要表示0~9这10个数字,故BP神经网络的输出可设计为4维输出,即使用4位二进制数表示数字语音。如,数字0表示为0000,数字9表示为1001。
3.BPNN的隐含层
当神经网络的各节点采用S型传递函数时,一个隐含层就可以实现任意判决分类问题。对于规模不大的神经网络的模式分类、边界判决问题,使用两层隐含层并不一定比一层隐含层更优越。同时考虑语音识别系统效率问题,实验采用隐含层只有一层的BP神经网络。
4.样本顺序
为了保证BP神经网络在训练阶段不会过于着重某个数字语音的特征,而忽略其他数字语音的,训练语音样本的输入序列设计成:012?9012...9。相应地,作为监督的期望输出的序列也设计成这个顺序。
5.2.3 参数分析
1.传递函数的选择
根据实验中语音识别系统的输出期望的要求,识别结果的每一位必须是0或1,因此实验为BP神经网络的输出层选择了logsig(x)作为传递函数。函数logsig(x)的值域为(0, 1),当输出层的一位输出数值小于0.5时,表示0;当输出数值大于0.5时,表示1。这可以通过简单的四舍五入运算得到。
35
洛阳师范学院2012届本科生毕业设计
同时,实验中为BP神经网络的隐含层选择了tanlog(x)作为传递函数。它的值域为(-1, 1),能为神经网络内部提供更灵活的数值表示。
2.隐含层神经元个数
BP神经网络隐含层神经元个数的选择对网络性能的影响很大,对语音识别系统的识别率有着关键作用。若隐含层神经元个数太少,神经网络可能训练不出所期望的输出结果。因为个数过少时,网络容易陷入局部极小,鲁棒性较弱,容错能力不强,结果造成识别率低。若隐含层神经元个数过多,网络的训练时间很长,而性能不一定得到提高。
1.000.950.900.850.800.750.700.650.600.550.500.450.400.350.300510152025hidec30354045 LPC MFCCmatchrate
图5-3 BPNN在不同隐含层神经元个数下的性能表现
图5-3显示了BP神经网络在不同隐含层神经元个数下的性能表现。X轴为隐含层神经元个数hidec;Y轴为语音识别系统的识别率。带加号曲线描述的是LPC特征参数对应的网络性能;带圆点曲线描述的是MFCC特征参数对应的网络性能。从图中看出,随着隐含层神经元个数hidec的不断变化,BPNN的识别率不断变化。整体上,在hidec从5到40的变化过程中,识别率的性能曲线不断上升;当hidec大于20后,识别率趋于稳定。从局部上看,在BPNN的识别率并不稳定,曲线上有许多的峰值和波谷。这是BPNN每次训练的误差不同造成的。从另一角度,曲线的峰值随着hidec的增多而变优,波谷也随着hidec的增多而变优。因此,可以认为BPNN的识别能力是随着hidec的增加而逐渐提高的。为了保证神经网络的效率,hidec的数值不宜过大。实验中,隐含层神经元个数hidec=30。另外,使用MFCC特征参数来训练BP神经网络得到的识别率要高得多,识别率多次达到80%以上。
36