基于MATLAB的语音信号去噪处理修改版Word文件下载.docx
- 文档编号:1572480
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:53
- 大小:425.22KB
基于MATLAB的语音信号去噪处理修改版Word文件下载.docx
《基于MATLAB的语音信号去噪处理修改版Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的语音信号去噪处理修改版Word文件下载.docx(53页珍藏版)》请在冰点文库上搜索。
数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。
数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR,FiniteImpulseResponse)滤波器和无限冲激响应(IIR,InfiniteImpulseResponse)滤波器。
FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H(z)在处收敛,极点全部在z=0处(因果系统),因而只能用较高的阶数达到高的选择性。
FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。
FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。
FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。
IIR滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。
随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。
它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化[1]。
1.1研究的目的和意义
语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系,语音是人类获取信息的重要来源和利用信息的重要手段。
在信号传输过程中,由于实验条件或各种其他主观或客观条件的原因,语音处理系统都不可避免地要受到各种噪声的干扰。
噪声不但降低了语音质量和语音的可懂度,而且还将导致系统性能的急剧恶化,严重时使整个系统无法正常工作。
现实中噪音给人带来生理上和心理上的危害具体表现在损害听力、损害视力、有害于人的心血管系统、我国对城市噪音与居民健康的调查表明:
地区的噪音每上升一分贝,高血压发病率就增加3%。
影响人的神经系统,使人急躁、易怒。
影响睡眠,造成疲倦。
噪声对睡眠的危害:
突然的噪声在40分贝时,可使10%的人惊醒,达到60分贝时,可使70%的人惊醒。
因此噪声处理已经成为现代人必须面临的问题。
选择设计此方案,是对数字信号处理的一次实践。
在数字信号处理的课程学习过程中,我们过多的是理论学习,几乎没有进行实践方面的运用。
这个课题正好是对数字语音处理的一次有利实践,而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。
这个方案用到的软件也是在数字信号处理中非常通用的一个软件——MATLAB软件。
所以这个课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。
课题用到了较多的MATLAB语句,而由于课题研究范围所限,真正与数字信号有关的命令函数却并不多。
1.2本课题的研究内容
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。
最终结合图像以及对语音信号的回放,通过对比,得出结论。
本课题的研究基本步骤如下:
1.语音信号的录制。
2.在MATLAB平台上读入语音信号。
3.绘制频谱图并回放原始语音信号。
4.利用MATLAB编程加入一段正弦波噪音,设计滤波器去噪。
5.利用MATLAB编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。
6通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。
1.3其大概流程框图可如下表示
开始
用wavread读取语音信号,并进行采样,建立数据文件,并用plot画出数据文件时域波形图和频谱图
利用MATLAB中的正弦波函数、随机函数产生噪声分别加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析。
回放语音信号得出所设计滤波器FIR和IIR在语音处理中的优劣
结束
运用数字信号处理理论设计FIR和IIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征。
程序流程图
图1-1程序流程图
2.原始语音信号采集与处理
2.1Matlab简单介绍
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。
1984年由Little、Moler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场。
到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如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采样的基本概念
(1)所谓“采样”,就是利用采样脉冲序列p(t)从连续时间信号x(t)中抽取一系列的离散样值,由此得到的离散时间信号通常称为采样信号,而它的顶部符号(^)表示它的采样信号,X^a(t)=xa(t).p(t)。
采样器可以看成是一个电子开关,设开关每隔T秒短暂地闭合一次,将连续信号接通,实现一次采样。
如果开关每次闭合的时间为t秒,那么采样器的输出将是一串周期为T,宽度为t的脉冲,而脉冲的幅度却是重复着在这段t时间内信号的幅度,这个过程可以看作是一个脉冲调幅过程,被调制的脉冲载波是一串周期为T,宽度为t的矩形脉冲信号,即采样脉冲序列p(t),而调制信号就是输入的连续信号。
(2)采样频率
采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规则限制。
采样频率的常用的表示符号是fs。
采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。
采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。
这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
(3)采样位数
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。
显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
(4)采样定理
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>
=2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;
采样定理又称奈奎斯特定理。
1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高码元传输速率的公式:
理想低通信道的最高码元传输速率B=2WBaud(其中W是理想)
采样定理
理想信道的极限信息速率(信道容量)C=B*log2N(bps)采样过程所应遵循的规律,又称取样定理、抽样定理。
采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。
采样定理是1928年由美国电信工程师H.奈奎斯特首先提出来的,因此称为奈奎斯特采样定理。
1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理,因此在苏联文献中称为科捷利尼科夫采样定理。
1948年信息论的创始人C.E.香农对这一定理加以明确地说明并正式作为定理引用,因此在许多文献中又称为香农采样定理。
采样定理有许多表述形式,但最基本的表述方式是时域采样定理和频域采样定理。
采样定理在数字式遥测系统、时分制遥测系统、信息处理、数字通信和采样控制理论等领域得到广泛的应用。
时域采样定理,频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1±
Δt),f(t1±
2Δt),...来表示,只要这些采样点的时间间隔Δt≤1/2F,便可根据各采样值完全恢复原来的信号f(t)。
这是时域采样定理的一种表述方式。
时域采样定理的另一种表述方式是:
当时间信号函数f(t)的最高频率分量为fM时,f(t)的值可由一系列采样间隔小于或等于1/2fM的采样值来确定,即采样点的重复频率f≥2fM。
图为模拟信号和采样样本的示意图。
时域采样定理是采样误差理论、随机变量采样理论和多变量采样理论的基础。
频域采样定理,对于时间上受限制的连续信号f(t)(即当│t│>
T时,f(t)=0,这里T=T2-T1是信号的持续时间),若其频谱为F(ω),则可在频域上用一系列离散的采样值来表示,只要这些采样点的频率间隔ω≦π/tm。
2.3语音信号的采集
2.3.1goldwave软件介绍
GoldWave是一个功能强大的数字音乐编辑器,它可以对音频内容进行播放、录制、编辑以及转换格式等处理。
是一个集声音编辑,播放,录制,和转换的音频工具,体积小巧,功能却不弱。
可打开的音频文件相当多,包括WAV,OGG,VOC,IFF,AIFF,AIFC,AU,SND,MP3,MAT,DWD,SMP,VOX,SDS,AVI,MOV,APE等音频文件格式,你也可以从CD或VCD或DVD或其它视频文件中提取声音。
图2-1
2.3.2语音信号的录制
利用软件HA_GoldWave可以进行语音信号的录制。
选择录制时间为5秒钟。
点击放音按钮,可以实现所录音的重现。
以文件名“wangwei”保存入c:
\MATLAB\work中。
可以看到,文件存储器的后缀默认为.wav,
2.4语音信号的时频分析
2.4.1FFT概念
傅立叶变换是数字信号处理领域一种很重要的算法。
要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。
傅立叶原理表明:
任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。
而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位
傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。
FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。
有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。
这就是很多信号分析采用FFT变换的原因。
另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。
2.4.2FFT的MATLAB实现:
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
下面介绍这些函数。
函数FFT用于序列快速傅立叶变换。
函数的一种调用格式为y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。
且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;
否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为y=fft(x,N)
式中,x,y意义同前,N为正整数。
函数执行N点的FFT。
若x为向量且长度小于N,则函数将x补零至长度N。
若向量x的长度大于N,则函数截短x使之长度为N。
若x为矩阵,按相同方法对x进行处理。
经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。
MATLAB提供求复数的幅值和相位函数:
abs,angle,这些函数一般和FFT同时使用。
函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角。
用MATLAB工具箱函数fft进行频谱分析时需注意:
(1)函数fft返回值y的数据结构对称性
一般而言,对于N点的x(n)序列的FFT是N点的复数序列,其点n=N/2+1对应Nyquist频率,作频谱分析时仅取序列X(k)的前一半,即前N/2点即可。
X(k)的后一半序列和前一半序列时对称的。
(2)频率计算
若N点序列x(n)(n=0,1,…,N-1)是在采样频率下获得的。
它的FFT也是N点序列,即X(k)(k=0,1,2,…,N-1),则第k点所对应实际频率值为f=k*f/N.
(3)作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。
利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。
再对其进行采样,记住采样频率和采样点数。
下面介绍Wavread函数几种调用格式。
(1)y=wavread(file)
功能说明:
读取file所规定的wav文件,返回采样值放在向量y中。
(2)[y,fs,nbits]=wavread(file)
采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。
(3)y=wavread(file,N)
读取钱N点的采样值放在向量y中。
(4)y=wavread(file,[N1,N2])
读取从N1到N2点的采样值放在向量y中。
接下来,对语音信号wangwei.wav进行采样。
其程序如下:
>
[y,fs,nbits]=wavered(‘wangwei’);
%把语音信号加载入Matlab仿真软件平台中
然后,画出语音信号的时域波形,再对语音信号进行频谱分析。
MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
Xk=fft(xn,N)。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
sound(x,fs,bits);
用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的读入打开,以及绘出了语音信号的波形频谱图。
[y,fs,bits]=wavread('
wangwei.wav'
);
sound(y,fs)
n=length(y)
y_p=fft(y,n);
%用傅里叶变换到频域
f=fs*(0:
n/2-1)/n;
%频率序列
figure
(1)
subplot(2,1,1);
plot(y);
title('
原始语音信号采样后的时域波形'
xlabel('
点数'
)
ylabel('
幅值A'
subplot(2,1,2);
plot(f,abs(y_p(1:
n/2)));
原始语音信号采样后的频谱图'
频率幅值'
程序运行可以听到声音,得到的图形为:
图2-2
2.5语音信号加噪与频谱分析
2.5.1正弦波信号加入原始语音信号
前面已经介绍了MATLAB软件相关知识,那么我们怎么在MATLAB平台上实现对一段原始语音信号加入一个正弦波信号呢?
下面一段程序实现了在原始语音信号加入正弦波信号。
程序见附录5
分析此段程序可知,此程序是先对原始语音信号做时域波形分析和频谱分析,然后再对加噪的语音信号做时域波形分析和频谱分析。
首先通过MATLAB中调用和回放语音信号命令来实现对原始语音信号的调用和回放,程序如下:
由于在MATLAB中,如要实现两个信号的相加减,那么两个信号的长度和维度都要一样才能相加减。
程序中:
n=length(y),用于计算信号的长度和选取变换的点数。
然后用傅里叶变换到频域:
通过函数f=fs*(0:
计算出对应点的点数,然后绘制出原始语音信号的时域波形和频谱图。
图形如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 语音 信号 处理 修改