ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:97.98KB ,
资源ID:16748956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16748956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(语音识别论文Word文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

语音识别论文Word文档格式.docx

1、如果希望频率分辨率高,则窗长应尽量取长一些;如果希望时间分辨率高,则窗长尽量取短一些。由此可见,傅立叶分析的时间分辨率和频率分辨率是相互矛盾的,这是短时傅立叶本身所固有的弱点。短时傅立叶分析一般采用汉明窗作为分析窗6。通过基于MATLAB和短时频域分析,能够得出7:第一,长窗具有较高的频率分辨率,但具有较低的时间分辨率。从一个周期到另一个周期,共振峰是要发生变化的,这一点即使从语音波形上也能够看出来。然而,如果采用较长的窗,这种变化就模糊了,因为长窗起到了时间上的平均作用。第二,短窗的频率分辨率低,但具有较高的时间分辨率。采用短窗时,能够从短时频谱中提取出共振峰从一个周期到另一个周期所发生的变

2、化。当然,激励源的谐波结构也从短时频谱上消失了。第三,在对语音信号进行短时傅里叶分析时,窗长需要折衷考虑。一方面,短窗具有较好的时间分辨率因而能够提取出语音信号中的短时变化;但另一方面,损失了频率分辨率。第四,汉明窗都具有低通的性质,且在截止频率处比较尖锐,当其通带较窄时(窗越宽,通带越窄),加窗后的频谱更能够较好反映短时语音信号的频谱,窗越宽这种逼近越好。二、语音信号的处理1特定人孤立词语音识别系统分析一个完整特定人孤立词语音识别系统通常包括语音的输入,语音信号的预处理,特征提取,训练与识别等几个环节,基本构成如图1所示:图1孤立词语音识别系统框图语音识别的过程可以被看作模式匹配的过程,模式

3、匹配是指根据一定的准则,使未知模式与模型库中的某一个模型获得最佳匹配的过程。模式匹配中需要用到的参考模板通过模板训练获得。在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库。在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。同时,还可以在一些先验知识的帮助下,提高识别的准确率。2语音识别算法高效的DTW算法动态时间规整(Dynamic Time Warping,DTW)是把时间规整和距离测度计算结合起来的一种非线性规整技术,解决了测试模板与参考模板语音时间长度不等的问题。图2匹配路径约束示意图通

4、常,规整函数被限制在一个平行四边形的网格内,如图2所示。它的一条边斜率为2,另一条边斜率为1/2。规整函数的起点是(1, 1),终点为(N,M)。DTW算法的目的是在此平行四边形内由起点到终点寻找一个规整函数,使其具有最小的代价函数,保证了测试模板与参考模板之间具有最大的声学相似特性8。由于在模板匹配过程中限定了弯折的斜率,因此平行四边形之外的格点对应的帧匹配距离是不需要计算的。另外,因为每一列各格点上的匹配计算只用到了前一列的3个网格,所以没有必要保存所有的帧匹配距离矩阵和累积距离矩阵。充分利用这两个特点可以减少计算量和存储空间的需求,形成一种高效的DTW算法,如图2所示。图2中,把实际的动

5、态弯折分为三段,(1,xa),(xa+1,xb),(xb+1,N),其中:xa= (2M-N)/3,xb=2(2N-M)/3xa和xb都取最相近的整数,由此可得出对M和N长度的限制条件:2M-N3,2N-M2当不满足以上条件时,认为两者差别太大,则无法进行动态弯折匹配。在x轴上的每一帧不再需要与y轴上的每一帧进行比较,而只是与y轴上ymin,ymax间的帧进行比较,ymin和ymax的计算公式为:ymin=x/2,0xxb,2x+(M-2N),xb xNymax=2x,0xxa,x/2+(M-N/2),xa xb的情况,则弯折匹配的三段为(1,xb),(xb+1,xa),(xa+1,N)。对于

6、x轴上每前进一帧,虽然所要比较的y轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:D(x,y) = d(x,y)+minD(x-1,y),D(x-1,y-1),D(x-1,y-2)3.MATLAB仿真验证3.1语音信号预处理语音信号的预处理包括预滤波、采样和量化、加窗、预加重、端点检测等过程9。所选用的实验语音数据,是在实验室条件下利用PC机录制。采用8 000kHz采样频率、16bit量化、单声道的PCM录音格式。由于语音信号在帧长为10ms30ms之内是相对平稳的,同时为了便于计算FFT,本系统选取帧长N为256个语音点,帧移M为128点。汉明窗与矩形窗和汉宁窗相比具有

7、最低旁瓣,可以有效地克服泄漏现象,具有更平滑的低通特性,故本文采用汉名窗对语音信号进行分帧处理,如下式:(n) =0.54-0.46cos(2n/(N-1),0nN-1预加重用具有6dB/倍频程的提升高频特性的一阶数字滤波器实现:H(z) =1-0.937 5/z端点检测采用基于短时能量和短时平均过零率法10,利用已知为“静态”的最初十帧信号为短时能量设置2个门限ampl和amph,以及过零率阀值zcr。语音起始点从第11帧开始检测,其流程图如图3。语音结束点的检测方法与检测起点相似,但此时从后向前搜索。图3 语音起点检测流程图3.2特征参数提取及语音识别研究表明,倒谱特征参数所含的信息量比其

8、他参数多,能较好地表现语音信号。本文选取能够反映人对语音的感知特性的Mel频率倒谱系数(MFCC)作为特征参数,阶数为12。经过MFCC特征参数提取后,各帧语音信号就形成了一个个特征矢量。识别时,将待测语音与模板库中的每一个模板进行模式匹配,找到距离最小的模板作为输出结果。 经测试,程序等到了较好的语音识别效果。三、总结 上述语音识别系统详细地分析了语音信号的时域、频域等特性,并实现了对孤立数字0到9的准确识别,通过本次详细系统的语音识别系统的设计,我对数字信号处理的流程有了深刻的认识,对Matlab软件编程也有了一定的理解,为将来从事这方面的课题打下了坚实的基础。参考文献:1王炳锡.语音编码

9、M.西安:西安电子科技大学出版社,2002.2何强,何英.MATLAB扩展编程M.北京:清华大学出版社,2002.3王炳锡,屈丹,彭煊.实用语音识别基础M.北京:国防工业出版社,2005.4易克初,等.语音信号处理M.北京:国防工业出版社,2006,6.5胡航.语音信号处理M.哈尔滨:哈尔滨工业大学出版社,2000,5.6胡广书.数字信号处理理论、算法与实现M.北京:清华大学出版社,1997.7王炳锡,等.实用语音识别基础M.北京:国防工业出版社,2005.8林波,吕明.基于DTW改进算法的弧立词识别系统的仿真与分析J.信息技术,2006,30(4):56-59.9韩纪庆,张磊,郑铁然.语音信

10、号处理M.北京:清华大学出版社,200410李晋.语音信号端点检测算法研究D.长沙:湖南师范大学,2006.程序:主程序:yuyinshibie.mdisp(正在计算参考模板的参数.)for i=1:10fname=sprintf(%da.wav,i-1);x=wavread(fname); x1 x2=vad(x); m=mfcc(x); m=m(x1-2:x2-4,:); ref(i).mfcc=m;end正在分析语音信号.x,fs,bit=wavread(fname,2000,2512); %采样%sound(x,fs); %播放语音信号figure(i);subplot(3,3,1);

11、plot(x(1:256); %原始语音信号的时域图形%title(原始信号subplot(3,3,2)h,w=freqz(x) %原始语音信号的频率响应图hr=abs(h);plot(w,hr);频率响应图xlabel(Frequency in rad/sampleylabel(Magnitude in dBsubplot(3,3,3)hphase=angle(h);hphase=unwrap(hphase); %求系统相频响应plot(w,hphase);Phase in degreesy=fft(x,512); %傅立叶变换%mag=abs(y);mag1=10*log10(mag);f

12、=fs*(0:255)/512;subplot(3,3,4)plot(f,mag(1: %FFT频谱图 %fft变换后信号iff=ifft(y,512); %反傅立叶变换%ifm=abs(iff);subplot(3,3,5)plot(f,ifm(1:256)ifft后信号% 短时傅里叶变换Ts=1/fs;%N=T/Ts;N=512;Nw=20; %窗函数长L=Nw/2; %窗函数每次移动的样点数 Tn=(N-Nw)/L+1; %计算把数据x共分成多少段nfft=32; %FFT的长度TF=zeros(Tn,nfft); %将存放三维谱图,先清零Tn xw=x(i-1)*10+1:i*10+1

13、0); %取一段数据 temp=fft(xw,nfft); %FFT变换 temp=fftshift(temp); %频谱以0频为中心 for j=1:nfft; TF(i,j)=temp(j); %把谱图存放在TF中 endsubplot(3,3,6)fnew=(1:nfft)-nfft/2)*fs/nfft;tnew=(1:Tn)*L*Ts;F,T=meshgrid(fnew,tnew);mesh(F,T,abs(TF)短时傅立叶变换时频图subplot(3,3,7)contour(F,T,abs(TF)等高线表示正在计算测试模板的参数.%db.wav test(i).mfcc=m;正在进

14、行模板匹配.dist=zeros(10,10);for j=1: dist(i,j)=dtw(test(i).mfcc,ref(j).mfcc);正在计算匹配结果. d,j=min(dist(i,:); fprintf(测试模板%d的识别结果为:%dn,i-1,j-1);各子程序模块:dtw.mfunction dist=dtw(t,r)n=size(t,1);m=size(r,1);%帧匹配距离矩阵d=zeros(n,m);nm d(i,j)=sum(t(i,:)-r(j,:).2);%累积距离矩阵D=ones(n,m)*realmax;D(1,1)=d(1,1);%动态规划for i=2:

15、 D1=D(i-1,j); if j1 D2=D(i-1,j-1); else D2=realmax;2 D3=D(i-1,j-2); D3=realmax; D(i,j)=d(i,j)+min(D1,D2,D3);dist=D(n,m);enframe.mfunction f=enframe(x,win,inc)nx=length(x(:nwin=length(win);if (nwin = 1) len = win;else len = nwin;if (nargin 1) w = win(:) f = f .* w(ones(nf,1),:melbankm.mfunction x,mn,

16、mx=melbankm(p,n,fs,fl,fh,w)if nargin 6 w=tz if nargin 1 x=sparse(r,c,v); x=sparse(r,c+mn-1,v,p,1+fn2);mfcc.mfunction ccc=mfcc(x)%归一化mel滤波器组系数bank=melbankm(24,256,8000,0,0.5,bank=full(bank);bank=bank/max(bank(:%DTC系数,12*24for k=1:12 n=0:23; dctcoef(k,:)=cos(2*n+1)*k*pi/(2*24);%归一化倒谱提升窗口w=1+6*sin(pi*1

17、:12./12);w=w/max(w);%预加重滤波器xx=double(x);xx=filter(1 -0.9375,1,xx);%语音信号分帧xx=enframe(xx,256,80);%计算每帧的MFCC参数size(xx,1) y=xx(i,: s=y.*hamming(256); t=abs(fft(s); t=t.2; c1=dctcoef*log(bank*t(1:129); c2=c1.*w m(i,:)=c2%差分参数dtm=zeros(size(m);for i=3:size(m,1)-2 dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m

18、(i+2,:dtm=dtm/3;%合并mfcc参数和一阶差分mfcc参数ccc=m dtm;%去除首尾两帧,因为这两帧的一阶差分参数为0ccc=ccc(3:size(m,1)-2,:vad.mfunction x1,x2=vad(x)%幅度归一化到-1,1x=double(x);x=x/max(abs(x);%常数设置FrameLen=240;FrameInc=80;amp1=10;amp2=2;zcr1=10;zcr2=5;maxsilence=3; %3*10ms=30msminlen=15; %15*10ms=150msstatus=0;count=0;silence=0;%计算过零率t

19、mp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);tmp2=enframe(x(2:length(x),FrameLen,FrameInc);signs=(tmp1.*tmp2)0.02;zcr=sum(signs.*diffs,2);%计算短时能量amp=sum(abs(enframe(filter(1 -0.9375,1,x),FrameLen,FrameInc),2);%调整能量门限amp1=min(amp1,max(amp)/4);amp2=min(amp2,max(amp)/8);%开始端点检测x1=0;x2=0;for n=1:leng

20、th(zcr) goto=0; switch status case0,1 %0=静音,1=可能开始 if amp(n)amp1 %确信进入语音段 x1=max(n-count-1,1); status=2; silence=0; count=count+1; elseif amp(n)amp2 zcr(n)zcr(2) %可能处于语音段 status=1; else %静音状态 status=0; count=0; case 2, %2=语音段amp(2) zcr(n)zcr(2) %保持在语音段 else %语音将结束 silence=silence+1; if silencemaxsilence %静音还不够长,尚未结束 elseif countminlen %语音长度太短,认为是噪声 else %语音结束 status=3; case 3, break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1