毕业设计122广西工学院语音信号的处理与滤波论文.docx
- 文档编号:3287791
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:15
- 大小:215.52KB
毕业设计122广西工学院语音信号的处理与滤波论文.docx
《毕业设计122广西工学院语音信号的处理与滤波论文.docx》由会员分享,可在线阅读,更多相关《毕业设计122广西工学院语音信号的处理与滤波论文.docx(15页珍藏版)》请在冰豆网上搜索。
毕业设计122广西工学院语音信号的处理与滤波论文
语音信号的处理与滤波
——装订线——
摘要:
本文介绍了一种基于语音信号的处理及滤波器的设计和实现,为帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法,提出了用Matlab进行数字信号处理课程设计的思路,并阐述了课程设计的具体方法、步骤和内容。
综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB或者DSP开发系统作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
此外,系统实现了对语音信号处理的整体过程,并将采集到的数据传输到基于Matlab-GUI界面设计的滤波器系统中进行分析、处理、频谱分析、显示和储存。
关键字:
语音信号;MATLAB;信号分析;FIR;IIR;图形用户界面(GUI)
一、开发工具说明
MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件,被誉为“巨人肩上的工具”。
MATLAB的含义是矩阵实验室(MATRIXLABORATORY)。
经过十几年的完善和扩充,它已发展成为线性代数课程的标准工具。
在美国,MATLAB是大学生和研究生必修的课程之一。
美国许多大学的实验室都安装有MATLAB,供学习和研究之用。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。
在这个环境下,对所要求解的问题,用户只需要简单地列出数学表达式,其结果便以数值或图形方式显示出来。
MATLAB中包括被称作工具箱(TOOLBOX)的各类应用问题的求解工具。
它可用来求解各类学科的问题,包括信号处理、图像处理、控制系统辨识、神经网络等。
随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此应用范围也越来越广泛,成为涉及数值分析的各类设计不可或缺的工具。
近年来,随着MATLAB和SIMULINK及其相关工具箱的不断晚上和发展,它们已经成为专家学者和工程技术人员不可缺少的助手。
如何在较短的时间内尽可能全面掌握其编程环境及各个工具箱的功能并应用于实践,也越来越成为人们在学习过程中所关心的重点。
二、理论分析
1.滤波器的设计
对于数字滤波器,从设计方法上分类,有IIR滤波器(无限冲激响应数字滤波器)和FIR滤波器 (有限冲激响应数字滤波器)之分。
(1)FIR数字滤波器的算法描述
FIR数字滤波器又称为卷积滤波器,因为它在时间域上的输入x(n)和输出信号y(n) 的数学关系是卷积运算:
y(n)=hd(n)*x(n)
其中hd(n)是FIR滤波器的单位冲激响应函数,其表达式是由理 想滤波器频响的幅度函数Hd(ω)进行付里叶逆变换得到的,式 中ωc为滤波器的截止频率
(2)FIR滤波器的窗函数设计法
窗函数法的基本思想是,由于滤波器的时间响应函数hd(n)是无限长的,不能用FIR滤 波器实现,所以,要截取hd(n)幅度较大的部分,舍弃hd(n)幅度较小部分来近似表示hd(n)。
截取的方法是选用 某一种窗函数和截取hd(n)的一段进行卷积以得到实际滤波器的相应h(n )。
窗函数不同,窗口宽度不同,实际频响会有较大区别。
如,加海明窗的频响曲线的通带 和阻带特性比矩性窗好;窗口宽度N的阶数高,也能提高滤波器频响性能,但实时信号处理 的时间会相应增加。
因此,应根据滤波参数要求确定选用窗函数的类型和阶数。
(3)逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常采用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
(4)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
2.IIR数字滤波器
IIR数字滤波器的系统函数是z的有理函数,可表示为 系统函数的设计就是要确定系数 或者零、极点 ,以使滤波器满足给定的性能要求。
这种设计方法:
(a)用模拟滤波器理论来设计数字滤波器。
在IIR数字滤波器的设计中较多的采用这种方法。
(b)用计算机辅助设计,优化技术设计。
即要求所设计的数字滤波器的输入x(n)等于x(t)的抽样信号x(nT)时,输出y(n)也恰好等于y(t)的抽样信号。
用模拟滤波器理论来设计数字滤波器——双线性变换法
双线性变换法的思想是:
将模拟滤波器的传递函数形式化为完全以积分器(1/s)构成的网络函数形式。
然后由数字网络来代替模拟积分器,从而整个滤波器网络都转化成了数字的。
双线性变换法的设计过程如下:
(1).由积分器构成的模拟滤波器的系统函数形式
(2).积分器的数字形式推导 对数字式积分器的差分方程两边进行Z变换,可得数字式积分器的传递函数
(3).当T足够小的时候,信流图当中的模拟积分器传递函数就可以由数字积分器传函代替。
从而得到性能与模拟滤波器相近数字滤波器。
(4).从而可得模拟滤波器的复频率与数字滤波器的复频率之间的关系
用双线性变换法来设计数字滤波器,只需将给出的模拟滤波器的系统函数Ha(s)当中的s替换为一个关于z成双线性关系的网络即可。
(5).令s=σ+jΩ,z=rejω 可得z平面与s平面的映射关系
双线性变换法 s à z即:
Z=(c+s)/(c-s)
讨论s平面的虚轴与z平面的单位圆之间的映射关系,令σ=0可得双线性变换法下模拟滤波器的角频率Ω与数字滤波器的角频率 ω之间的关系:
Tan(ΩT/2)≈ΩT/2
由关系式 可知Ω与ω之间有如图非线性关系,从而使所设计的数字滤波器的截止频率发生变化。
设计当中应式子:
Ω=ctan(w/2)把已经得到的数字滤波器截止频率ωc预先变换为Ω。
下面先叙述模拟滤波器的特性,再举例由已知的模拟滤波器传递函数来变换为相应的数字滤波器。
性能分析
(1)双线性变换法解决了冲激响应不变法的混叠失真问题。
(2)它是一种简单的代数映射关系,只要将此映射关系代入模拟滤波器系统函数Ha(s)中(对直接,级联,并联结构都适用)就得到数字滤波器的系统函数,设计十分方便。
(3)由于S平面到中介S1平面的频率映射关系是非线性的关系,虽然双线性变换法避免了混叠失真,却带来了非线性的频率失真。
(4)它要求模拟滤波器的幅频响应是分段常数型(一般的低通、高通、带通、带阻型滤波器的频率响不适于设计线性相位的数字滤波器。
(5)应特性)。
对于分段常数型滤波器,由于双线性变换法带来的频率失真,各分段边缘的临界频率点产生畸变,需要通过频率预畸加以校正。
2.FIR滤波器
下面以设计线性相位FIR滤波器为例介绍具体的设计方法。
线性相位FIR滤波器通常采用窗函数法设计。
窗函数法设计FIR滤波器的基本思想是:
根据给定的滤波器技术指标,选择滤波器长度N和窗函数ω(n),使其具有最窄宽度的主瓣和最小的旁瓣。
其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。
工程中常用的窗函数共有6种,即矩形窗、巴特利特(Bartlett)窗、汉宁(Hanning)窗、汉明(Hamming)窗、布莱克曼(Blackman)窗和凯塞(Kaiser)窗。
假设实际工程需要设计一个线性相位带通FIR滤波器指标如下:
fn=[1000,1200,3000,3200];
a=[0,1,0];
dev=[0.0005,0.1,0.0005];
阻带最小衰减100dB,通带最小衰减1dB再设采样频率fs=22050kHz,则根据阻带最小衰减来选择凯塞(Kaiser)窗,利用MATLAB的求阶函数和FIR滤波器的设计函数,可以快速地设计出所需的数字滤波器。
这两个设计函数如下:
[N,Wn,beta,ftype]=kaiserord(fn,a,dev,fs);
b=fir1(n,Wn,ftype,Kaiser(n+1,beta);
最后,利用的滤波器分析函数freqz分析所设计出的滤波器的幅频特性和相频特性,并用图形显示函数plot将它们显示出来。
三、具体实现过程
首先录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
下面对各步骤加以具体说明:
1.语音信号的采集
语音信号的采集是语音信号处理的基础。
语音信号处理的基础是对语音信号进行数字化,并采样存储。
利用Windows下的录音机,录制一段话音,时间在5s内。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样。
通过wavread函数的使用,理解采样频率、采样位数等概念。
采样频率:
44000hz
采样位数:
16位
2.语音信号的频谱分析
首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序如下:
Fs=8000;bite=16;
[y,Fs,bite]=wavread('D:
\MATLAB6p5\work\信号处理设计\yuyin.wav',[512102400]);
sound(y,Fs);
Y=fft(y,4096);
使用函数说明:
[y,FS]=wavread('filename',[N1,N2]);
%读取*.wav文件中从第N1采样点到N2采样点之间的样值序列
%返回y为样值序列,Fs为采样频率
sound(y,Fs);
%y为取值在[-1,1]取间的n行1的数字序列(单声道输出)
%对于立体声输出,y为取值在[-1,1]取间的n行2的数字序列
%Fs为设定的取样速率,一般声卡支持Fs的范围是5000Hz到441000Hz
3.设计数字滤波器和画出其频率响应
给出各滤波器的性能指标:
(1)低通滤波器性能指标 fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标 fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。
(3)带通滤波器性能指标 fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。
用窗函数法和双线性变换法设计上面要求的3种滤波器。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。
使用函数说明:
[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s')
%Wp是通带截止频率,Ws是阻带截止频率
%Rp是通带内波动(dB),Rs是阻带内最小衰减(dB),s代表模拟型
%返回n是Chebyshev1滤波器最底阶数,Wn是Chebyshev1滤波器截止频率
[b,a]=cheby1(n,Rp,Wn,'ftype')
%b为H(z)的分子多项式系数,a为H(z)的分母多项式系数
fir1函数:
该函数采用不同类型的窗函数(包括矩阵窗,Hanning窗,Hamming窗,Blackman窗等)设计具有分段常幅度特性的FIR滤波器,这样FIR滤波器具有严格的线性相位。
例如:
B=fir1(N,Wn,blackman(N+1))
在该命令中,N为设计的滤波器阶次,Wn为滤波器的归一化截止频率,且0 该函数利用Blackman窗函数设计N阶具有线性相位的低通FIR滤波器,滤波器系数存在于向量B中。 4. 用滤波器对信号进行滤波 要求学生用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt(x=fftfilt(b,y);)对信号进行滤波,IIR滤波器利用函数filter(x=filter(bz,az,y;))对信号进行滤波。 使用函数说明: Y=filter(Bz,Az,X) %filter函数利用设计的数字滤波器对数据进行滤波处理,滤波器系数存放于向量Az,Bz中 %X为待滤波的原始数据,Y为滤波后的输出数据 %Bz为滤波器H(Z)分子系数矩阵,Az为滤波器H(Z)分母系数矩阵 5.比较滤波前后语音信号的波形及频谱 在一个窗口同时画出滤波前后的波形及频谱。 其程序如下: [y,Fs,bite]=wavread('D: \MATLAB6p5\work\信号处理设计\yuyin.wav'); Y=fft(y,4096); x=filter(bz,az,y);%对原始语音信号滤波 X=fft(x,4096); subplot(221);plot(y);title('滤波前信号波形'); subplot(222);plot(abs(Y));title('滤波前信号频谱'); subplot(223);plot(x);title('滤波后信号波形'); subplot(224);plot(abs(X));title('滤波后信号频谱'); 6.回放语音信号 在Matlab中,函数sound可以对声音进行回放。 其调用格式: sound(x,fs,bits);可以感觉滤波前后的声音有变化。 7.设计系统界面 为了使编制的程序操作方便,需要设计处理系统的用户界面。 在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。 系统用户界面控制回调程序实现一个图形界面的动态和友好交互设计,最终是要通过图形界面中的控件对象的操作来完成,而这些操作必定是通过MATLAB中函数代码的执行来完成的。 这些函数代码的编制可以通过编写每个控件的回调函数来完成,而编写时可以把该控件的函数代码直接书写在“CallBack”中,也可以把函数代码放在一个自定义的M文件中。 而在“CallBack”中只将其文件名写上,当操作该控件时,系统会自动执行“CallBack”中所要求执行的内容。 无论是函数代码,还是以文件方式的函数代码。 根据本人的风格,本人设计的界面如图1-1所示: 图1-1图形界面 四.程序的调试和结果分析 完成了系统界面设计后,其次就是要通过编写控件的回调函数来实现不同控件的功能。 图形用户界面的功能主要通过控件响应用户的动作来完成,单击动作也就是选中控件的。 响应鼠标动作的方法通过编写回调函数来完成。 1.调试过程: 要从界面获取数据,故必须对各输入变量进行定义。 主要使用函数guidata,该函数主要用来在图形界面中存取或者获取用户数据。 在本人的设计中,总共定义了七个输入变量,分别是: 抽样频率Fs,通带截止频率Fp和Fp1,阻带截止频率Fh和Fh1,通带衰减Rp,阻带衰减Rs。 其定义如下: handles.Fs=str2double(get(hObject,'String')); guidata(hObject,handles); 在定义过程中用到了handles结构体,该结构中不仅包含了所有界面对象的Tag属性,通过Tag属性可以直接获取或者修改控件的属性,而且在handles结构中还可以添加用户自定义的需要在不同的回调函数之间共享的数据。 在各控件回调函数的声明下编写回调函数。 2.结果分析: 1)IIR数字低通滤波器 运行jiemian3.m文件,在界面中的滤波器类型和设计方法中进行选择,接着输入参数,再点击“设计滤波器”按钮,可获得所需要的滤波器。 在界面上,有“滤波前波形”和“滤波前频谱”两个按钮,点击可得到滤波前波形和频谱,还可听到滤波前的声音。 滤波器设计好了已经,点击“滤波后波形和频谱”按钮,可得到使用设计好的滤波器对原始语音信号滤波后的波形和频谱。 如图1-2所示: 输入参数时,要保证抽样频率大于信号最高频率的两倍。 比较滤波前后的声音,可以感觉到滤波后的声音比原始声音低沉一点,这是因为低通滤波器已经把高频部分滤掉;观察滤波后的频谱,滤波器已经滤掉高频部分,由于傅立叶变换造成周期延拓,因此,频谱右边部分是延拓后的低频部分。 图1-2IIR数字低通滤波器 图1-3IIR数字高通滤波器 2)IIR高通数字滤波器 设计步骤与IIR低通滤波器。 比较滤波前后的声音,滤波后的声音比较尖锐,这是因为经过滤波后只剩下高频部分,频谱也一样。 滤波后的波形和频谱如图1-3所示: 图1-4IIR数字带通滤波器 3)IIR带通数字滤波器 设计步骤与IIR低通滤波器。 滤波后的波形和频谱如图1-4所示: 比较滤波前后的声音,滤波后的声音既不尖锐也不低沉属于适中,这也是因为经过滤波器后把较低和较高的部分滤掉。 4)FIR底通数字滤波器 滤波后的波形和频谱如图1-5所示: 声音通过IIR和FIR滤波器后的波形与频谱基本一样,可见它们的滤波效果基本相同。 其代码如下: [y,fs]=wavread('D: \matlab\work\信号处理设计1\信号处理设计\yuyin.wav'); %sound(y,fs);%播放 figure (1); subplot(221); plot(y); title('滤波前信号波形'); xlabel('时间'); ylabel('幅值');图1-5FIR数字底通滤波器 subplot(222); plot(abs(y)); title('滤波前信号频谱'); fb=1000;fc=1200;s=100;Ap=1;fs=8000; [n,wn,beta,typ]=kaiserord([10001200],[10],[0.010.1],8000); B=fir1(n,wn,typ,kaiser(n+1,beta),'noscale'); figure (2); freqz(B,512,fs); x=fftfilt(B,y); X=fft(x); figure (1); subplot(223);plot(x);title('滤波后信号波形'); subplot(224);plot(abs(X)); title('滤波后信号频谱'); sound(x,fs); 5)FIR高通数字滤波器: 滤波后的波形和频谱如图1-6所示: 比较滤波前后的声音,滤波后的声音比较尖锐,这是因为经过滤波后只剩下高频部分。 频谱也是如此。 声音通过FIR滤波器后的波形及频谱成分都比通过IIR滤波器后的成分少,这是因为FIR是用窗函数设计的,加创限定了它们的范围。 其代码如下: [y,fs]=wavread('D: \matlab\work\信号处理设计1\信号处理设计\yuyin.wav'); %sound(y,fs);%播放 figure (1); subplot(221); plot(y); title('滤波前信号波形'); xlabel('时间');图1-6FIR数字高通滤波器 ylabel('幅值'); subplot(222); plot(abs(y)); title('滤波前信号频谱'); fb=5000;fc=4800;As=100;Ap=1; fs=8000;n=55;wo=0.3;dp=0.02; ds=0.008; B=fircls1(n,wo,dp,ds,'high'); figure (2); freqz(B,512,fs); x=fftfilt(B,y); X=fft(x); figure (1); subplot(223); plot(x);title('滤波后信号波形'); subplot(224); plot(abs(X));title('滤波后信号频谱'); sound(x,fs); 6)FIR带通数字滤波器: 滤波后的波形和频谱如图1-7所示: 比较滤波前后的声音,滤波后的声音既不尖锐也不低沉属于适中,这也是因为经过滤波器后把较低和较高的部分滤掉。 声音通过两个滤波器后的波形及频谱基本一样。 其代码如下: [y,fs]=wavread('D: \matlab\work\信号处理设计1\信号处理设计\yuyin.wav'); %sound(y,fs);%播放 figure (1);subplot(221); plot(y);title('滤波前信号波形'); xlabel('时间');ylabel('幅值'); subplot(222); plot(abs(y)); title('滤波前信号频谱'); fb=1200;fb2=3000; fc=1000;fc2=3200;图1-7FIR数字带通滤波器 As=100;Ap=1; fs=8000;w=[0.150.5]; B=fir1(40,w,'dc-1'); [H,W]=freqz(B); figure (2);freqz(B,y); %figure(3); %plot(abs(H)); x=fftfilt(B,y); X=fft(x); figure (1);subplot(223); plot(x);title('滤波后信号波形'); subplot(224);plot(abs(X)); title('滤波后信号频谱'); sound(x,fs); 五.总结 MATLAB真是一个很强大的工具。 它可以作为一个平台,承载知识和算法,那么核心的竞争力将是它实现的技术和产品.利用MATLAB的强大运算功能,基于MATLAB信号处理工具箱(Signal Processing Toolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。 在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。 从整个设计的过程,所在的滤波器都是用经典法来设计,低通滤波器滤去输入信号频率在1200hz以上的频率信号,带通滤波器滤去输入信号频率在1000hz以下和3200以上的频率信号,高通滤波器滤去输入信号频率在4800hz以下的频率信号。 通过滤波器的信号除去一部分我们不想要(影响有用信号)的数据量,在通信方面为后一部分的信号处理上减少一部分没有用的数据。 为通信业更快更好的发展,提供了一部分重要的技术。 总结这次课程设计的结果,收获很多很多。 可以说,在过去的大学三年里面,我还没有遇到一门课程使得我可以学到这么多的知识,同时,也提高了我的实践动手和综合分析问题能力。 之前,我们做过通信原理的课程设计,但是可以说,那根本算不上是设计,仅仅就是个仿真实验而已。 上次的课程设计,收获也不少,最起码我懂得了论文的撰写。 开始确定课程设计题目的时候,我还真的是一头雾水,由于又忙着考试,所以也没有放太多心细在设计上,一直到上个星期,全部的课程考试都结束了,我才开始我的设计路程。 时间过了几天,都没有什么进展,就只把几个滤波器做了出来及滤波后的波形与频谱做了出来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 122 广西 工学院 语音 信号 处理 滤波 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)