语音信号处理实验2015年10月28日语音信号处理实验实验学时数:8实验学分:0.5实验项目数:41、目的与基本要求实验为研究型(设计型)实验,共安排4个,为了真正达到研究设计型实验的目的,采用开放实验的办法,将自主学习和研究设计型实验结合起来,统一安排。自主学习内容由学生自主学习参考教材的内容,并采用多种渠道,如查阅最新语音信号处理方面的科技文献、资料,作出学习报告。目的是培养学生的自学能力和科技文献的检索和查阅能力,同时可以有助于学生了解和掌握语音信号处理领域的最新技术进展和应用情况,将理论知识和实际应用结合起来,促进学生学习的积极性和主动性。通过开放实验,目的使学生进一步理解数字语音信息处理的基本方法,提高学生自主分析、发现及解决问题的能力,锻炼学生论文写作能力,为实际的应用打下扎实的基础。2、研究设计型实验的内容1)研究设计型实验1:基于MATLAB的语音信号时域特征分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时过零率、短时能量、短时自相关特征的分析结果,并借助时域分析方法检测所分析语音信号的基音周期。2)研究设计型实验2:基于MATLAB分析语音信号频域特征要求:按所学相关语音处理的得知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时谱、倒谱、语谱图的分析结果,并借助频域分析方法检测所分析语音信号的基音周期或共振峰。3)研究设计型实验3:基于MATLAB进行语音信号的LPC分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的LPC分析结果,包括LPC谱、LPCC谱的分析结果,并借助LPC分析方法检测所分析语音信号的基音周期和共振峰。4)研究设计型实验4:基于VQ的特定人孤立词语音识别研究要求:按所学相关语音处理的知识,通过网上学习、资料查阅,借助MATLAB工具,自己设计基于VQ的码本训练程序和识别程序(尽量选用所学HMM或DTW方法设计识别程序),能识别特定人的语音,分析所设计系统的特性。实验一基于MATLAB的语音信号时域特征分析(2学时)一、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。二、实验原理及实验结果1)短时能量(1)加矩形窗a=wavread('C:\Users\Administrator\Desktop\shiyan.wav');subplot(6,1,1),plot(a);N=32;fori=2:6h=linspace(1,1,2.^(i-2)*N);%形成一个矩形窗,长度为2.^(i-2)*NEn=conv(h,a.*a);%求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2)legend('N=32');elseif(i==3)legend('N=64');elseif(i==4)legend('N=128');elseif(i==5)legend('N=256');elseif(i==6)legend('N=512');endEnd(2)加汉明窗a=wavread('beifeng.wav');subplot(6,1,1),plot(a);N=32;fori=2:6h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*NEn=conv(h,a.*a);%求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2)legend('N=32');elseif(i==3)legend('N=64');elseif(i==4)legend('N=128');elseif(i==5)legend('N=256');elseif(i==6)legend('N=512');endend00.511.522.533.5x104-10100.511.522.533.5x1040510N=3200.511.522.533.5x10401020N=6400.511.522.533.5x10401020N=12800.511.522.533.5x10402040N=25600.511.522.533.5x104050100N=51200.511.522.533.5x104-10100.511.522.533.5x104024N=3200.511.522.533.5x1040510N=6400.511.522.533.5x1040510N=12800.511.522.533.5x10401020N=25600.511.522.533.5x10402040N=512加汉明窗加矩形窗2)短时平均过零率a=wavread('C:\Users\Administrator\Desktop\shiyan.wav');n=length(a);N=320;subplot(3,1,1),plot(a),title('shiyan');h=linspace(1,1,N);En=conv(h,a.*a);%求卷积得其短时能量函数Ensubplot(3,1,2),plot(En),title('卷积得其短时能量函数En');fori=1:n-1ifa(i)=0b(i)=1;elseb(i)=-1;endifa(i+1)=0b(i+1)=1;elseb(i+1)=-1;endw(i)=abs(b(i+1)-b(i));%求出每相邻两点符号的差值的绝对值endk=1;j=0;while(k+N-1)nZm(k)=0;fori=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+N/2;%每次移动半个窗endforw=1:jQ(w)=Zm(160*(w-1)+1)/(2*N);%短时平均过零率endsubplot(3,1,3),plot(Q),title('短时平均过零率');00.511.522.533.5x104-101shiyan00.511.522.533.5x104050卷积得其短时能量函数En05010015020025000.20.4短时平均过零率3)自相关函数N=240Y=wavread('C:\Users\Administrator\Desktop\shiyan.wav');x=x.*rectwin(240);R=zeros(1,240);fork=1:240forn=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240;plot(j,R);grid;050100150200250-3-2-10123实验二基于MATLAB分析语音信号频域特征一、实验目的信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。输出频谱是声道系统频率响应与激励源频谱的乘积。声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。二、实验原理(自己补充)1)滤波器频率响应对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器。其功能就是得到一个特定频率或消除一个特定频率,滤波器是一种对信号有处理作用的器件或电路。主要作用是:让有用信号尽可能无衰减的通过,对无用信号尽可能大的。滤波器的类型:巴特沃斯响应(最平坦响应),贝赛尔响应,切贝雪夫响应。滤波器冲激响应的傅里叶变换就是该滤波器的频率响应。2)快速卷积卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即一个域中的卷积相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。其中表示f的傅里叶变换。这一定理对拉普拉斯变换、双边拉普拉斯变换等各种傅里叶变换的变体同样成立。在调和分析中还可以推广到在局部紧致的阿贝尔群上定义的傅里叶变换。利用卷积定理可以简化卷积的运算量。对于长度为n的序列,按照卷积的定义进行计算,需要做2n-1组对位乘法,其计算复杂度为;而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度为。这一结果可以在快速乘法计算中得到应用。信号的离散傅里叶变换有限长序列的离散傅里叶变换公式为:knNjNnenxkX)/2(10)()(1_0)/2()(1)(NnknNjekXNnxMATLAB函数:fft功能是实现快速傅里叶变换,fft函数的格式为:),(xffty返回向量x的不连续fourier变换。若)6cos()(nnx是一个N=12的有限序列,利用MATLAB计算)(nx它的离散傅里叶变换)(kX并画出图形,然后再对)(kX进行离散傅里叶反变换求出)(nx并画出其波形。频率分辨率与DFT参数的选择在DFT问题中,频率分辨率是指在频率轴上所得到的最小频率间隔Nffs,即最小频率间隔反比于数据的长度N。若在)(nx中有两个频率分别为1f和2f的信号,对)(nx用矩形窗截断时,要分辨出这两个频率,N必须满足||212ffNfs通过下面实验,验证上面的结论:设一序列中含有两种频率成分,HzfHzf05.2,221,采样频率取为Hzfs6,表示为)/2sin()/2sin()(21ssfnffnfnx根据上面的结论,要区分这两种频率成分,必须满足400N。取)1280)((nnx时,计算)(nx的DFT)(kX;取)5120)((nnx时,计算)(nx的DFT)(kX参考程序1)短时谱cleara=wavread('shiyan.wav');subplot(2,1,1),plot(a);title('originalsignal');gridN=256;h=hamming(N);form=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱');grid00.511.522.533.5x104-1-0.500.51originalsignal00.511.522.533.5x104-1000100200短时谱2)语谱图[x,fs,nbits]=wavread('shiyan..wav')specgram(x,512,fs,100);xlabel('时间(s)');ylabel('频率(Hz)');title('语谱图');时间(s)频率(Hz)语谱图0.20.40.60.811.21.402000400060008000100003)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('shiayn.wav',[4000,4350]);N=300;h=linspace(1,1,N);form=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift