MATLAB的语音滤波系统设计.docx
- 文档编号:28053878
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:27
- 大小:269.40KB
MATLAB的语音滤波系统设计.docx
《MATLAB的语音滤波系统设计.docx》由会员分享,可在线阅读,更多相关《MATLAB的语音滤波系统设计.docx(27页珍藏版)》请在冰豆网上搜索。
MATLAB的语音滤波系统设计
浙江大学
毕业设计
题目:
基于MATLAB的语音滤波系统设计
院(系):
电气信息工程学院
专业年级:
电子信息工程2017级
*******
学号:
111170130
指导教师:
李小文讲师
2019年4月8日
原创性声明
本人郑重声明:
本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。
毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。
除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。
对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。
本声明的法律责任由本人承担。
论文作者签名:
日期:
关于毕业论文使用授权的声明
本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属平顶山学院。
本人完全了解浙江大学有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权平顶山学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。
如果发表相关成果,一定征得指导教师同意,且第一署名单位为平顶山学院。
本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为平顶山学院。
论文作者签名:
日期:
指导老师签名:
日期:
基于MATLAB的语音滤波系统设计
摘要
MATLAB是一种数据分析和处理功能十分强大的计算机应用软件,对语音信号进行处理是MATLAB重要应用的领域之一。
本文的设计主要是基于MATLAB对语音信号进行滤波处理,首先采集语音信号,对语音信号进行时频分析,并将所采集的语音信号加入人为的干扰噪声,对加入噪声的信号进行时域和频域分析,然后设计巴特沃斯滤波器(模拟滤波器),用双线性变换法实现模拟滤波器到数字滤波器的转换,用设计好的数字滤波器对加噪信号进行滤波,来恢复原语音信号。
把加噪语音信号和滤波后的信号进行时域和频域变换,画出它们的时域和频域波形图,从频谱图中可以看到,噪声基本被滤除掉,重现原语音信号。
关键词:
MATLAB,语音去噪,巴特沃斯滤波器,双线性变换法
ThedesignandimplementationofvoicesignalfilterbasedontheMATLAB
Abstract
MATLABisakindofdataanalysisandprocessingfunctionsverypowerfulcomputerapplicationsoftware,MATLABsignalprocessingisoneofimportantapplicationareas.Inthispaper,thedesignofthemainistofilterthespeechsignalbasedonMATLAB,firstacquisitionspeechsignal,thetime-frequencyanalysisofspeechsignal,andtoaddvoicesignalcollectedbyhumaninterferenceofthenoise,tojointhenoisesignalintimedomainandfrequencydomainanalysis,andthentodesignbutterworthfilter(analogfilter),usingthebilineartransformationmethodtodesigndigitalfilter,theaddnoisesignalfiltering,torestoretheoriginalspeechsignal.Toaddnoisevoiceandfilteringofsignalintimedomainandfrequencydomaintransformation,drawthetimedomainwaveformandfrequencydomainwaveformfigure,canbeseeninthespectrum,isbasicfiltertoremovenoiseandreconstructoriginalspeechsignal.
Keywords:
MATLAB,Speechdenoising,Butterworthfilter,Bilineartransformationmethod
意见与反馈
第1章绪论
1.1本课题研究的背景及意义
语言是我们人类所特有的交流形式,它记载和传承了人类几千年文明史,因此如果没有语言就没有我们今天人类灿烂的文明。
语言最基本的表现形式是语音,语音在信息传递中起着重要的作用,是人类交换信息最常用、最有效、最方便最重要的形式。
语音信号处理属于信息科学的一个重要分支,发展快速的大规模集成技术和计算机技术,推动了语音信号研究的发展;它主要是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科[1]。
在语音通信的过程中,人们不可避免的受到来自周围各种噪声的干扰,比如接收设备内部的干扰噪声,从传输线路引入的噪声,甚至人们讲话的语音等。
正是由于这些噪声的存在,使得受信者接收到的语音信号已不是起初的无干扰的语音信号,而是受噪声污染了的含有噪声的语音信号。
比如,安装在轮船、飞机和火车上的无线电话,我们在街道上随处可见的公用电话,经常会受到雷雨天气的影响,在这种恶劣的自然环境下,语音信号在传输过程中很容易失真,严重影响了通信的流畅。
因此我们进行语音信号研究具有一定的现实意义。
1.2语音信号处理技术的发展及研究现状
早在两千年以前,人们对语音信号进行了大量的研究,由于受当时生产力水平的限制,没有相应的电子设备对语音信号进行处理,人们通常是用耳朵和嘴的听说来研究语音信号,我们把这种对语音信号的研究称作“口耳之学”,因此当时语音信号的研究只是定性的描述。
1876年贝尔发明了电话,促进了语音信号处理研究的发展,实现了声音信号与电信号相互转换,使远距离的语音通话成为了可能。
1939年声码器的诞生奠定了语音产生模型的基础,它的出现对语音信号处理的研究具有划时代的意义[2]。
1941年语谱图出现了,它的功能是将语音信号的时域变换到频域,得到信号的频谱图,有利于人们在频域对语音信号进行分析和处理。
1949年德国的一个实验室研究出了“语音回放机”,它的功能是将人工画在薄片上的语谱图翻译成语音,还可以合成想要的语音信号,推动了语音处理研究的发展。
进入21世纪计算机技术快速发展的今天,能够在电子计算机上对语音信号进行处理,因此语音信号处理的研究也得到了快速发展,本文就是运用一个计算机应用软件(MATLAB)对语音信号进行滤波处理,从而滤除掉噪声,来重现原始的语音信号。
1.3本文的主要研究内容
本文的主要研究内容是基于MATLAB对含有噪声的语音信号进行滤波处理,第二章对软件MATLAB和系统的设计思路进行了简单的介绍,第三章主要内容是采集一段语音信号,并将所采集的语音信号加入人为的干扰噪声,对加入噪声的信号和原语音信号进行时域和频域分析,第四章的核心内容是先设计一个巴特沃斯(Butterworth)模拟滤波器,然后用双线性变换法实现模拟滤波器到数字滤波器的转换(基于MATLAB),第五章的内容是将加噪信号通过设计好的数字滤波器,把加噪语音号与滤波后的信号进行时域和频域变换,画出它们的时域波形和频域波形,从频谱波形图中来分析滤波的好坏。
第2章MATLAB简介与系统的设计思路
2.1MATLAB简介
MATLAB语言是一种具有强大的数据处理和分析能力的应用软件,美国Mathworks公司开发的MATLAB是专门为科学操作而设计的可视化计算器[3]。
MATLAB是新一代科学计算软件,利用MATLAB及其工具箱可以迅速完成各类符号计算,它可以把声音文件变成离散的数据文件,然后利用它处理数据、矩阵运算,比如数字的滤波、傅氏变换、频谱分析、声音回放和各种图像的产生等,对语音信号进行处理是MATLAB重要应用的领域之一[4]。
2.2系统的设计思路
本文是用MATLAB对含有干扰噪声的语音信号在频域和时域进行滤波处理。
其设计大致思路如图2-1,本系统由采集语音信号模块、构建干扰信号模块、信号的合成模块、数字滤波模块构成。
设计思路是将录音机所采集到的语音信号和噪声信号,运用MATLAB进行合成,使语音信号变成带有噪声的语音信号,将噪语音信号送入数字滤波器。
运用MATLAB中FIR滤波器或IIR滤波器对含噪语音信号进行滤波处理,从而获得与开始一样的语音信号。
图2-1语音信号的滤波示意图
第3章语音信号与噪语音信号时频分析
本章的主要内容是用手机收集一段声音信号,运用MATLAB的正弦信号和随机函数(randn(n,1))来构建一段噪声信号,把声音信号和噪声信号在MATLAB中进行相加,生成噪语音信号,为下一章设计的数字滤波器提供输入信号。
3.1采集语音信号
通过手机上自带录音机,可以采集语音信号。
首先打开手机上的录音机,按下开始按钮,对话筒说“浙江大学”,说完后立刻停止录音,点击播放按钮,可以重现所录的声音。
用数据线把所录的声音存入电脑,以文件pdsxy的形式保存到E:
\MATLAB\work,随即出现文件存储器的后缀默认是.amr,用格式转换软件将语音文件格式转换为.wav格式。
单击属性,可以看到文件的数据格式,如整个文件的数据大小、采样频点及编码方式PCM(脉冲编码调制)。
另外在电脑上保存文件时,可通过计算机上的A/D转换器,将模拟的声音信号转换成离散了和量化了的数字语音信号,在播放声音时,它又能够利用D/A转换器,把数字信号还原为原来的模拟声音信号[4]。
3.2语音信号时频分析
利用函数wavread在MATLAB软件中采样语音信号,会得到声音数据变量x1,将其采样频率fs和数据位nbits放进MATLAB的工作环境,然后对采集到的语音信号进行时域分析,其具体的实现程序如下:
closeall;
clearall;
[x1,fs,nbits]=wavread('pdsxy.wav');%加载语音信号至Matlab仿真软件平台
t=0:
1/fs:
(size(x1)-1)/fs;%设置时间t取值范围和间隔
plot(t,x1);%根据x1画出二维图
title('原始语音信号时域波形图');%设置生成图像的标题
xlabel('时间(t)/s');%坐标轴的x轴为“时间(t)/s”
ylabel('幅度(x)');%坐标轴的y轴为“幅度幅度(x)”
运行程序后得到原始语音信号时域波形图如下:
图3-1原始语音信号时域图象
从图3-1中可以看出在时域环境下,语音信号的持续时间为4s,信号呈现出3个不规则的信号峰值:
上述程序是在MATLAB软件中产生的语音信号时域波形,重放所录入的声音信号,然后再对声音信号进行频谱分析,那么在MATLAB中,可以利用函数fft对信号采取迅速傅氏变换,即可得到信号的频谱图。
如图3-2所示,可以对各个频点上的随机信号进行对应的频域抽样,频率为8000Hz。
它的命令如下:
closeall;%关闭所有
clearall;%所有清除
[x1,fs,nbits]=wavread('pdsxy.wav');%加载语音信号至Matlab仿真软件平台
wavwrite(x1,fs,nbits,'x10.wav');%将声音文件x1以fs进行抽样存入文件名x10
y1=fft(x1);%对x1进行快速傅立叶变换.
f=fs*(0:
length(y1)-1)/length(y1);
plot(f,abs(y1));
title('原始语音信号的频谱');%图象的标题为“原始语音信号的频谱.”
xlabel('频率/Hz');%坐标轴的x轴为“频率/Hz”
ylabel('幅度');%坐标轴的y轴为“幅度”
运行程序后得到原始语音信号频域波形图如下:
图3-2原始语音信号频域图谱
3.3构建干扰信号
为了方便分析,可利用MATLAB中的正弦信号和随机函数来构建干扰信号,干扰信号的长度由原始语音信号的长度来确定,对干扰信号展开具体的时域和频域分析。
上述大致程序如下:
closeall;%关闭所有
clearall;%所有清除
[x1,fs,nbits]=wavread('pdsxy.wav');%读入音频信号,对读入的音频格式有要求
t=0:
1/fs:
(size(x1)-1)/fs;%将噪声信号调整到跟音频信号长度一样
Au=0.01;
d=Au*cos(2*pi*5000*t);%噪声信号5khz
noise=0.01*randn(size(x1),1);%随机函数产生噪声
s=d'+noise;
y0=fft(s);
plot(t,s);%根据s画出二维图;
title('噪声信号时域波形图');%设置标题为“噪声信号时域波形图”
xlabel('时间(t)/s');%坐标轴的x轴为“时间(t)/s”
ylabel('幅度(x)');%坐标轴的y轴为“幅度(x)”
z=length(y0);%计算y1的长度
ff=fs*(0:
z/2-1)/z;
figure(4);
plot(ff,abs(y0(1:
(z/2))));%以ff为横坐标,abs(y0(1:
(z/2)))为纵坐标绘制连图
title('噪声信号频域波形图');%图象的标题为“噪声信号频域波形图”
xlabel('频率/Hz');%坐标轴的x轴为“频率/Hz”
ylabel('幅度(x)');%坐标轴的y轴为“幅度(x)”
程序运行后得到噪声信号的时域和频域波形图,如图3-3和3-4所示:
图3-3噪声信号的时域波形图
图3-4噪声信号的频域波形图
3.4噪语音信号的合成及其时频分析
在Matlab中把语音和噪声信号叠加,对带有噪声的语音信号进行播放,并画出频谱图象,具体如图3-4所示。
大致的命令如下:
%%%%%噪语音信号的时域频域图象%%%%%%
closeall;%关闭所有
clearall;%所有清除
[x1,fs,nbits]=wavread('pdsxy.wav');%读入音频信号,对读入的音频格式有要求
t=0:
1/fs:
(size(x1)-1)/fs;%将噪声信号调整到跟音频信号长度一样
Au=0.01;
d=Au*cos(2*pi*5000*t);%噪声信号5khz
noise=0.01*randn(size(x1),1);%用随机函数产生干扰噪声
s=d'+noise;%正弦函数和噪声进行叠加产生噪声
x2=x1+s;%噪声与语音信号进行叠加
sound(x2,fs);%回放噪语音信号
wavwrite(x2,fs,nbits,'20.wav');%将声音文件x2以fs进行抽样存入文件名20
%========fourier变换==========%
y1=fft(x1);%将x1进行快速傅立叶变换
y2=fft(x2);%将x2进行快速傅立叶变换
%============画图部分=========%
plot(t,x2);%根据x2画出二维图
title('噪语音信号时域波形图');%图象的标题为“噪语音信号时域波形图.”
xlabel('时间(t)/s');%坐标轴的x轴为“时间(t)/s”
ylabel('幅度');%坐标轴的y轴为“幅度”
z=length(y1);%计算y1的长度
ff=fs*(0:
z/2-1)/z;
figure(7);
plot(ff,abs(y2(1:
(z/2))));%以ff为横坐标,abs(y2(1:
(z/2)))为纵坐标绘制连图
title('噪语音信号频域波形图');%图象的标题为“噪语音信号频域波形图.”
xlabel('频率/Hz');%坐标轴的x轴为“频率/Hz”
ylabel('幅度');%坐标轴的y轴为“幅度”
程序运行后得到噪语音信号的时域和频域波形图,如图3-5和3-6所示:
图3-5添加噪声的语音信号时域图象
图3-6添加噪声的语音信号频域图象
图3-5和图3-6是添加噪声后的语音信号时域和频域波形图,其中在频域5000Hz处有比较明显的高峰,即加入的单余弦噪声语音信号,而添加噪声后再播放的声音就和原始的语音信号有非常明显的区别,并伴随有较尖锐的干扰声音,原始语音信号出现失真。
第4章数字滤波器的设计及其MATLAB实现
上一章已经得到了滤波器的输入信号—噪语音信号,本章的核心内容是用双线性变换法设计一个数字滤波器(基于MATLAB实现),从而实现对噪语音信号的滤波。
本章首先介绍了数字滤波器的滤波原理及其设计思想,由于巴特沃斯滤波器具有最平的响应特性和较好的相位特征,因此,本文采用巴特沃斯滤波器来设计模拟滤波器,然后采用双线性变换法实现模拟滤波器到数字滤波器的转换。
4.1数字滤波器简介
4.1.1数字滤波原理
输入信号通过滤波器的目的是将干扰信号滤除掉。
对于图4-1所示的LSI系统,其时域输入输出关系为:
Y(n)=X(n)*H(n)(4-1)
图4-1LSI系统
假设Y(n),X(n)的傅立叶变换存在,则输入信号与输出信号的频域变换表达式为:
Y(ejw)=X(ejw)H(ejw)(4-2)
如果H(ejw)具有低通特性,截止频率是wc,当输入信号X(n)通过该系统后,它的输出信号Y(n)中不会包含|wc|以外的频率成分,只含有|wc|以内的信号。
因此,如果滤波器的形状不一样,其滤波后输出信号的结果也不一样[5]。
若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位样值h(n)也一定是离散的,我们把此类滤波器称为数字滤波器(DigitalFilter)。
数字滤波器具有很多优良特性,比如容易大规模集成;不含有阻抗匹配问题;稳定性和灵敏度较高;系统函数易变化;灵活性高[6]。
4.1.2数字滤波器分类及其设计思想
数字滤波器从功能上可以划分为带通滤波器(BandPass)、带阻滤波器(BandStop)、低通滤波器(LowPass)、高通滤波器(HighPass)。
从滤波器的单位脉冲响长度可划分为有限脉冲响应(FiniteImpulseResponse)数字滤波器与无限脉冲响应(InfiniteImpulseResponse)数字滤波器,前者简称为FIR数字滤波器,它的单位样值响应h(n)的序列长度是有限长的;后者简称IIR数字滤波器,它的单位样值响应h(n)的序列长度是无限长的,本文主要是通过巴特沃斯模拟滤波器和双线性变换法来设计IIR数字低通滤波器,具体的设计步骤为:
根据一定变换关系把给出的数字低通滤波器的性能指标转变为模拟低通滤波器的性能指标,按照转变后的技术指标来设计模拟低通滤波器H(s),然后把H(s)转换为H(z)[7]。
其具体的设计数字滤波器的流程如下图4-2所示:
图4-2数字滤波器的设计流程图
4.2巴特沃斯低通滤波器的设计及其MATLAB实现
具有非常平滑的频率响应是巴特沃斯滤波器所具有的的一个显著特征,如果在截止频率范围以外的话,其频率响应会呈单调下降的趋势,高阶巴特沃斯低通滤波器有很好的幅度特性,与理想低通滤波器非常相似,因此本文采用巴特沃斯低通滤波器来作为模拟滤波器,Butterworth低通滤波器幅度平方函数为
,它的具体公式如下:
(4-3)
在上述的公式中,各字母的具体含义:
为3dB截止频率,N表示滤波器的阶次,
为滤波器频率[8]。
为巴特沃斯(Butterworth)低通滤波器的产生提供函数(buttap)的具体媒介是MATLAB信号处理工具箱,运用的格式是[z,p,k]=buttap(N);在式子中,p表示极点,z表示零点,N表示阶次,k表示增益[5]。
最后巴特沃斯低通模拟滤波器的设计(基于MATLAB实现)举例如下:
closeall;%关闭所有
clearall;%所有清除
[x1,fs,nbits]=wavread('pdsxy.wav');%读入音频信号,对读入的音频格式有要求
we=0.25*pi;
wf=0.3*pi;
re=1;
rf=15;
Ts=1/fs;
[N,Wn]=buttord(we,wf,re,rf,'s');%选择滤波器最小阶数
[O,P,Q]=buttap(N);
[Dac,Eac]=zp2tf(O,P,Q);
%========滤波器频谱====
[G,w]=freqs(Dac,Eac]);%绘制频率响应曲线
figure
plot(w*fs/(2*pi),abs(G));%以w*fs/(2*pi)为横坐标,abs(H)为纵坐标绘制连图
title('butterworth低通滤波器的幅频特性');%设置图象的标题
xlabel('频率/Hz');%坐标轴的x轴为“频率/Hz”
ylabel('幅度');%坐标轴的y轴为“幅度”
gridon;
程序运行后得到butterworth低通滤波器的幅频特性如图4-3所示:
图4-3butterworth低通滤波器的幅频特性
从上述图4-3可以很清楚地分析到:
巴特沃斯(Butterworth)滤波器具备平滑的频率响应,如果在截止频率范围以外的话,它的频率响应会呈单调下降的趋势。
4.3双线性变换法设计数字滤波器及其MATLAB实现
利用脉冲响应不变法设计数字滤波器时,容易产生频域混叠,可以利用双线性变换法来解决这一问题,双线性变换公式如4-4所示:
(4-4)
双线性变换法的大致思路为:
第一步是把s域的整个坐标轴变换至s1平面带宽为
的横带里,其带宽的变化范围为丛-π/T至π/T,第二步按照等式关系
把s1转变到整个Z平面上去,根据上述的步骤可以将s平面与Z平面的值相对应起来,整个映射过程如下图4-4所示:
图4-4双线性变换法的映射关系
根据式(4-4)得
(4-5)
(4-6)
(4-7)
等式(4-4)和等式(4-5)确定了z与s之间的等式关系,而式(4-6)和式(4-7)给出了
和
之间的等式关系,但这是一种非线性关系,双线性变换法正是利用了正切函数的非线性特征,将全部
轴压缩到单位圆的一周上从而避免了频谱混叠现象的发生[4]。
在MATLAB中,双线性变换可通过bilinear函数实现,其调用格式为:
[bz,az]=bilinear(b,a,fs),其中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 语音 滤波 系统 设计
