语音信号滤波去噪.docx
《语音信号滤波去噪.docx》由会员分享,可在线阅读,更多相关《语音信号滤波去噪.docx(14页珍藏版)》请在冰豆网上搜索。
语音信号滤波去噪
语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器
学生姓名:
王哲指导老师:
胡双红
摘要本课程设计主要利用MATLAB。
设计一个语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器,用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用双线性变换法设计的一个满足指标的椭圆IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出的结论合理。
关键词课程设计;滤波去噪;IIR滤波器;双线性变换法;椭圆滤波器;MATLAB
1引言
本课程设计主要利用MATLAB,设计一个语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器。
DSP的应用主要是在DSP处理器上或者软件中执行的一种算法,这就需要一定的编程量,就可以利用MATLAB实现。
而对滤波器和频谱分析仪的结构的分析和设计是DSP的最重要的内容之一,所以本课程设计要对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。
1.1课程设计目的
用麦克风采集一段语音信号,绘制波形并观察其频谱,给定技术指标,用双线性变换法设计一个椭圆低通滤波器,对语音信号进行滤波处理,比较滤波前后的波形和频谱并进行分析【1】。
1.2课程设计的要求
(1)滤波器指标必须符合工程实际。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告书。
1.3设计平台
美国Mathwork公司于1967年推出了“MatrixLaboratory”(缩写为Matlab)软件包,并不断更新和扩充。
目前最新的5.x版本(windows环境)是一种功能强、效率高便于进行科学和工程计算的交互式软件包。
其中包括:
一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一便于使用的集成环境中。
在此环境下所解问题的Matlab语言表述形式和其数学表达形式相同,不需要按传统的方法编程。
Matlab作为一种新的计算机语言,要想运用自如,充分发挥它的威力,也需先系统地学习它。
但由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那样难于掌握。
实践证明,你可在几十分钟的时间内学会Matlab的基础知识,在短短几个小时的使用中就能初步掌握它.从而使你能够进行高效率和富有创造性的计算。
Matlab大大降低了对使用者的数学基础和计算机语言知识的要求,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科研助手。
自推出后即风行美国,流传世界。
2设计原理
2.1IIR滤波器
根据IIR数字滤波器的设计原理,提出了IIR数字滤波器的快速设计方法,并在Matlab环境下做出了实现快速设计IIR数字滤波器的设计系统.在该系统中,只需要将数字滤波器的技术性能指标根据指定的或是需要的设计方法(如双线性变换法或脉冲响应不变法等),转换为模拟滤波器的技术性能指标,根据指定的模拟滤波器设计出相应的数字滤波器,该系统中指定的模拟滤波器为巴特沃斯滤波器和切比雪夫滤波器,该系统为快速、高效地设计IIR数字滤波器提供了一个可靠而有效的工作平台。
2.2双线性变换法
脉冲响应不变法的主要缺点是频谱交叠产生的混淆,这是从S平面到Z平面的标准变换z=esT的多值对应关系导致的,为了克服这一缺点,设想变换分为两步:
第一步:
将整个S平面压缩到S1平面的一条横带里;
第二步:
通过标准变换关系将此横带变换到整个Z平面上去。
由此建立S平面与Z平面一一对应的单值关系,消除多值性,也就消除了混淆现象。
图2.1双线性变换法中的复平面映射
为了将s平面的jΩ轴压缩到s1平面jΩ轴上的-
一段上,可通过以下的正切变换实现:
这里C是待定常数,下面会讲到用不同的方法确定C,可使模拟滤波器的频率特性与数字滤波器的频率特性在不同频率点有对应关系。
经过这样的频率变换,当Ω1由
时
Ω由
即映射了整个jΩ轴。
将这一关系解析延拓至整个s平面,则得到s平面
平面的映射关系:
再将s1平面通过标准变换关系映射到z平面,即令
通常取C=2/T
最后得S平面与Z平面的单值映射关系:
双线性换法的主要优点是S平面与Z平面一一单值对应,S平面的虚轴(整个jΩ)对应于Z平面单位圆的一周,S平面的Ω=0处对应于Z平面的ω=0处,
对应
即数字滤波器的频率响应终止于折迭频率处,所以双线性变换不存在混迭效应。
2.3椭圆低通滤波器
椭圆模拟低通原型滤波器的平方幅值响应函数为:
式中,
为小于1的正数,表示波纹情况;
为低通滤波器的截止频率(Cutofffrequency),N为滤波器的阶数,
为椭圆函数。
MATLAB信号处理工具箱提供Elliptic模拟低通滤波器原型设计函数ellipap。
由于椭圆滤波器通带和阻带均有波纹,因此函数输入参数中通带波纹和阻带衰减均需给出。
该函数调用形式为:
[z,p,k]=ellipap(n,Rp,Rs)
式中,n为椭圆滤波器阶数;Rp,Rs分别为通带波纹和阻带衰减,单位dB,通常滤波器的通带波纹的范围为1~5dB,阻带衰减的范围大于15dB。
z,p,k分别为滤波器的零点、极点和增益。
3设计步骤
3.1设计流程图
语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器的设计流程如图3.1所示
图3.1设计流程图
3.2语音信号的采集
利用Windows下的录音机,录制语音信号“大家好,我是王哲”,时间在3s左右。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
录音机使用如图3.2所示
图3.2录音机使用图
3.3语音信号的频谱分析
首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
>[y,fs,bits]=wavread('wz.wav');
>>sound(y,fs,bits)
>>plot(y);title('时域波形')
>>t=(1:
16000)/8000;
>>plot(t,y);xlabel('t');ylabel('y');title('时域波形')
其中,[y,fs,bits]=wavread(‘e:
\yuyin.wav’);%输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bite是波形文件每样本的编码位数。
sound(y,fs,bits);%按指定的采样率和每样本编码位数回放
由绘图命令可以得到时域波形,如图3.3所示
图3.3时域分析
>>Y=fft(y);
>>magY=abs(Y);angY=angle(Y);
>>w=(1:
16000)/16000*2*pi;
>>plot(w/pi,magY)
由绘图命令可得频域幅度谱,如图3.4所示
图3.4频域幅度谱
>>f=w/(2*pi)*Fs;
>>f=f(1:
8000);magY=magY(1:
8000);angY=angY(1:
8000);
>>subplot(2,1,1);plot(f,magY)
>>xlabel('f');ylabel('|Y|');title('频域幅度谱')
>>subplot(2,1,2);plot(f,angY)
>>xlabel('f');ylabel('pi');title('频域相位谱')
由绘图命令可得频域幅度谱和相位谱,如图3.5所示
图3.5频域幅度谱和相位谱
3.4设计椭圆滤波器
语音信号处理时采用的滤波器性能指标:
fb=1100;fc=1200;As=20;Ap=1;
>>fb=1100;fc=1200;As=20;Ap=1;
>>wb=2*pi*fb/Fs;wc=2*pi*fc/Fs;
>>wb=2*pi*fb/fs;wc=2*pi*fc/fs;
>>T=1;OmegaP=(2/T)*tan(wb/2);OmegaS=(2/T)*tan(wc/2);
>>[c,d]=afd_elip(OmegaP,OmegaS,Ap,As);
***椭圆滤波器阶次=4
>>[b,a]=bilinear(c,d,T);
>>[db,mag,pha,grd,w]=freqz_m(b,a);
由以上程序可得,双线性变换法设计的椭圆低通滤波器的幅度,幅度响应,群延时和相位响应等数据图,如图3.6所示
图3.6利用双线性变换设计的椭圆低通滤波器(w(单位:
))
(a)幅度(dB);(b)幅度响应;(c)群延时;(d)相位响应
3.5信号滤波处理
>>signal=filter(b,a,y);
>>subplot(2,1,1);plot(y)
>>subplot(2,1,2);plot(signal)
由以上程序可得,滤波前后时域波形对比图,如图3.7所示
图3.7滤波前后时域波形对比
>>X=fft(signal);
>>magX=abs(X);angX=angle(X);
>>subplot(2,2,1);plot(magX)
>>subplot(2,2,2);plot(angX)
>>subplot(2,2,3);plot(magY)
>>subplot(2,2,4);plot(angY)
>>sound(y,fs,bits)
由以上程序可得,滤波前后频域频谱图,如图3.8所示所示
图3.8滤波前后频谱波形对比
3.6结果分析
在根据课程设计要求完成设计后,根据以前书上学过的知识与自己设计的结果进行有效的对比,确定课程设计出的双线性法低通滤波器符合要求,课程设计成功。
4出现的问题及解决方法
(1)在课程设计之初,因为一个寒假对学习的疏忽,没有及时的复习巩固学习的知识,使得在完成课程设计时,对MATLAB的使用有一点生疏,很多在编程设计中常用到的专业术语都已经忘记,不过在经过看书重温后及时的回忆起来,使得课程设计比较的得心应手。
(2)在录制语音信号的时候,因为声音比较温柔,在后面的设计中效果不是很明显,最后重新录制,才得到了比较好的效果。
(3)在采集语音信号时,录音机的音频格式应该是PCM8000kHz,8位,单声道,并且在保存时必须使用纯英文的文件名。
(4)在最后的滤波前后的波形比较时,滤波前后的波形变化不是很大,在经过多番修改以后,才得到了一定的显著变化,并且在滤波后声音重现时可以听出声音在滤波前后有一定的变化。
5结束语
在这次为期两周的数字信号处理课程设计中,我成功的完成了课程设计,设计一个语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器,设计所得结果与课堂上学习的结果相同,设计成功。
在此次课程设计中我获益良多,在上学期学习的MATLAB的基础上,经过这次的课程设计,使得学习的更加熟悉,对MATLAB更加熟悉。
知识是越积累越多的,学到了就是自己的知识。
通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
对我们通信专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师和同学的细心帮助和指导下,终于游逆而解。
同时,在老师的身上我学得到很多许多课堂上学不到的知识,不单单是专业知识的学习,在此我再次表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
[1]维纳.K.英格尔,约翰.G.普罗克斯.数字信号处理(MATLAB版).西安:
西安交通大学出版社,2008.1
[2]张圣勤.MATLAB7.0实用教程.北京:
机械工业出版社,2006.3
[3]苏金明,刘宏MATLAB高级编程机械工业出版社,2008.4