资源描述:
《实验三语音信号的特征提取最终实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.专业整理.实验三语音信号的特征提取一、实验目的1、熟练运用MATLAB软件进行语音信号实验。2、熟悉短时分析原理、MFCC、LPC的原理。3、学习运用MATLAB编程进行MFCC、LPC的提取。4、学会利用短时分析原理提取MFCC、LPC特征序列。 二、实验仪器设备及软件HPD538、MATLAB三、实验原理1、MFCC语音识别和说话人识别中,常用的语音特征是基于Mel频率的倒谱系数(即MFCC)。MFCC参数是将人耳的听觉感知特性和语音的产生机制相结合。Mel频率可以用如下公式表示:在实际应用中,MFCC倒谱系数计
2、算过程如下;①将信号进行分帧,预加重和加汉明窗处理,然后进行短时傅里叶变换并得到其频谱。②求出频谱平方,即能量谱,并用M个Mel带通滤波器进行滤波;由于每一个频带中分量的作用在人耳中是叠加的。因此将每个滤波器频带内的能量进行叠加,这时第k个滤波器输出功率谱。③将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进行反离散余弦变换,得到L个MFCC系数,一般L取12~16个左右。MFCC系数为,n=1,2,...,L④将这种直接得到的MFCC特征作为静态特征,再将这种静态特征做一阶和二阶差分,得到相应的动态特征。2、L
3、PC由于频率响应反映声道的频率响应和被分析信号的谱包络,因此用.学习帮手..专业整理.做反傅里叶变换求出的LPC倒谱系数。通过线性预测分析得到的合成滤波器的系统函数为,其冲激响应为h(n)。h(n)的倒谱为,就是说的逆变换是存在的。设,将式两边同时对求导,得得到,于是有令其左右两边z的各次幂前系数分别相等,得到和间的递推关系,按其可直接从预测系数{}求得倒谱。这个倒谱是根据线性预测模型得到的,又称为LPC倒谱。LPC倒谱由于利用线性预测中声道系统函数H(z)的最小相位特性,因此避免了一般同态处理中求复对数的麻烦。一、实
4、验步骤及程序1、MFCC(1)、实验步骤①输入样本音频②给样本音频预加重、分帧、加窗③将处理好的样本音频做傅里叶变换④进行Mel频率滤波⑤进行Log对数能量.学习帮手..专业整理.⑥对样本求倒谱⑦输出MFCC图像(2)、MFCC提取程序流程图s(n)Mel频率滤波组DFT/FFT预加重、分帧、加窗s(n)X(k)X(k)DCT求倒谱Log对数能量图3.1MFCC特征提取(3)、MFCC特征提取实验源程序closeallclearclc[x]=wavread('1.wav');bank=melbankm(24,256,8
5、000,0,0.5,'m');bank=full(bank);bank=bank/max(bank(:));fork=1:12n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw=1+6*sin(pi*[1:12]./12);w=w/max(w);%预加重滤波器xx=double(x);xx=filter([1-0.9375],1,xx);%语音信号分帧xx=enframe(xx,256,80);%计算每帧的MFCC参数fori=1:size(xx,1)y=xx(i,:);
6、s=y'.*hamming(256);t=abs(fft(s));t=t.^2;.学习帮手..专业整理.c1=dctcoef*log(bank*t(1:129));c2=c1.*w';m(i,:)=c2';endfigureplot(m);xlabel('帧数');ylabel('幅度');title('MFCC');2、LPC(1)、实验步骤1、输入原始语音2、对样本语音进行加窗处理3、计算LPC系数4、建立语音正则方程5、输出原始样本语音、预测语音波形和预测误差6、输出LPC谱7、求出预测误差的倒谱8、输出原始语音
7、和预测语音的语谱图(2)实验流程输出图像建立语音正则方程计算LPC系数加窗处理输入原始语音图3.2LPC系数实验流程图(3)、LPC系数实验源代码I=wavread('1.wav');%读入原始语音%subplot(3,1,1),plot(I);title('原始语音波形')%对指定帧位置进行加窗处理Q=I';N=256;%窗长Hamm=hamming(N);%加窗frame=60;%需要处理的帧位置M=Q(((frame-1)*(N/2)+1):((frame-1)*(N/2)+N));Frame=M.*Hamm';
8、%加窗后的语音帧[B,F,T]=specgram(I,N,N/2,N);[m,n]=size(B);.学习帮手..专业整理.fori=1:mFTframe1(i)=B(i,frame);endP=input('请输入预测器阶数=');ai=lpc(Frame,P);%计算lpc系数LP=filter([0-ai(2:end)],1