基于BP神经网络语音识别方法研究.docx
《基于BP神经网络语音识别方法研究.docx》由会员分享,可在线阅读,更多相关《基于BP神经网络语音识别方法研究.docx(12页珍藏版)》请在冰豆网上搜索。
基于BP神经网络语音识别方法研究
基于BP神经网络语音识别方法研究
摘要:
神经网络是近年来信息科学、脑科学、神经心理学等诸多学科共同关注和研究的热点。
由于其具有良好的抽象分类特性,现已应用于语音识别系统的研究和开发,并成为解决识别相关问题的有效工具。
文章在讲述语音识别过程的基础上重点讨论利用BP神经网络对语音进行识别,用MATLAB完成对神经网络的训练和测试,并获得满意的结果。
关键词:
语音识别;模式识别;BP神经网络,
1绪论
计算机的飞速发展,使人们的生活方式发生了根本性的改变,鼠标、键盘,这些传统的人机接口使人们体会到了生活的便利。
科学技术日新月异,假如让“机器”能够听懂人的语言,并根据其信息去执行人的意图,那么这无疑是最理想的人机智能接口方式,因此语音识别作为一门极具吸引力的学科应运而生,很多专家都指出语音识别技术将是未来十年信息技术领域十大重要的科技发展技术之一。
1.1研究背景及意义
语言在人类的智能组成中充当着很重要的角色,人与人之间的交流和沟通大部分是通过语言的方式有效的完成。
作为人与人之问交流最方便、自然、快捷的手段,人们自然希望它成为人与计算机交流的媒介。
随着数字信号处理及计算机科学的飞速发展,人们对实现人机对话产生越来越迫切的要求,使得语音识别技术近年来得到了迅速的发展,语音识别技术的研究进入了一个比较成熟的时期。
语音识别是一门交叉科学,它综合了声学、语言学、语音学、生理科学、数字信号处理、通信理论、电子技术、计算机科学、模式识别和人工智能等众多学科。
也是人机交互最重要的一步。
1.2语音识别的国内外研究现状
通过语音传递信息是人类最重要,最有效,和最方便的交换信息的形式,语音识别主要指让机器转达人说的话,即在各种情况下,准确的识别出语音的内容,从而根据其信息,执行人的各种意图。
广义的语音识别包括说话人的识别和内容的识别两部分。
这里所说的语音识别,是指内容识别方面。
采用计算机进行语音识别到现在已经发展了50年。
从特征参数上改进,采用各种办法进行语音增强是一个研究方向,但是到目前为止,还没有一种办法能把语音信号完美地从噪音环境提取出来。
语音识别有广泛的商业化运用前景,主要可以分为通用场合和专用场合两个方面。
1.3研究内容
本文研究的主要内容是结合模式识别的基本理论,研究BP神经网络孤立词语音识别的问题,实现1-5共5个数字的识别。
分析了语音信号的预处理,特征提取及BP神经网络算法实现。
2语音识别技术
2.1语音识别系统结构
孤立词语音识别是对特定的不连续的词语作为处理单元。
语音识别系统的基本组成一般可以分为预处理模块、特征值提取模块及模式匹配三个模块。
如图2.1所示为语音识别系统结构框图。
图2.1语音识别系统结构框图
从图2.1的系统整体架构可以看到,建立基于BP神经网络的语音识别系统可分为两个阶段,即训练阶段和识别阶段。
首先由用户通过麦克风输入语音形成原始语音,然后系统对其进行预处理。
预处理包括预加重,加窗分帧和端点检测三个过程。
系统的前端采用了端点检测,目的是在一段语音信号中确定起点和终点。
在特征提取部分,本系统采用了MFCC作为特征参数,用于有效地区分数字1-5.
在训练阶段,通过说话人多次重复语音,本系统从原始语音样本中去除冗余信息,提取说话人的特征参数并存储为BP神经网络的输入样本,在此基础上建立输入与输出的BP神经网络模型。
在识别阶段,待测语音经过预处理,使用已经训练好的BP神经网络进行识别得到结果。
2.2语音信号预处理
图2.2是语音信号的预处理的流程图。
从图2.2可以看到预处理模块包括预加重,加窗分帧和端点检测。
前级预加重、加窗分帧及端点检测是语音识别的准备工作,每一个环节对整个识别系统的性能有着重要的影响。
前级预处理主要是对信号进行一定的滤波和分帧;加窗分帧就是将语音信号进行分段处理,使语音信号连续并保持一定的重叠率:
端点检测是确定语音有用信号的起始点与终止点,并通过一定的手段处理,将没有意义的语音信号去除,从而减少语音匹配识别模块的运算量,同时也可以提高系统的识别率。
预处理不合理或语音起止点及终止点判别不够准确都会使后续的特征矢量提取及模式匹配过程等工作受到很大的影响,甚至达不到语音识别的效果,因此预处理工作作为语音识别的第一步工作,必须达到所需的要求,为下一步的特征参数提取做好铺垫。
图2.2语音信号预处理流程图
2.2.1语音信号的采样
Matlab环境中语音信号的采集可使用wavrecord(n,fs,ch,dtype)函数录制,也可使用Windows的“录音机”程序录制成.wav文件然后使用wavread(file)函数读入。
在本实验中,使用matlab的语音工具包录取1-5共5段语音,。
如图2.3所示为数字0的训练语音00.wav的信号波形图,第(I)幅图为完整的语音波形,第(II)、(III)幅图分别为语音的起始部分和结束部分的放大波形图。
2.2.2语音信号的分帧
语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数R(xl,x2)都随时间而发生较大的变化。
但研究发现,语音信号在短时间内频谱特性保持平稳,即具有短时平稳特性。
因此,在实际处理时可以将语音信号分成很小的时间段(约10~30ms),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号分成若干帧的过程称为分帧。
分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。
一般取帧长20ms,帧移为帧长的1/3~1/2。
2.2.3语音信号的预加重
预加重是指在A/D转换后加一个6dB/倍频程的高频提升滤波器,语音信号的平均功率谱由于受声门激励和口鼻辐射的影响,高频端大约在800Hz以上按6dB/Oct(倍频程)跌落。
所以求语音信号频谱时,频率越高相应的成份越小,高频部分的频率比低频部分的难求。
因此,预加重的目的是加强语音中的高频共振峰,使语音信号的短时频谱变得更为平坦,还可以起到消除直流漂移、抑制随机噪声和提高清音部分能量的效果,便于进行频谱分析和声道参数分析。
此外,通常的方法是使用一阶零点数字滤波器实现预加重,其形式为:
(2-1)
频域相对应的形式为:
(2-2)
其中,a为预加重系数。
2.2.4基于短时能量和过零率的端点检测
在语音信号的预处理中,端点检测是关键的一步,语音信号的模型参数和噪声模型参数以及自适应滤波器中的适应参数都得依赖对应的信号段(语音段或噪声段)来计算确定。
因此,只有准确地判定语音信号的端点,才能正确地进行语音处理。
端点检测的目的是从包含语音的一般信号中确定出语音的起点以及终点,一般采用平均能量或平均幅度值与过零率相乘的方法来判断。
这种利用短时能量和短时平均过零率两种特征共同参与检测,也被称为双门限法。
(1)短时能量
设S(n)为加窗语音信号,第t帧语音的短时平均能量为:
(2-5)
(2-6)
其中N为分析窗宽度,St(n)为第t帧语音信号中的第n个点的信号取样值。
上面两式原理是相同的,但后式有利于区别小取样值和大取样值,不会因为取平方而造成很大的差异。
短时平均能量是时域特征参数,把它用于模型参数时,应进行归一化处理,本文将取其对数值后使用,使计算和识别结果均取得了较好的效率和结果。
(2)短时过零率
短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。
过零率就是样本改变符号次数,定义语音信号寿(m)的短时过零率Zn为:
(2-7)
(2-8)
(3)双门限检测的方法
在开始进行端点检测之前,首先为短时能量和过零率分别确定两个门限。
一个是比较低的门限,其数值比较小,对信号的变化比较敏感,很容易就会被超过。
另一个是比较高的门限,数值比较大,信号必须达到一定的强度,该门限才可能被超过。
低门限被超过未必就是语音的开始,有可能是时间很短的噪声引起的。
高门限被超过则可以基本确信是由于语音信号引起的。
整个语音信号的端点检测可以分成四段:
静音、过渡段、语音段、结束。
在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。
在过波段中,由于参数的数值比较小,不能确信是否处于真伪的语音段,因此只要两个参数的数值回落到低l、J限以下,就将当前状态恢复到静音状态。
而如果在过渡段中两个参数中的任一个超过了高门限,就可以确信进入语音段了。
当前状态处于语音段时,如果两个参数的数值降低到低门限以下,而且总的计时长度小于最短时间门限,则认为这是段噪音,继续扫描以后的语音数据。
否则就标记好结束端点,并返回。
从而达到抗干扰的目的、提高识别率。
如图2.4所示。
图2.3语音信号的端点检测图
2.3特征参数提取
特征值的提取是对原始的语音信号运用一定的数字信号处理技术进行适当的处理,从而得到一个矢量序列,这个矢量序列可以代表原始的语音信号所携带的信息,初步实现数据压缩。
特征参数主要有:
能量、幅度、过零率、频谱、倒谱和功率谱等,另外考虑到其他因素的影响,还有许多基于基本参数的参数,本文选用了MEL频率倒谱系数(MFCC)进行提取特征参数。
MFCC系数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是:
(2-9)
MFCC系数也是按帧计算的,首先要通过FFT得到该帧信号的功率谱S(n),转换为Mel频率下的功率谱。
这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:
NHm(n)m=0,1,…,M-1;n=0,1,…,N/2-1(2-10)
M为滤波器的个数,通常取24,与临界带的个数一样;N为一帧语音信号的点数,为了计算FFT的方便,通常取256。
滤波器在频域上为简单的三角形,其中心频率fm在Mel频率轴上是均匀分布的。
从图2.5就可以看到MFCC系数的计算过程如下:
(1)预处理:
确定每一帧语音采样序列的长度(如N=256),并对每帧序列s(n)进行预加重、分帧和加窗处理;
(2)计算离散功率谱:
对预处理的每帧进行离散FFT变换得到其频谱,再取模的平方作为离散功率谱S(n);
(3)将功率谱通过滤波器组:
计算S(n)通过M个Hm(n)后所得的功率值,即计算S(n)和Hm(n)在各离散频率点上的乘积之和,得到M个参数Pm,m=0,1,……M-1;
(4)取对数:
计算Pm的自然对数,得到Lm,m=0,1,……M-1;
(5)离散余弦变换:
对Lm计算其离散余弦变换,得到Dm,m=0,1,……M-1,舍去代表直流成份的D0,取D1,D2,……,Dk作为MFCC参数。
图2.4语音信号MFCC系数的算法流程图
3基于BP神经网络语音识别算法实现
3.1BP神经网络原理
BP神经网络又称误差反向传递神经网络。
它是一种依靠反馈值来不断调整节点之间的连接权值而构建的一种网络模型。
它的整个体系结构如图1所示,分为输入层、隐藏层和输出层,其中隐藏层根据具体情况的需要,可以是一层结构也可为多层结构。
BP算法的基本思想是:
学习过程由信号的正向传播与误差的反向传播两个过程组成。
正向传播时,输入样本从输人层传人,经各隐藏层逐层处理后,传向输出层。
若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
误差反传是将输出误差以某种形式通过隐藏层向输入层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始的进行的。
权值不断调整的过程,也就是网络的学习训练过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。
图3.1BP神经网络体系结构
3.2输入层神经元个数的确定
将数字图像的特征向量作为神经网络的输入,所以神经网络的输入层神经元个数等于特征向量的维数,数字语音识别提取的MFCC特征是一个行数row不确定,列数为24的二位向量,用此row×20=all个元素组成一个数字字符的列矩阵,即数字字符的特征向量,由于row都不一样,所以根据经验使all=600,不够600的直接用零补充。
即600个输入神经元。
输出层神经元个数的确定因为要识别5个数字,因此输出选择为5×1的矩阵,即输出节点数为5。
当数字图像1—5输入神经网络后在输出神经元对应的位置上为1,其他的位置为0。
输人数字0,第1个输出神经元为1,其他为0;输入数字1,第2个输出神经元为1,其他为0;以此类推。
3.3网络隐含层数的确定
隐含层数越多,神经网络学习速度就越慢,根据Kosmogorov定理,在合理的结构和恰当的权值条件下,3层BP网络可以逼近任意的连续函数,因此,我们选取结构相对简单的3层BP网络。
3.4隐含层神经元个数的确定
一般情况下,隐含层神经元个数是根据网络收敛性能的好坏来确定的,在总结大量网络结构的基础上,得出经验公式:
s=sqr(0.43nm+0.12m+2.54n+0.77m+0.35+0.51)其中n为输人层神经元个数,m为输出层神经元个数,根据以上公式,可以得出隐含层神经元个数为53。
3.5BP神经网络构造
建立一个前向BP神经网络函数newff:
net=newff(minmax(P),[600,53,5],{‘logsig’,‘logsig’,‘logsig’},‘traincgb’);其中minmax(P)为神经网络的对它的600个输入元素的最大值和最小值的限制。
P为训练样本集合。
[600,53,5]为该神经网络的层结构。
{‘logsig’,‘logsig’,‘logsig’}为神经网络的各层的转移函数,均设置为对数S型激活函数。
训练函数采用traincgb,即采用Powel1-Beale共轭梯度法训练。
3.6BP神经网络的训练
3.6.1训练样本集合和目标值集合
数字语音识别提取的MFCC特征,由1~5这10个数字的特征列向量组成一个600×5的输入矢量,记为:
sample_group=[1,2,⋯,5];式中的1,2,⋯,5代表数字的特征列向量。
与输入矢量对应的目标矢量是希望每一个数字输入神经网络后在输出神经元对应的位置上为1,其他的位置为0。
为此取目标矢量为对角线上为1的5×5的单位阵,用matlab命令实现为:
targets=eye(5);
本文中1—5共5类数据,每类取4个做训练样本,即4组输入矢量构成训练样本集合训练神经网络,训练样本集合如下:
P=[samples_groupl,samples_group2,⋯,samples_group5];P=double(P);与训练样本集合相对应的目标值集合由20组目标矢量构成,目标值集合如下:
T=[targets,targets,⋯,targets,targets]
3.6.2网络训练
本文神经网络训练误差性能目标值设置为0.0001,当神经网络训练次数达到最大值1000或者神经网络的误差平方降到0.0001以下,终止训练。
程序代码如下:
net.trainParam.epochs=1000;%最大训练次数
net.trainParam.show=20;%显示的间隔次数
net.trainParam.min_grad=le-10;%最小执行梯度
net.trainParam.goal=0.0001;%性能目标值
net.1ayers{1}.initFcn=‘initwb’;%网络层的初始化函数选为‘initwb’,使下面的输入层初始化语句randnr’有效
net.inputWeights{1,1}.initFcn=‘randnr’;%输入层权值向量初始化
net.1ayerWeights{2,1}.initFcn=‘randnr’;%第1网络层到第2网络层的权值向量初始化
net=init(net);%初始化网络
[net,tr]=train(net,P,T);%网络训练
其中[net,tr]中的net为更新了权值的神经网络,tr为训练记录(次数和每次训练的误差)。
从相关的神经网络训练中可以看出,当神经网络的误差平方0.0000718时,小于性能目标值0.0001,神经网络训练结束,开始进行系统的性能测试。
图3为学习误差曲线图。
图3.2神经网络学习误差曲线
3.7网络训练
测试函数为神经网络仿真函数,testout=sim(net,test_sample)其中net为训练完成了的网络,test_sample为测试样本的特征向量,testout为神经网络的输出。
部分程序代码如下:
testout=sim(net,test_sample);%神经网络的仿真
max_value=max(testout);%输出神经元最大值
if(max_value>0.7)%输出神经元的最大值大于0.7才进行数字识别,小于0.7时拒绝识别
testout=compet(testout);
number=find(testout==1);%数字识别结果
end
3.8语音的识别结果
本系统测试时,通过话筒直接输入测试语音1,2,3,4,5,系统会先提取的语音特征,然后根据事前存好的输入样本自动训练网络,最后测试样本,得到输出结果。
表3.1BP神经网络算法识别率
语音内容
识别次数(个)
正确次数(个)
错误次数(个)
拒绝识别
(个)
识别率
1
5
5
0
0
100%
2
5
4
0
1
80%
3
5
5
0
0
100%
4
5
4
0
1
80%
5
5
5
0
0
100%
1-5
25
23
0
2
92%
其中可以看出1,3,5这三个语音的识别率都是为100%。
完全识别正确。
2,4这两个语音段的识别率都为80%,识别正确了4次,错误了1次。
造成这种情况的原因可能是:
(1)外界环境的干扰,噪声的干扰。
(2)每次说话的语调,语音的不同。
4总结与展望
4.1总结
通过对孤立词语音识别系统中各个模块的MATLAB仿真,可知每个模块都能满足系统的识别要求;从语音信号的端点检测看出,对不同人和不同的孤立词,该方法能准确的检测出起始点和终止点,为信号的特征参数提取做准备工作;而特征参数的提取通过MFCC算法也能很好的提取对信号识别的参数值;
应用BP神经网络算法对语音进行模式匹配,从仿真的结果和数据分析,可以清楚的看到各个语音的识别率。
最后通过对一些孤立词语音进行识别的验证,得出整个系统在实际应用当中的可行性。
参考文献
[1]赵力.语音信号处理[M].北京:
机械工业出版社,2003
[2]蔡莲红,黄德智,蔡锐.现代语音技术基础与应用[M].北京:
清华
[3]张雄伟,陈亮,杨吉斌.现代语音处理技术及应用[M].北京:
机械工业出版社,2003.
[4]朱淑琴,裘雪红.一种精确检测语音端点的方法.计算机仿真,2004,22(3):
214-216
[5]刘长明,任一峰.语音识别中DTW特征匹配的改进算法研究.中北大学学报(自然科学舨),2006,27
(1):
37-40
[6]王让定,柴佩琪.语音倒谱特征的研究[J].计算机工程,2003,29(13):
31-33.
[7]徐望,丁琦,王炳锡.一种基于特征空间能量熵的语音信号端点检测算法.通信学报,2003,24(11):
125-129
[8]谭保华,熊健民,刘幺和.语音识别技术概述[J].郧阳师范高等专科学校学报,2004.
[9]朱淑琴.语音识别系统关键技术研究[硕士学位论文][D].西安电子科技大学,2004
[10]万春.基于DTW的孤立词语音识别研究和算法改进.集美人学学报(自然科学版),2002(6):
104—108.
[11]WeiHan,Cheong-FatChan,Chiu-SingChoy,eta.lAnefficientMFCCextractionmethodinspeechrecognition[C].IEEEInternationalSymposiumonCircuitsandSystems,2006:
145.
[12]YuHongzhiAresearchonrecognitionofTibetanspeakersbasedonMFCCandDeltafeatures.InternationalForumonComputerScience-TechnologyandApplications,2009:
234.
[13]HHermansky,HMorgan.RASTAprocessingofspeech[J].IEEETransonSpeechandAudioProcessing,1994,2(4):
578-589.
[14]HUANGXuedong,AAcero,HWHon.Spoken-Language-Processing[M].PrenticeHall,2001.
[15]马莉,党幼云.特定人孤立词语音识别系统的仿真与分析.西安工程科技学院学报.2007,21(03):
10-12.