数字滤波器设计及在语音信号分析中的应用.docx
- 文档编号:12204941
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:25
- 大小:220.84KB
数字滤波器设计及在语音信号分析中的应用.docx
《数字滤波器设计及在语音信号分析中的应用.docx》由会员分享,可在线阅读,更多相关《数字滤波器设计及在语音信号分析中的应用.docx(25页珍藏版)》请在冰豆网上搜索。
数字滤波器设计及在语音信号分析中的应用
课程设计报告
课程名称数字信号处理
课题名称数字滤波器设计及在语
音信号分析中的应用
专业通信工程
班级
学号
姓名
指导教师
《数字信号处理》课程设计指导
一、课程设计的性质与目的
《数字信号处理》课程是通信专业的一门重要专业基础课,是信息的数字化处理、存储和应用的基础。
通过该课程的课程设计实践,使学生对信号与信息的采集、处理、传输、显示、存储、分析和应用等有一个系统的掌握和理解;巩固和运用在《数字信号处理》课程中所学的理论知识和实验技能,掌握数字信号处理的基础理论和处理方法,提高分析和解决信号与信息处理相关问题的能力,为以后的工作和学习打下基础。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
二、课程设计题目
题目1:
数字滤波器设计及在语音信号分析中的应用。
1、设计步骤:
(1)语音信号采集
录制一段课程设计学生的语音信号并保存为文件,要求长度不小于10秒,并对录制的信号进行采样;录制时可以使用Windows自带的录音机,或者使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为便于比较,需要在安静、干扰小的环境下录音。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
(2)语音信号分析
使用MATLAB绘出采样后的语音信号的时域波形和频谱图。
根据频谱图求出其带宽,并说明语音信号的采样频率不能低于多少赫兹。
(3)含噪语音信号合成
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:
①白噪声;②单频噪色(正弦干扰);③多频噪声(多正弦干扰);④其它干扰,可设置为低频、高频、带限噪声,或Chirp干扰、冲激干扰。
绘出叠加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
(4)数字滤波器设计及滤波
给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:
通带截止频率wp=0.25*pi,阻通带截止频率ws=0.3*pi;通带最大衰减Rp=1dB;阻带最小衰减Rs=15dB,每个题目至少设计出5个用不同方法的不同类型滤波器。
①:
采用窗函数法与等波纹法分别设计FIR滤波器来对叠加噪声前后的语音信号进行滤波处理,绘出滤波器的频域响应,绘出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;在相同的性能指标下比较各方法的滤波效果,并从理论上进行分析(或解释)。
②:
采用双线性变换法与脉冲响应不变法,分别利用不同的原型低通滤波器(Butterworth型与切比雪夫I型)来设计IIR滤波器,绘出滤波器的频域响应;并用这些数字滤波器对含噪语音信号分别进行滤波处理,比较不同方法下设计出来的数字滤波器的滤波效果,并从理论上进行分析(或解释)。
(5)回放语音信号
对滤波后的语音信号进行回放,感觉滤波前后语音信号的变化。
(6)设计一个语音信号分析与处理系统界面(选作)
利用MATLAB的界面设计功能,设计一个MATLAB环境下的人机交互界面,完成上述滤波器的设计及滤波过程,要求能够接收输入的设计参数,查看设计结果及滤波结果。
三、课程设计要求
1、在一周内学生须上机16小时以上,程序调试完后,须由指导老师在机器上检查运行结果,经教师认可后的源程序可通过打印机输出,并请教师在程序清单上签字。
2、课程设计报告内容和格式:
设计题目,设计的详细步骤,设计过程中的结果、图形等,设计总结。
3、每组每人必须独立完成,成绩的考核按设计结果、答辩成绩及课程设计报告来综合评定。
成绩分为优、良、中、及格、不及格五级分评定。
4、指导教师:
彭祯罗敬。
四、设计进度安排
通信工程1181:
1周周一上午,E-410,布置课程设计任务,学生上机,按任务要求进行课程设计;分组选题;
1周周二上午,E-410,学生上机,按任务要求进行课程设计;分组选题;
1周周三上午,E-410,学生上机,按任务要求进行课程设计;分组选题;
1周周四上午,E-410,学生任务完成,答辩并提交课程设计报告。
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录
1.数字滤波器设计及在语音信号分析中的应用6
1.1课程设计的性质与目的6
1.2功能要求6
1.3基本设计思想6
2.设计内容与步骤及结果分析6
2.1设计步骤:
6
2.2设计流程图及原理图6
2.2.1设计流程图6
2.2.2原理图7
2.3系统各功能模块的实现8
2.3.2语音信号的时频分析9
2.3.3语音信号加噪与频谱分析10
2.3.4数字滤波器设计及滤波11
2.3.5比较滤波前后语音信号的波形及频谱17
2.3.6回放语音信号20
3.实验总结20
4.体会21
评分表22
1.数字滤波器设计及在语音信号分析中的应用
1.1课程设计的性质与目的
《数字信号处理》课程是通信专业的一门重要专业基础课,是信息的数字化处理、存储和应用的基础。
通过该课程的课程设计实践,使学生对信号与信息的采集、处理、传输、显示、存储、分析和应用等有一个系统的掌握和理解;巩固和运用在《数字信号处理》课程中所学的理论知识和实验技能,掌握数字信号处理的基础理论和处理方法,提高分析和解决信号与信息处理相关问题的能力,为以后的工作和学习打下基础。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
1.2功能要求
利用MATLAB的界面设计功能,设计一个MATLAB环境下的人机交互界面,完成上述滤波器的设计及滤波过程,要求能够接收输入的设计参数,查看设计结果及滤波结果。
1.3基本设计思想
录制一段课程设计学生的语音信号并保存为文件,要求长度不小于10秒,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用matlab设计数字滤波器,并画出滤波器的频率响应;用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号进行比较。
2.设计内容与步骤及结果分析
2.1设计步骤:
二、语音信号采集
三、语音信号分析
四、含噪音信号合成
五、数字滤波器设计及滤波
六、回放语音
2.2设计流程图及原理图
2.2.1设计流程图
否
是
图2-1流程图
2.2.2原理图
图2-2原理图
2.3系统各功能模块的实现
2.3.1语音信号采样录音
采样器的作用是把连续信号变为脉冲或数字序列。
图中示出了一个连续信号f(t)经采样器采样后变为离散信号的过程
上图中连续信号f(t)经采样器采样后变为离散信号,S(t)为周期性窄脉冲信号,fs(t)为采样后的离散信号,它用下式来表征:
fs(t)=f(t)s(t)
采样信号的频率特性为:
如果|F*(jω)|中各个波形不重复搭接,相互间有一定的距离(频率),即若:
Ws>=Wmax或Ws>=2Wmax
即采样定理可叙述如下:
如果采样周期满足下列条件,即:
Ws=2*pi/T>2Wmax
式中ωmax为连续信号f(t)的最高次谐波的角频率。
则采样信号f*(t)就可以无失真地再恢复为原连续信号f(t)。
需要指出的是,采样定理只是在理论上给出了信号准确复现的条件。
利用PC机上的声卡和WINDOWS操作系统可以进行数字信号的采集。
将话筒输入计算机的语音输入插口上,启动录音机。
按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。
点击放音按钮,可以实现所录音的重现。
以文件名“BuzzingBee.wav'”保存入文件中。
可以看到,文件存储器的后缀默认为.wav,这是WINDOWS操作系统规定的声音文件存的标准。
2.3.2语音信号的时频分析
利用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中。
接下来,对语音信号OriSound.wav进行采样。
[y,fs,nbits]=wavered(‘BuzzingBee’);%把语音信号加载入Matlab仿真软件平中,然后,画出语音信号的时域波形,再对语音信号进行频谱分析。
MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
Xk=fft(xn,N)
参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。
,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
其程序如下:
[y,fs,nbits]=wavread('BuzzingBee.wav');
sound(y,fs,nbits);
N=length(y);
Y=fft(y,N);
subplot(2,1,1);
plot(y);title('原始信号波形');
subplot(2,1,2);
plot(abs(Y));
title('原始信号频谱')
图2-3原始信号频谱与波形图
2.3.3语音信号加噪与频谱分析
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('BuzzingBee.wav');
N=length(y);%求出语音信号的长度
Si=awgn(y,10);%随机函数产生噪声
sound(Si);
subplot(2,1,1);
plot(Si);title('加噪语音信号的时域波形');
S=fft(Si);%傅里叶变换
subplot(2,1,2);
plot(abs(S));
title('加噪语音信号的频域波形');
图2-4加噪后的语音信号频谱图及波形图
2.3.4数字滤波器设计及滤波
1.滤波器设计原理
设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR滤波器的特征是,具有无限持续时间冲激响应。
这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。
FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。
IIR滤波器和FIR滤波器的设计方法完全不同。
IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。
其设计步骤是:
先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。
FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。
对于线性相位滤波器,经常采用FIR滤波器。
对于数字高通、带通滤波器的设计,通用方法为双线性变换法。
可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。
具体设计步骤如下:
(1)确定所需类型数字滤波器的技术指标。
(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/Ttan(0.5ω)
(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。
(4)设计模拟低通滤波器。
(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。
(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器,即:
h(n)=hd(n)*W(n)
我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。
为了克服之一缺点,可以采用双线性变换法。
下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:
(1)确定数字低通滤波器的技术指标:
通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。
(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。
(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。
如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。
下面我们着重介绍用窗函数法设计FIR滤波器。
窗函数设计法是一种通过截断和计权的方法是无限长非因果序列成为有线长脉冲响应序列的设计方法,通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。
设计步骤如下:
(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。
先按照阻带衰减选择窗函数类型。
原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。
(2)构造希望逼近的频率响应函数。
(3)计算实际滤波器的单位脉冲响应h(n),h(n)即为所设计FIR滤波器系数向量b(n)。
(4)加窗得到设计结果。
2.FIR和IIR数字滤波器的主要程序
1 IIR数字滤波器:
(1)流程图
(2)巴特沃斯低通滤波器
MATLAB提供了buttap函数来设计N阶归一化巴特沃斯模拟原型,滤波器,调用格式为
[z0,p0,k0]=buttap(N)
只要输入阶数N,该函数可返回零点和极点数组z0和p0以及增益k0.当需要归一化的滤波器时就要用wc乘以p0,极点有N个,所以分子也要乘以wc^n,由于没有零点就用wc^n乘以k0,以得到非归一化的p和k。
这里要用到阶数N和频率wc,可以用MATLAB提供的另一个函数buttord计算获得。
该函数的调用格式为
[N,wc]=buttord(wp,ws,Rp,Rs,'s');
其中,wp表示通带截止频率。
Ws表示阻带截止频率,Rp表示通带最大衰减,Rs表示阻带最小衰减,s表示设计模拟滤波器。
返回参数N为滤波器的阶数,wc为边缘频率。
原程序如下
[y,Fs,nbits]=wavread('BuzzingBee.wav');
wpz=0.4;
wsz=0.6;
wp=2*Fs*tan(wpz*pi/2);
ws=2*Fs*tan(wsz*pi/2);
Rp=1;Rs=60;
[N,wc]=buttord(wp,ws,Rp,Rs,'s');
[B,A]=butter(N,wc,'s');
[Bz,Az]=bilinear(B,A,Fs);
[h,w]=freqz(Bz,Az);
plot(w*Fs*0.5/pi,abs(h));
legend('用butter设计');
图2-5巴特沃斯滤波器
2 FIR滤波器:
(1)窗函数法设计FIR滤波器的MATLAB实现
窗函数设计FIR滤波器的设计原理是令希望设计的滤波器的传输函数是Hd(e^jw),hd(n)是与其对应的单位脉冲响应。
一般情况如下。
由Hd(e^jw)求出hd(n),然后由z变换求出滤波器的系统函数。
但是通常Hd(e^jw)在边界频率处有不连续点,这似的hd(n)是无限长的非因果序列,所以实际是不能实现的。
为了构造一个长度为N的线性相位滤波器,可以将hd(n)截取一段来相似;并且根据线性相位的特点,需要保证截取后的序列关于(N-1)/2对称。
设截取的一段为h(n),则:
h(n)=hd(n)*wr(n)
其中
wR(n)={1,0<=n<=N-1;0,其他}
wR(n)称为矩形窗函数。
当hd(n)的对称中心点取值为(N-1)/2时,截取的一段(N-1)/2对称,这样就可以保证所涉及的滤波器具有线性相位。
其源程序为:
[y,Fs,nbits]=wavread('BuzzingBee.wav');
fp=120;fs=140;Rp=1;Rs=60;
wp=0.25*pi;ws=0.3*pi;
Bt=ws-wp;
N=ceil(11*pi/Bt)
wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,blackman(N));
[H,f]=freqz(hn,1,1024,Fs)
figure
(1)
subplot(211);stem(hn);title('(a)h(n)波形')
axis([0,N-1,min(hn),max(hn)]);xlabel('n');ylabel('h(n)');
subplot(212);plot(f,20*log10(abs(H)/max(abs(H))));grid
title('(b)幅度响应');xlabel('f(Hz)');ylabel('分贝数')
图2-6窗函数设计滤波器
(2)最优设计法
等波纹逼近法师一种优化设计法,它克服了窗函数设计法和频率采样法的缺点,使最大误差最小化,并是误差在整个逼近频段上均匀分布。
用等波纹逼近法设计的FIR滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。
这种设计法使最大误差均匀分布,所以设计的滤波器性价比最高。
阶数相同时,这种设计使滤波器的阶数最低。
设希望设计的滤波器的幅频响应是Hd(w),实际设计的滤波器的幅频响应是Hg(w)。
其加权误差用下式表示:
E(w)=W(w)[Hd(w-Hg(w))。
W(w)称为误差加权函数,用来控制不同频段(一般指通带和阻带)的逼近精度,W(w)和N由滤波器设计指标(Rp、As以及过渡带宽度)确定。
等波纹最佳逼近基于切比雪夫逼近,在通带和阻带以|E(w)|的最大值最小化为准则,采用Remez多重交换迭代算法求解滤波器系数h(n)。
所以W(w)取值越大的频段逼近精度越高,开始设计时应该根据逼近精度要求确定W(w),在Remez多重交换迭代中W(w)是确知函数。
用等波纹最佳逼近法求滤波器阶数N和误差加权函数W(w)是,要求给出滤波器通带和阻带的振荡波纹幅度。
利用等波纹最佳逼近准则设计线性相位FIR数字滤波器数学模型的检录及其求解算法的推导复杂,求解计算必须借助计算机,幸好滤波器设计专家已经开发出MATLAB工具箱函数remez,只要简单的调用这个函数就可以完成线性相位FIR数字滤波器的等波纹最佳逼近法。
其源程序如下:
[y,Fs,nbits]=wavread('BuzzingBee.wav');
fp=150;fs=200;Rp=1;Rs=70;
fb=[120,140];m=[10];
dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1)10^(-Rs/20),];
[n,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(n,fo,mo,W);
[H,f]=freqz(hn,1,1024,Fs);
figure
(1)
subplot(211);stem(hn);title('(a)h(n)波形')
axis([0,N-1,min(hn),max(hn)]);xlabel('n');ylabel('h(n)');
subplot(212);plot(f,20*log10(abs(H)/max(abs(H))));grid
title('(b)幅度响应');xlabel('f(Hz)');ylabel('分贝数')
图2-7等波纹滤波器
2.3.5比较滤波前后语音信号的波形及频谱
%*************************低通滤波器*****************************
源程序如下
[y,Fs,nbits]=wavread('BuzzingBee.wav');
n=length(y);
Si=awgn(y,10);
S=fft(Si);
z11=filter(Bz,Az,Si);
sound(z11);
m11=fft(z11);
subplot(2,2,1);
plot(abs(S),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m11));
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(Si);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z11);
title('滤波后的信号波形');
图2-8
%*************************窗函数设计滤波器*****************************
源程序如下:
M=length(y);T=1/Fs;Tp=M*T;
t=0:
T:
(M-1)*T;k=0:
M-1;f=k/Tp;
yt=filter(hn,1,Si);Y=fft(yt,M);figure
(2);
sound(yt);
subplot(221);plot(t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字滤波器 设计 语音 信号 分析 中的 应用