基于双线性变换法的IIR数字低通滤波器Word下载.docx
- 文档编号:19743336
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:10
- 大小:36.42KB
基于双线性变换法的IIR数字低通滤波器Word下载.docx
《基于双线性变换法的IIR数字低通滤波器Word下载.docx》由会员分享,可在线阅读,更多相关《基于双线性变换法的IIR数字低通滤波器Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;
它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。
本设计先完成语音信号的采集,然后设计IIR低通滤波器对采集到的语音信号进行滤波处理,分析语音信号各频率段的特性。
并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计滤波器,对加噪信号进行滤波,恢复原信号。
把原始语音信号、加噪语音信号和滤波后的信号进行时域变换和频域变换,画出它们的时域波形和频域波形图。
2基本原理
2.1语音信号概述
语言是人类创造的,是人类区别于其他地球生命的本质特征之一。
人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。
语音学和数字信号处理的交叉结合便形成了语音信号处理。
语音信号处理是建立在语音学和数字信号处理基础之上的,对语音信号模型进行分析、存储、传输、识别和合成等方面的一门综合性学科。
2.2数字滤波器原理
2.2.1数字滤波器的概念
若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。
数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。
数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。
它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。
2.2.2数字滤波器的分类
数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。
(1)根据单位冲激响应h(n)的时间特性分类
无限冲激响应(IIR)数字滤波器
有限冲激响应(FIR)数字滤波器
(2)根据实现方法和形式分类
递归型数字滤波器
非递归型数字滤波器
快速卷积型
(3)根据频率特性分类
低通数字滤波器、高通数字滤波器、带通数字波器、带阻数字滤波器
3总体设计思想
3.1语音信号的采集
Windows自带了一个录音机程序(简称录音机),通过它可以驱动声卡采集、播放和简单处理语音信号。
语音信号的采集可以用麦克风直接录制人的语音,也可以通过音频线或者MIDI线将收音机、电视机或磁带录机中的语音信号采集到计算机中。
在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。
加速或减速的改变可以完成变音功能,反转可以达到对声音文件保密的功能。
本设计用是收音机接到电脑上用录音机录的,保存起来以备处理。
3.2语音信号处理工具的选择
语音信号的进一步处理分析工作选用了matlab平台。
MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善MATLAB产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。
在编程效率、程序可读性、可移植性和可扩充性上matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。
另外matlab为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受到了越来越多的用户的欢迎
Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,matlab远优越于其他的高级编程语言。
Matlab语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。
但是,和其他的高级语言相比,matlab程序的执行速度较慢。
在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用matlab开发就不存在此类问题了。
3.3数字滤波器的设计
本设计在matlab平台上,设计了IIR滤波器各。
用以对语音原始信号及加噪的语音信号进行滤波,重点对加噪信号进行了滤波。
对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。
设计IIR数字滤波器的常用方法是从模拟滤波器来设计数字IIR滤波器。
模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。
再将模拟滤波器转换为数字滤波器,其转换方法有冲激响应不变法和双线性Z变换法。
一般,当着眼于滤波器的时域瞬态响应时,采用脉冲响应不变法较好,而其它情况下,对于IIR的设计,大多采用双线性变换法。
4语音信号分析和滤波处理
4.1语音信号的采集
把语音信号并保存为.wav文件,长度小于30秒,并对语言信号进行采样;
录制的软件可以使用Windows自带的录音机,或者也可以使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为了方便比较,需要在安静、无噪音、干扰小的环境下录。
4.2语音信号的读入与打开
在MATLAB中,[y,fs,bits]=wavread('
Blip'
[N1N2]);
用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取的值从N1点到N2点的值。
sound(y);
用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号的波形频谱图。
[x,fs,bits]=wavread('
1.wav'
);
sound(x);
X=fft(x,4096);
magX=abs(X);
angX=angle(X);
subplot(221);
plot(x);
title('
原始信号波形'
subplot(222);
plot(X);
title('
原始信号频谱'
subplot(223);
plot(magX);
原始信号幅值'
subplot(224);
plot(angX);
原始信号相位'
4.3语言信号处理
4.3.1语音信号分析
用MATLAB绘制出语音信号的时域波形图和原始语音信号的频率响应图和原始语音信号的FFT频谱图。
程序设计如下:
fs=22050;
%语音信号采样频率为22050
sound(x,fs,bits);
%播放语音信号
y1=fft(x,1024);
%对信号做1024点FFT变换
f=fs*(0:
511)/1024;
figure
(1)
plot(x)%做原始语音信号的时域波形图
原始语音信号时域图'
xlabel('
timen'
ylabel('
fuzhin'
figure
(2)
freqz(x)%绘制原始语音信号的频率响应图
频率响应图'
)
figure(3)
plot(f,abs(y1(1:
512)));
原始语音信号频谱'
Hz'
fudu'
4.3.2含噪语音信号的合成
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:
(1)单频噪色(正弦干扰);
(2)高斯随机噪声。
绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
程序代码如下:
ding.wav'
%读取语音信号的数据,赋给变量x
sound(x)
t=0:
1/22050:
(size(x)-1)/22050;
x1=rand(1,length(x))'
;
%产生一与x长度一致的随机信号
x2=x1+x;
(size(x)-1);
%加入正弦噪音
Au=0.3;
d=[Au*sin(6*pi*5000*t)]'
x2=x+d;
sound(x2);
subplot(2,1,1)
plot(x)%做原始语音信号的时域图形
原语音信号时域图'
subplot(2,1,2)
plot(x2)%做原始语音信号的时域图形
加高斯噪声后语音信号时域图'
y2=fft(x2,1024);
plot(abs(y1))
plot(abs(y2))
加噪语音信号频谱'
4.4滤波器的设计
对加入高斯随机噪声和正弦噪声的语音信号进行滤波。
用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。
%sound(x)
%随机噪声合成
x2=rand(1,length(x))'
y=x+x2;
%加入正弦噪声
d=[Au*sin(2*pi*500*t)]'
y=x+d;
fp=1000;
fs=1200;
Ap=1;
As=100;
Fs=22050;
Ts=1/Fs;
wp=2*pi*fp;
%将模拟指标转换成数字指标
ws=2*pi*fs;
[N,Wn]=buttord(wp,ws,Ap,As,'
s'
%选择滤波器的最小阶数
[Z,P,K]=buttap(N);
%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az);
%绘制频率响应曲线
plot(W*Fs/(2*pi),abs(H))
grid
f1=filter(bz,az,y);
plot(t,y)%画出滤波前的时域图
滤波前的时域波形'
plot(t,f1);
%画出滤波后的时域图
滤波后的时域波形'
sound(f1);
%播放滤波后的信号
F0=fft(f1,1024);
y2=fft(y,1024);
subplot(2,1,1);
plot(f,abs(y2(1:
%画出滤波前的频谱图
滤波前的频谱'
fuzhi'
F1=plot(f,abs(F0(1:
%画出滤波后的频谱图
滤波后的频谱'
程序运行可以播放滤波前面的语音信号,对比滤波前面的语音效果,得到的结果分别图4-1和图4-2所示:
图4-1
图4-2
5结论
在本次课程设计中,经过多次的运用matlab编程,加深了对matlab语言的认识。
同时通过通过设计双线性变换法球IIR数字低通滤波器的设计又一次的加深了对以前知识的理解。
以前在老师您将这方面的知识时听的不是很懂,经过这次的课程设计,自己在这方面的认识又进入了一个新的境界!
同时经过这次的课程设计,让我深刻的认识到在做课程设计时,需要的是团队精神,光靠一个人是很难完成这项任务。
因为在写编程时,有时候一个小小的错误一个人是很难发现的。
大家一起看时很容易的就发现了!
通过我们大家的共同努力,我们很快的完成了本次的课程设计,并且验收合格。
参考文献
1、从玉良.数字信号处理原理及其MATLAB实现[M].北京:
电子工业出版社.2009.7
2、胡广书.数字信号处理理论、算法与实现[M].北京:
清华大学出版社.2003,8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 双线 变换 IIR 数字 滤波器
![提示](https://static.bdocx.com/images/bang_tan.gif)