加噪音语音处理.docx
- 文档编号:30240236
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:34
- 大小:385.49KB
加噪音语音处理.docx
《加噪音语音处理.docx》由会员分享,可在线阅读,更多相关《加噪音语音处理.docx(34页珍藏版)》请在冰豆网上搜索。
加噪音语音处理
广东药学院
实验报告
实验七FIR数字滤波器设计与软件实现
班级:
生物医学工程09
组员姓名:
林显华谢冠鸿黄玉娴
学号:
090751210209075121120907512147
2011年12月15日
摘要
滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。
Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。
关键词数字滤波器;MATLAB;窗函数法;巴特沃斯;切比雪夫;双线性变换
目录
摘要2
1.绪论4
1.研究的目的和意义5
1.国内同行研究现状5
1.本课题的研究内容7
2.原始语音信号采集与处理8
2.1Matlab简单介绍8
2.2语音信号的采样理论依据9
2.3语音信号的采集10
2.4程序流程图10
2.5语音信号的时频分析11
2.6语音信号加噪与频谱分析13
2.7本章小结14
3.进行滤波,比较滤波前后语音信号的波形及频谱15
3.1设计的滤波器15
3.2本章小结17
4.GUI界面18
4.1系统界面设计工具—GUI概述18
4.2创建GUI界面19
5.3创建开关按钮20
5.4保存和修改fig文件21
5.5编写M文件23
5.6本章小结23
总结24
参考文献25
附录26
设计FIR和IIR数字滤波器程序代码:
26
1.绪论
数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。
它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。
具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。
数字滤波器,是数字信号处理中及其重要的一部分。
随着信息时代和数字技术的发展,受到人们越来越多的重视。
数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。
数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR,FiniteImpulseResponse)滤波器和无限冲激响应(IIR,InfiniteImpulseResponse)滤波器。
FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H(z)在处收敛,极点全部在z=0处(因果系统),因而只能用较高的阶数达到高的选择性。
FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。
FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。
FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。
IIR滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。
随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。
它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化[1]。
1.研究的目的和意义
语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系,语音是人类获取信息的重要来源和利用信息的重要手段。
在信号传输过程中,由于实验条件或各种其他主观或客观条件的原因,语音处理系统都不可避免地要受到各种噪声的干扰。
噪声不但降低了语音质量和语音的可懂度,而且还将导致系统性能的急剧恶化,严重时使整个系统无法正常工作。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
其强大的数据处理能力可以极大程度上削弱噪声影响,还原出真实的语音信号(相符度在90%以上)[2]。
1.国内同行研究现状
MATLAB是MatrixLaboratory(矩阵实验室)的缩写,是MathWorks推出的一套高性能可视化软件,它集数值分析,矩阵运算,函数生成,信号处理,图像处理,建模与仿真等诸多功能于一体,为使用者提供一个高效的编程工具。
本次毕业设计中,我们就用它作为编程工具和辅助工具进行设计。
噪声污染位于联合国四大公认污染之一,无论是尖锐的火车汽笛声,还是我们肉耳听不到的超声波,次声波都有可能给人们生活带来极大不便。
在机械方面,机械件碰撞带来的噪声会缩短器件寿命,在电子方面,电器件在噪声的影响下可能会失灵。
华中师范大学教育信息技术工程研究中心(武汉)刘智老师曾经就机械噪声给人们身心带来的伤害进行过一次计算机仿真,同时用MATLAB进行了信号处理。
此次研究,他通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。
从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。
其实,这正是干扰所造成的。
通过滤波前后的对比,得出低通滤波后效果最好,高通滤波后的效果最差的结果[3]。
大连理工大学2000级硕士蒋瑞艳也曾经做过一个振动,噪声处理系统,它是WINDOWS界面下的振动、噪声信号处理系统,它在专用模拟输入硬件(数据采集系统)支持下,可以完成振动、噪声信号的数据采集以及功率谱、倒谱、谱阵和传递函数分析等功能。
能将数据转化成各种对应的图形,并具备ZOOM功能。
它可以广泛应用于实验室、生产现场和教学中做振动、噪声的测试和分析,可以代替专用信号处理机的工作。
本系统软件采用先进的C++Builder语言编制,在WINDOWS系统下运行。
软件界面的设计以满足大多数用户为主,力求直观通俗,通过菜单驱动完成各个功能[4]。
华中科技大学能源与动力工程学院就“基于MATLAB的噪声信号采集与分析系统研究 ”做过研究报告,他们利用MATLAB的数据采集工具箱(DAQ)和信号处理工具箱开发了一套声音信号采集分析系统,该系统不仅能够实现低成本、高精度的实时采集,还能将声音信号资料导入系统进行时域和频域分析。
利用另外一个工具Compiler使编制的MATLAB程序能够独立运行从而提高了运行速度;配备了友好的图形用户界面(GUI),方便用户操作。
最后给出了系统在内燃机噪声诊断方面的应用实例[5]。
在机械方面,西北工业大学航海工程学院就“基于MATLAB的舰船辐射噪声信号小波消噪处理”做过研究报告,他们针对舰船辐射噪声信号的特点提出了小波消噪的方法,对小波消噪理论作了简要的阐述,并设计了一种消噪方案,最后利用MATLAB,在计算机上选用不同的小波基和阈值进行了实船信号的消噪处理试验,并对结果进行了简单的分析比较。
试验结果表明,在选择了合适的小波基和阈值的情况下,利用小波变换的方法对舰船辐射噪声进行消噪处理可以取得良好的效果[6]。
由此可见,MATLAB给噪声处理带来了极大“福音”。
1.本课题的研究内容
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器。
2.原始语音信号采集与处理
2.1Matlab简单介绍
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
2.2语音信号的采样理论依据
2..2.1采样频率
采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。
采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。
这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
2.2.2采样位数
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。
显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
2.2.3采样定理
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:
fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理。
1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式:
理想低通信道的最高大码元传输速率=2W*log2N(其中W是理想低通信道的带宽,N是电平强度)
2.3语音信号的采集
利用PC机上的声卡和WINDOWS操作系统可以进行数字信号的采集。
将话筒输入计算机的语音输入插口上,启动录音机。
按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。
点击放音按钮,可以实现所录音的重现。
以文件名“Orisound”保存入c:
\MATLAB\work中。
可以看到,文件存储器的后缀默认为.wav,这是WINDOWS操作系统规定的声音文件存的标准。
2.4程序流程图
图2-1程序流程图
2.5语音信号的时频分析
在MATLAB软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数,Wavread函数调用格式
y=wavread(file)%读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,bits]=wavread(file)%采样值放在向量y中,fs表示采样频率(hz),bits表示采样位数。
y=wavread(file,N)%读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2])%读取从N1到N2点的采样值放在向量y中。
对语音信号Orisound.wav进行采样其程序如下:
[y,fs,nbits]=wavread(‘me.wav’);%把语音信号加载入MATLAB仿真软件平台中
画出语音信号的时域波形,再对语音信号进行频谱分析。
MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
Xk=fft(xn,N)(式2-1)
参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。
,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
程序如下:
原始语音信号载入:
[y,fs,nbits]=wavread('me.wav');
sound(y,fs,nbits);%语音信号的播放
n=length(y);
Y=fft(y,n);%快速傅里叶变换
figure;
subplot(2,1,1);
plot(y);
title('原始信号波形','fontweight','bold');
grid;
subplot(2,1,2);
plot(abs(Y));
title('原始信号频谱','fontweight','bold');
grid;
程序结果如下图:
图2-2原始语音信号波形及频谱分析
2.6语音信号加噪与频谱分析
在MATLAB中产生高斯白噪声非常方便,我们可以直接应用两个函数:
一个是WGN,另一个是AWGN。
WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
也可直接用randn函数产生高斯分布序列。
在本次设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。
Randn函数有两种基本调用格式:
Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。
在这里,我们选用Randn(m,n)函数。
语音信号添加噪声及其频谱分析的主要程序如下:
高频噪音(M文件):
functionyt=yt(n)
nt=0.2*rand(n,1);
Ft=8000;fp=1000;fs=1200;Rp=0.1;As=70;
fb=[fp,fs];m=[0,1];dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];
[n,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(n,fo,mo,W);
yt=filter(hn,1,10*nt);
加噪音信号
[y,fs,nbits]=wavread('me.wav');
n=length(y);
s=y+yt(n);
sound(s);
figure;
subplot(2,1,1);
plot(s);
title('加噪语音信号的时域波形','fontweight','bold');
grid;
S=fft(s);
subplot(2,1,2);
plot(abs(S));
title('加噪语音信号的频域波形','fontweight','bold');
grid;
程序结果如下:
图2-3加噪音语音信号波形及频谱分析
2.7本章小结
本章介绍了语音信号的采集,信号加噪声,加噪后的时域与频域分析。
由原始信号的频谱分析得知,信号的频率主要集中在低频和高频,而从加噪信号频谱分析中,得知,噪音主要加在高频部分,那么,接下来我们将设计不同的滤波器来比较滤波后的效果!
具体内容如下!
3.进行滤波,比较滤波前后语音信号的波形及频谱
3.1设计的滤波器
用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
函数fftfilt用的是重叠相加法实现线性卷积的计算。
调用:
y=fftfilter(h,x,M)。
其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。
函数filter的调用格式:
yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。
其中xn是输入信号向量,yn输出信号向量。
由于所设计的滤波器有六个,故我们需要进行六次滤波,然后比较得出哪种滤波器的效果最好。
下面我们以IIR低通为例:
IIR低通滤波:
[y,fs,nbits]=wavread('me.wav');
n=length(y);%求出语音信号的长度
s=y+yt(n);%语音信号加入噪声
S=fft(s);
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
[n11,wn11]=buttord(wp,ws,1,50,'s');%求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s');%求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5);%利用双线性变换实现频率响应S域到Z域的变换
z11=filter(num11,den11,S);
sound(z11);
m11=fft(z11);%求滤波后的信号
figure;
subplot(2,2,1);
plot(abs(S),'g');
title('滤波前信号的频谱','fontweight','bold');
grid;
subplot(2,2,2);
plot(abs(m11),'r');
title('滤波前信号的频谱','fontweight','bold');
grid;
subplot(2,2,3);
plot(s);
title('滤波前信号的波形','fontweight','bold');
grid;
subplot(2,2,4);
plot(z11);
title('滤波后信号的波形','fontweight','bold');
grid;
图3-1IIR低通滤波
对原始语音信号具体程序及运行结果如附录比较滤波前后语音信号的波形及频谱
3.2本章小结
本章详细介绍了怎样通过自己设计的滤波器进行滤波。
经过以上的加噪处理后,可在Matlab中用函数sound对声音进行回放。
其调用格式:
sound(y,Fs),sound(y)和sound(y,Fs,bits)。
可以察觉滤波前后的声音有明显的变化。
比较后可得;低通效果较好,带通其次,高通最差。
在IIR低通滤波时,结果最差,出现失真。
4.GUI界面
4.1系统界面设计工具—GUI概述
图形用户界面(graphicaluserinterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。
GUIDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。
GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。
FIG文件:
包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。
它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。
M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。
GUI创建包括界面设计和控件编程两部分,主要步骤如下。
第一步:
通过设置GUIDE应用程序的选项来运行GUIDE;第二步:
使用界面设计编辑器进行面设计;第三步:
编写控件行为响应控制(即回调函数)代码。
4.2创建GUI界面
首先我们新建一个GUI文件:
File/New/GUI,选择BlankGUI(Default)。
图5-1GUI创建界面
选择BlankGUI(Default)。
5.3创建开关按钮
创建1个ButtonGroup,2个静态文本(Statictext),8个PushButton,如下图所示(属性可双击更改)
5.4保存和修改fig文件
大多数文件的保存和修改都可通过快捷键
和
来进行,但是fig文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 噪音 语音 处理