基于MATLAB的有噪声语音信号处理毕设.docx
- 文档编号:16747463
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:63
- 大小:567.91KB
基于MATLAB的有噪声语音信号处理毕设.docx
《基于MATLAB的有噪声语音信号处理毕设.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的有噪声语音信号处理毕设.docx(63页珍藏版)》请在冰点文库上搜索。
基于MATLAB的有噪声语音信号处理毕设
大学本科毕业设计论文
基于MATLAB的有噪声语音信号处理
摘要
滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。
Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。
关键词ﻩ数字滤波器;MATLAB;窗函数法;巴特沃斯;切比雪夫;双线性变换
Abstract
ﻫFilterdesignindigitalsignalprocessingplays anextremelyimportantrole,FIR digitalfiltersandIIRfilterisan importantpartoffilterdesign. Matlabispowerful, easy tolearn, programmingefficiency, whichwaswelcomedbythemajority of scientists.Matlabalso hasaparticularsignalanalysistoolbox,itneednot havestrongprogrammingskillscanbeeasilysignal analysis,processinganddesign.UsingMATLABSignalProcessing Toolboxcanquicklyandefficientlydesignavarietyofdigitalfilters.MATLABbasedonthe noiseissuespeech signalprocessingdesignandimplementationofdigitalsignal processingintegrateduseofthetheoreticalknowledge ofthespeechsignalplusnoise,timedomain,frequencydomainanalysisandfiltering.The correspondingresultsobtainedthroughtheoreticalderivation,andthenuse MATLABasa programming toolforcomputerimplementation.Implementedinthedesignprocess,usingthewindow function methodto designFIRdigitalfilterswithButterworth,Chebyshev andbilinearReformIIR digital filterdesignand useofMATLABasa supplementarytooltocompletethe calculationandgraphic designDrawing.Through thesimulationofthedesignedfilter andthefrequencyanalysis showsthatusingMatlab Signal Processing Toolboxcanquickly andeasilydesigndigital filtersFIRandIIR,theprocessissimpleandconvenient,the resultsoftheperformance indicatorstomeet thespecifiedrequirements.
ﻫ
Keywords:
digitalfilter;MATLAB; Chebyshev; Butterworth;Windowfunction method;bilineartransformation
目录
1.绪论1
1.1研究的目的和意义ﻩ2
1.2国内同行研究现状ﻩ2
2.原始语音信号采集与处理5
2.1Matlab简单介绍5
2.2语音信号的采样理论依据6
2.4程序流程图ﻩ7
2.5语音信号的时频分析ﻩ8
2.6语音信号加噪与频谱分析9
2.7本章小结ﻩ11
3设计数字滤波器ﻩ12
3.1数字滤波器设计的基本思路12
3.2 模拟滤波器概述ﻩ12
3.3IIR数字滤波器概述ﻩ12
3.4FIR数字滤波器概述13
3.5FIR数字滤波器和IIR数字滤波器比较ﻩ13
3.6低通,高通及带通滤波器ﻩ14
3.7 设计FIR滤波器14
3.8设计IIR滤波器ﻩ15
4进行滤波,比较滤波前后语音信号的波形及频谱19
4.1验证所设计的滤波器ﻩ19
4.2滤波ﻩ21
4.3本章小结ﻩ23
5.GUI界面24
5.1系统界面设计工具—GUI概述24
5.3创建开关按钮ﻩ25
5.4保存和修改fig文件ﻩ26
5.6本章小结ﻩ33
总结34
参考文献36
附录38
附录(I) 设计FIR和IIR数字滤波器38
附录(II)比较滤波前后语音信号的波形及频谱46
1.绪论
数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。
它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。
具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。
数字滤波器,是数字信号处理中及其重要的一部分。
随着信息时代和数字技术的发展,受到人们越来越多的重视。
数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。
数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR,Finite ImpulseResponse)滤波器和无限冲激响应(IIR,InfiniteImpulseResponse)滤波器。
FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H(z)在处收敛,极点全部在z =0处(因果系统),因而只能用较高的阶数达到高的选择性。
FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。
FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。
FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。
IIR滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。
随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。
它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化[1]。
1.1研究的目的和意义
语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系,语音是人类获取信息的重要来源和利用信息的重要手段。
在信号传输过程中,由于实验条件或各种其他主观或客观条件的原因,语音处理系统都不可避免地要受到各种噪声的干扰。
噪声不但降低了语音质量和语音的可懂度,而且还将导致系统性能的急剧恶化,严重时使整个系统无法正常工作。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
其强大的数据处理能力可以极大程度上削弱噪声影响,还原出真实的语音信号(相符度在90%以上)[2]。
1.2 国内同行研究现状
MATLAB是Matrix Laboratory(矩阵实验室)的缩写,是MathWorks推出的一套高性能可视化软件,它集数值分析,矩阵运算,函数生成,信号处理,图像处理,建模与仿真等诸多功能于一体,为使用者提供一个高效的编程工具。
本次毕业设计中,我们就用它作为编程工具和辅助工具进行设计。
噪声污染位于联合国四大公认污染之一,无论是尖锐的火车汽笛声,还是我们肉耳听不到的超声波,次声波都有可能给人们生活带来极大不便。
在机械方面,机械件碰撞带来的噪声会缩短器件寿命,在电子方面,电器件在噪声的影响下可能会失灵。
华中师范大学教育信息技术工程研究中心(武汉)刘智老师曾经就机械噪声给人们身心带来的伤害进行过一次计算机仿真,同时用MATLAB进行了信号处理。
此次研究,他通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。
从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。
其实,这正是干扰所造成的。
通过滤波前后的对比,得出低通滤波后效果最好,高通滤波后的效果最差的结果[3]。
大连理工大学2000级硕士蒋瑞艳也曾经做过一个振动,噪声处理系统,它是WINDOWS界面下的振动、噪声信号处理系统,它在专用模拟输入硬件(数据采集系统)支持下,可以完成振动、噪声信号的数据采集以及功率谱、倒谱、谱阵和传递函数分析等功能。
能将数据转化成各种对应的图形,并具备ZOOM功能。
它可以广泛应用于实验室、生产现场和教学中做振动、噪声的测试和分析,可以代替专用信号处理机的工作。
本系统软件采用先进的C++Builder语言编制,在WINDOWS系统下运行。
软件界面的设计以满足大多数用户为主,力求直观通俗,通过菜单驱动完成各个功能[4]。
华中科技大学能源与动力工程学院就“基于MATLAB的噪声信号采集与分析系统研究 ”做过研究报告,他们利用MATLAB的数据采集工具箱(DAQ)和信号处理工具箱开发了一套声音信号采集分析系统,该系统不仅能够实现低成本、高精度的实时采集,还能将声音信号资料导入系统进行时域和频域分析。
利用另外一个工具Compiler使编制的MATLAB程序能够独立运行从而提高了运行速度;配备了友好的图形用户界面(GUI),方便用户操作。
最后给出了系统在内燃机噪声诊断方面的应用实例[5]。
在机械方面,西北工业大学航海工程学院就“基于MATLAB的舰船辐射噪声信号小波消噪处理”做过研究报告,他们针对舰船辐射噪声信号的特点提出了小波消噪的方法,对小波消噪理论作了简要的阐述,并设计了一种消噪方案,最后利用MATLAB,在计算机上选用不同的小波基和阈值进行了实船信号的消噪处理试验,并对结果进行了简单的分析比较。
试验结果表明,在选择了合适的小波基和阈值的情况下,利用小波变换的方法对舰船辐射噪声进行消噪处理可以取得良好的效果[6]。
由此可见,MATLAB给噪声处理带来了极大“福音”。
1.3本课题的研究内容
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB 作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器。
2.原始语音信号采集与处理
2.1Matlab简单介绍
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国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(‘OriSound’);%把语音信号加载入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(‘OriSound’); %语音信号的采集
sound(y,fs,nbits); %语音信号的播放
n=length(y);
Y=fft(y,n); %快速傅里叶变换
figure;
subplot(2,1,1);
plot(y);
title(‘原始信号波形’,’fontweight’,’bold’);
axis([7800080000-11]);
grid;
subplot(2,1,2);
plot(abs(Y));
title(‘原始信号频谱’,’fontweight’,’bold’);
axis([ 01500000 4000]);
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)函数。
语音信号添加噪声及其频谱分析的主要程序如下:
[y,fs,nbits]=wavread('OriSound');
sound(y,fs,nbits);
n=length(y);
Noise=0.2*randn(n,2);
s=y+Noise;
sound(s);
figure;
subplot(2,1,1);
plot(s);
title('加噪语音信号的时域波形','fontweight','bold');
axis([78000 80000-11]);
grid;
S=fft(s);
subplot(2,1,2);
plot(abs(S));
title('加噪语音信号的频域波形','fontweight','bold');
axis([015000004000]);
grid;
图 2-3信号加噪时域波形图与频谱图
2.7本章小结
本章介绍了语音信号的采集,信号加白噪声,加噪后的时域与频域分析。
3设计数字滤波器
3.1数字滤波器设计的基本思路
数字滤波器的实现有两个关键步骤:
一个从数字域到模拟域间的变换,这个变换实现了数字滤波器技术指标到模拟滤波器技术指标的转换,同样也实现了模拟滤波器系统函数到数字滤波器系统函数的转换;另一个是从模拟滤波器技术指标到满足该指标的模拟滤波器的设计。
3.2 模拟滤波器概述
用模拟—数字变换法设计IIR数字滤波器,首先必须设计一个模拟滤波器,它有许多不同的类型,主要有以下两种类型:
巴特沃思(Botterworth简写BW)滤波器。
BW滤波器是根据幅频特性在通带内具有最拼图特性而定义的滤波器,对一个N阶低通滤波器来说,所谓最平坦特性就是模拟函数的前(2N-1)阶导数在
处都为零。
BW滤波器的另一个特性是在通带和阻带内的幅频特性始终是频率的单调下降函数,且其模拟函数随阶次N 的增大而更接近于理想低通滤波器。
切比雪夫(Chbyshev简写为CB)滤波器。
CB低通滤波器的模拟函数由切比雪夫多项式定义,且在通带内的幅频响应是波动的,在阻带则单调变化。
3.3IIR数字滤波器概述
IIR(InfiniteImpulseResponse)数字滤波器,又名“无限脉冲响应数字滤波器”,或“递归滤波器”。
递归滤波器,也就是IIR数字滤波器,顾名思义,具有反馈,一般认为具有无限的脉冲响应。
IIR滤波器有以下几个特点:
(1)封闭函数:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 噪声 语音 信号 处理