语音信号的数字滤波处理(九)第1页共39页1绪论1.1课题背景数字滤波是数字信号处理的重要内容,数字滤波器可分为IIR和FIR两大类。对于IIR数字滤波器的设计,需要借助模拟原型滤波器,再将模拟滤波器转化为数字滤波器,文中采用的设计方法是脉冲响应不变法、双向性变换法和完全函数设计法;对于FIR数字滤波器的设计,可以根据所给定的频率特性直接设计,文中采用的设计方法是窗函数法。根据IIR滤波器和FIR滤波器的特点,在MATLAB坏境下分别用双线性变换法设计IIR和用窗函数设计FIR数字滤波器,并对采集的语音信号进行分析,最后给出了IIR和FIR对语音滤波的效果。1.2课题要求1.掌握数字信号处理的基本概念,基本理论和基本方法。2.熟悉离散信号和系统的时域特性。3.掌握序列快速傅里叶变换方法。4.学会MATLAB的使用,掌握MATLAB的程序设计方法。5.掌握利用MATLAB对语音信号进行频谱分析。6.掌握滤波器的网络结构。语音信号的数字滤波处理(九)第1页共39页2课程设计预习与原理2.1卷积运算的演示2.1.1线性卷积序列x1(n)=[201257050203],序列x2(n)=[20010110]。动态演示两个序列进行线性卷积x1(n)﹡x2(n)的翻转、移位、乘积、求和的过程。其中翻转采用fliplr,程序如下:n=-7:18;M=17;yn=zeros(1,19);figure(1)stem(yn);xlabel('n')ylabel('y(n)')xn1=[201257050203];xm1=[zeros(1,7)xn1zeros(1,7)];%为26个数字的矩阵figure(2)stem(n,xm1)xlabel('m')ylabel('x1(m)')xn2=[20010110];xm2=[fliplr(xn2)zeros(1,18)];%移位,补零为26个数字的矩阵figure(3)stem(n,xm2)xlabel('m')ylabel('x2(N-m)')title('n=0')yn(1)=sum((xm1.*xm2)');%对xm1与xm2进行对应原素乘方之后进行数组转置,求和;即为求卷积figure(4)stem(yn)xlabel('n')ylabel('y(n)')title('n=N')forN=1:17xm3=[zeros(1,N)fliplr(xn2)zeros(1,M)];figure();stem(n,xm3)语音信号的数字滤波处理(九)第1页共39页xlabel('m')ylabel('x2(N-m)')title('n=N')M=M-1;yn(N+1)=sum((xm1.*xm3)');figure()stem(yn)xlabel('n')ylabel('y(n)')title('n=N')endxm3=[zeros(1,18)fliplr(xn2)]figure()stem(xm3)xlabel('m')ylabel('x2(N-m)')title('n=N');yn(19)=sum((xm1.*xm3)');figure()stem(yn)xlabel('n')ylabel('y(n)')2.1.2循环卷积序列x1(n)=[201257050203],序列x2(n)=[20010110],N=12。动态演示两个序列进行圆周卷积x1(n)⊙x2(n)的翻转、移位、乘积、求和的过程。程序如下:n=0:11;yn=zeros(1,12);figure(1)stem(yn)xlabel('n')ylabel('y(n)')%图1,12个0xn1=[201257050203];figure(2)stem(n,xn1)xlabel('m')ylabel('x1(m)')xn2=[20010110];xm2=[xn2zeros(1,length(xn1)-length(xn2))];figure(3)stem(n,xm2)xlabel('m')语音信号的数字滤波处理(九)第1页共39页ylabel('x2(m)')title('n=0');yn(1)=sum((xn1.*xm2)');figure(4)stem(yn)xlabel('n')ylabel('y(n)')title('n=N')forN=1:11xm1=[fliplr(xn1(1:N))fliplr(xn1(N+1:12))];figure()stem(n,xm1)xlabel('m')ylabel('x1(N-m)')title('n=N')yn(N)=sum((xm1.*xm2)');figure()stem(n,yn)xlabel('n')ylabel('y(n)')title('n=N')endfigure()xm1=fliplr(xn1);stem(n,xm1)xlabel('m')ylabel('x1(N-m)')title('n=N')yn(12)=sum((xm1.*xm2)');figure()stem(n,yn)xlabel('n')ylabel('y(n)')title('n=N')2.1.3声音文件线性卷积序列x1(n)=[20010110],读取一段声音数据,当循环卷积长度大于或等于两序列长度之和时,循环卷积等于线性卷积。因为直接用FFT进行1024点卷积大于两序列长语音信号的数字滤波处理(九)第1页共39页度,所以可用线性卷积替代圆周卷积,其程序如下:n=0:686;M=2053;yn=zeros(1,687);[xn1,fs,nbits]=wavread('C:\Users\acer\Desktop\邓紫棋-你把我灌醉.wav');xn1=xn1(:);xn1=xn1';xn1=xn1(10000:12047);%xn1=xn1';xm1=[zeros(1,7)xn1zeros(1,7)];xn2=[20010110];xm2=[fliplr(xn2)zeros(1,2054)];yn(1)=sum((xm1.*xm2)');forN=1:685xm3=[zeros(1,N)fliplr(xn2)zeros(1,M)];M=M-1;yn(N+1)=sum((xm1.*xm3)')endxm3=[zeros(1,2054)fliplr(xn2)];yn(687)=sum((xm1.*xm3)');figure(1)stem(yn)xlabel('m')ylabel('y(n)')title('n=N')线性卷积结果如图所示语音信号的数字滤波处理(九)第1页共39页图1由循环卷积定理可知:对于时域序列循环卷积,可先进行FFT变换,然后频率相乘,最后对结果进行IFFT变换,即可得到时域循环卷积结果。其程序如下:[y,fs,nbits]=wavread('C:\Users\acer\Desktop\邓紫棋-你把我灌醉.wav');y=y(10000:12047);Y=fft(y,1024);xn2=[12.436.1712.9322.1732.2540.8845.8745.8740.8832.2522.1712.936.172.431];X=fft(xn2,1024);X1=rot90(X,3);Z=(X1'.*Y)';z=ifft(Z,1024)*8figure(2)stem(z)axis([0,700,-1,0.6]);结果如图所示:语音信号的数字滤波处理(九)第1页共39页图22.1.4采样定理的演示序列长度为28,先计算x(n)的512点FFT,得到其频谱函数X512(k),再对X512(k)隔点抽取,得到X32(k)和X16(k)。再分别对其进行IFFT变换。观察其时域图。其程序如下:fs=27;n=3;t=0:1/fs:1;xa=n*exp(-n*sqrt(2)*pi)*sin(sqrt(2)*n*t);subplot(3,2,1)stem(xa)title('(a)原28点时域信号xa')Xk=fft(xa,512);subplot(3,2,2)stem(Xk)title('(b)512点FFT[x(t)]')X32k=Xk(1:16:512);subplot(3,2,4)stem(X32k)title('(d)频率采样频率为32时的频谱图')x32a=ifft(X32k);subplot(3,2,3)语音信号的数字滤波处理(九)第1页共39页stem(x32a);title('(c)32点IFFT[X32(k)]得到的x32a(t)')X16k=X32k(1:2:32);subplot(3,2,6)stem(X16k)title('(f)频率采样频率为16时的频谱图')x16a=ifft(X16k);subplot(3,2,5)stem(x16a);title('(e)16点IFFT[X16(k)]得到的x16a(t)')结果如图所示:图3由图可知:当进行32点IFFT时,无时域混叠失真;当进行16点IFFT时,有时域混叠失真。语音信号的数字滤波处理(九)第1页共39页2.2课程设计原理2.2.1IIR设计原理(1)切比雪夫滤波器原理切比雪夫滤波器的幅频特性具有等波纹特性。它有两种形式:振幅特性在通带内是等波纹的,在阻带内是单调下降的切比雪夫I型;振幅特性在阻带内是等波纹的,在通带内是单调下降的切比雪夫II型。(2)双线性变换法[4]工作原理双线性变换中数字域频率和模拟频率之间的非线性关系限制了它的应用范围,只有当非线性失真是允许的或能被忽略时,才能采用双线性变换法,通常低通、高通、带通和带阻等滤波器等具有分段恒定的频率特性,可以采用预畸变的方法来补偿频率畸变,因此可以采用双线性变换设计方法。(3)脉冲响应不变法[4]工作原理冲激响应不变法遵循的准则是使数字滤波器的单位取样响应与参照的模拟滤波器的脉冲响应的取样值完全一样,即h(n)=ha(nT),其中T为取样周期。实际是由模拟滤波器转换成为数字滤波器,就是要建立模拟系统函数Ha(S)与数字系统函数H(z)之间的关系。脉冲响应不变法是从S平面映射到z平面,这种映射不是简单的代数映射,而是S平面的每一条宽为2π/T的横带重复地映射到整个z平面。2.2.2FIR设计原理由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。但是这些特性是以牺牲线性相位频率特性为代价的,即用Butterworth、切比雪夫和椭圆法设计的数字滤波器逼近理想的滤波器的幅度频率特性,得到的滤波器往往是非线性的。在许多电子系统中,对幅度频率特性和线性相位特性都有较高的要求,所以IIR滤波器在这些系统中往往难以胜任。语音信号的数字滤波处理(九)第1页共39页3设计程序的调试和运行结果3.1声音信号的提取与加噪试和运行结果3.1.1提取声音信号x1=wavread('C:\Users\acer\Desktop\邓紫棋-你把我灌醉.wav',10);x1=x1';x1=x1(1,:);x2=[12.436.1712.9322.1732.2540.8845.8745.8740.8832.2522.1712.936.172.431];subplot(7,1,1);stem(x1);ylabel('x1(n)');title('x1(n)');subplot(7,1,2);stem(x2);ylabel('x2(n)');title('x2(n)');y=conv(x1,x2);subplot(7,1,3);stem(y);ylabel('y');title('x1(n)与x2(n)的卷积');N1=length(x1);N2=length(x2);N=N1+N2-1;X1=fft(x1,N);X2=fft(x2,N);subplot(7,1,4);stem(X1);ylabel('X1');title('x1(n)的N点DFT');subplot(7,1,5);stem(X2);ylabel('X2');title('x2(n)的N点DFT');Y1=X1.*X