Matlab 语音信号处理
摘要
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab 重要应用的领域之一。
本设计通过下载一段语音,对其进行了时域分析,频谱分析, 分析语音信号的特性。并应用matlab 平台对语音信号除去噪声,进一步设计三种滤波器即高通滤波器、低通滤波器、带通滤波器,基于洪泽三种滤波器设计原理,用窗函数法设计出这三种滤波器,然后含加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放含噪语音信号和去噪语音信号,对比研究了IIR 滤波器和FIR 滤波器在信号处理尤其是信号滤波去噪方面的特性和应用。论文从理论和实践上比较不同数字滤波器的滤波效果。
关键字:Matlab ;语音信号;信号处理;傅里叶变换;滤波器
The Design of Analysis Voice Signal
Abstract
Speech signal processing is to study the use of digital signal processing technology and knowledge of the voice signal voice processing of the emerging discipline is the fastest growing areas of information science one of the core technology. Transmission of information through the voice of humanity's most important, most effective, most popular and most convenient form of exchange of information..
Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering, Fourier transform, when domain and frequency domain analysis, sound playback and a variety of map rendering, and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis and visualization of signals, makes computer interaction more convenient . Matlab Signal Processing is one of the important areas of application.
The design of mobile phone collection a noisy speech, has carried on the analysis in time domain, frequency spectrum analysis, analysis of the characteristics of speech signal. And application of the MATLAB platform to the voice signal to remove noise, the further design of three kinds of filter is a high-pass filter, low-pass filter, bandpass filter, based on the Hongze three kinds of filter design, window function method to design the three kinds of filter, and then with the original speech signal filtering. Finally the comparison before and after filtering the speech signal in time domain and frequency domain, the playback noise speech signal denoising and the voice signal, a comparative study of the IIR filter and a FIR filter in signal processing especially for signal denoising in terms of the characteristics and application of. The theory and practice from the comparison of different digital filtering effect.
Keywords: Matlab; speech signal; signal processing; FFT; filter
目录
摘要 .................................................................................. I Abstract ............................................................................. II
第一章绪论 ............................................................................ 1
1.1课题研究的背景 ................................................................. 1
1.2国内外研究状况 ................................................................. 1
1.3本文的主要工作及研究步骤 ....................................................... 2
1.3.1本文的主要工作 ........................................................... 2
1.3.2论文的研究步骤 ........................................................... 2
第二章语音信号处理的总体方案 . .......................................................... 4
2.1运行环境及系统的基本要求 ....................................................... 4
2.1.1运行的环境 ............................................................... 4
2.1.2系统的基本要求 ........................................................... 4
2.2语音信号相关调用函数介绍 ..................................................... 4
2.2.1 Wavread函数介绍 ......................................................... 4
2.2.2其他相关函数介绍 ......................................................... 5
第三章语音信号处理的基本知识 . .......................................................... 6
3.1语音的录入和打开 ............................................................... 6
3.2采样位数和采样频率 ............................................................. 6
3.3时域信号FFT 分析 . ............................................................. 6
第四章 语音信号的采集.................................................................. 7
4.1语音信号的采集 ................................................................. 7
4.2语音信号的频谱分析 ............................................................. 8
第五章 数字滤波器的设计和画出其频率响应 . .............................................. 10
5.1三种滤波器的性能指标 .......................................................... 10
5.2IIR 滤波器与FIR 滤波器的性能比较 ............................................... 10
5.3设计FIR 滤波器 ................................................................ 11
5.3.1FIR 低通滤波器设计 ....................................................... 11
5.3.2FIR 高通滤波器设计 ....................................................... 12
5.3.3FIR 带通滤波器的设计 ..................................................... 13
5.4设计IIR 滤波器 ................................................................ 14
5.4.1IIR 低通滤波器的设计 ..................................................... 14
5.4.2IIR 高通滤波器设计 ....................................................... 15
5.4.3IIR 带通滤波器设计 ....................................................... 17
第六章 语音信号的滤波................................................................. 19
6.1语音信号滤波的流程 ............................................................ 19
6.2对语音信号滤波的仿真 .......................................................... 19
6.2.1滤波前后的时域对比 ...................................................... 19
6.2.2滤波前后的频域对比 ...................................................... 21
第七章总结 ........................................................................... 25
参考文献 ............................................................................. 26
致谢 .................................................................................. 1
附录: ................................................................................ 1
第一章绪论
1.1课题研究的背景
通过语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。语言是人类持有的功能,声音是人类常用的工具,是相互传递信息的最主要的手段。因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。让计算机能听懂人类的语言,是人类自计算机诞生以来梦寐以求的想法。
随着计算机越来越向便携化方向发展,随着计算环境的日趋复杂化,人们越来越迫切要求摆脱键盘的束缚而代之以语音输人这样便于使用的、自然的、人性化的输人方式。作为高科鼓应用领域的研究热点,语音信号采集与分析从理论的研究到产品的开发已经走过了几十个春秋并且取得了长足的进步。它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理.工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。可见,语音信号采集与分析的研究将是一项极具市场价值和挑战性的工作。我们今天进行这一领域的研究与开拓就是要让语音信号处理技术走人人们的日常生活当中,并不断朝更高目标而努力。
语音信号采集与分析之所以能够那样长期地、深深地吸引广大科学工作者去不断地对其进行研究和探讨,除了它的实用性之外,另一个重要原因是,它始终与当时信息科学中最活跃的前沿学科保持密切的联系.并且一起发展。语音信号采集与分析是以语音语言学和数字信号处理为基础而形成的一门涉及面很广的综合性学科,与心理、生理学、计算机科学、通信与信息科学以及模式识别和人工智能等学科都有着非常密切的关系。对语音信号采集与分析的研究一直是数字信号处理技术发展的重要推动力量。因为许多处理的新方法的提出,首先是在语音信号处理中获得成功,然后再推广到其他领域。
1.2国内外研究状况
早在一两千年前,人们便对语言进行了研究。由于没有适当的仪器设备,长期以来,一直是由耳倾听和用口模仿来进行研究。因此,这种语言研究常被称为“口耳之学”,所以对语音只是停留在定性的描写上。
语音信号处理真正意义上的研究可以追溯到1876年贝尔电话的发明,该技术首次
使用声电、电声转换技术实现了远距离的语音传输。1939年提出并研制成功的第一个声码器,从此奠定了语音产生模型的基础。这一发明在语音信号处理领域具有划时代的意义。19世纪60年代,亥姆霍兹应用声学方法对元音和歌唱进行了研究,从而奠定了语言的声学基础。20世纪40年代,一种语言声学的专用仪器—语谱图仪问世了。它可以把语音的时变频谱用语图表示出来,从而得出了“可见语言”。1948年美国Haskins 实验室研制成功的语音回放机,该仪器可以把手工绘制在薄膜片上的语谱图自动转换成语音,并进行语音合成。20世纪50年代队语言产生了系统的论述。随着计算机的出现,语音分析工作,得以在电子计算机上进行。在此基础上,语音信号处理的研究工作得到了计算机技术的帮助,取得了突破性的进展。
语音信号处理作为一个重要的研究领域,已经有很长的研究历史。但是它的快速发展可以说是从1940年前后Dudley 的声码器和Potter 等人的可见语音开始的;20世纪60年代中期形成的一系列数字信号处理方法和技术,如数字滤波器、快速傅立叶变换等成为语音信号数字处理的理论和技术基础; 到了80年代,由于矢量量化、隐马尔可夫模型和人工神经网络等相继被应用于语音信号处理,并经过不断改进与完善,使得语音信号处理技术产生了突破性的进展。进入90年代以来,语音信号处理在实用化方面取得了许多实质性的进展。一方面,对声学语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别实用化的需要,讲者自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题倍受关注。
1.3本文的主要工作及研究步骤
1.3.1本文的主要工作
本文简要介绍了语音信号采集与分析的发展史以及语音信号的特征、采集与分析方法,并通过手机录制自己的一段声音,运用Matlab 进行仿真分析,最后对于声音中的噪声进行滤波处理,比较滤波前后的变化以及介绍语音信号的特点与采集,仿真主要是验证奈奎斯特定理,对语音信号进行时域、频域上的分析,率谱,是对语音信号的综合和分析,包括语音信号的调制和滤波。
1.3.2论文的研究步骤
1.理论依据
根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,
采样定理;时域信号的FFT 分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。
2.信号采集
采集语音信号,并对其进行FFT 频谱分析,画出信号的时域波形图和频谱图。
3.构造受干扰信号并对其进行FFT 频谱分析
对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行FFT 频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。
4.数字滤波器设计
根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。
5.信号处理
用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行FFT 频谱分析。画出处理过程中所得各种波形及频谱图。
对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号 的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。
1.4本文使用的软件Matlab 介绍
MATLAB 是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分[4]。MATLAB 在现实中应用很广泛,如今随处可见,在各个领域都是有广泛的使用。
MATLAB 是矩阵实验室(Matrix Laboratory)的简称,和Mathematica 、Maple 并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB 来解算问题要比用C ,FORTRAN 等语言完相同的事情简捷得多,并且mathwork 也吸收了像Maple 等软件的优点, 使MATLAB 成为一个强大的数学软件。在新的版本中也加入了对C ,FORTRAN ,C++,JAVA 的支持。可以直接调用, 用户也可以将自己编写的实用程序导入到MATLAB 函数库中方便自己以后调用,此外许多的MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
第二章语音信号处理的总体方案
2.1运行环境及系统的基本要求
2.1.1运行的环境
运行环境主要介绍了硬件环境和软件环境。
硬件环境:
(1)处理器:Inter Core2 T6400
(2)内存:2G
(3)硬盘空间:320GB 或更高
(4)显卡:SVGA 显示适配器
软件环境:
操作系统:WindowXP
开发环境主要介绍了本系统采用的操作系统、开发语言。
(1)操作系统:WindowsXP
(2)开发环境:Matlab 7.0
2.1.2系统的基本要求
本文是用Matlab 对含噪的的语音信号同时在时域和频域进行滤波处理和分析, 同时对该语音信号通过滤波器出去噪声,设计出三种滤波器,得出图形后一一比较实现语音信号的处理分析。
2.2语音信号相关调用函数介绍
2.2.1 Wavread函数介绍
选取一段语音信号,然后在matlab 软件平台下,利用wavread 函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread 函数,理解采样频率、采样位数等概念。
wavread 函数调用格式:
y=wavread(file ),读取file 所规定的wav 文件,返回采样值放在响亮y 中。
[y,fs,nbits]=wavread(file),采样值放在向y 中,f s 表示采样频率(Hz ),nbits 表示采样位数。
y=wavread(file ,N ),读取前N 点的采样值放在向量y 中。
y=wavread(file ,[N 1, N 2]),读取从N 1到N 2点的采样值放在向量y 中。 对语音信号04.wav 进行采样其程序如下:
[y,fs,nbits]=wavread(‘larry ’)
其中:
fs =44100;(fs=44100为双声道设置频率,fs=22050为单声道设置频率) nbits =16;
y=wavread(file ,[20000,65000])
2.2.2其他相关函数介绍
(1). 函数fftfilt 的调用
函数fftfilt 的调用格式为
y=fftfilt(b,x)
该格式是利用基于FFT 的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR 滤波器有效。该函数是通过向量b 描述的滤波器对x 数据进行滤波。
(2). 函数sound 的调用
函数sound 可以对声音进行回放。其调用格式为:
Sound(x,fs,bits)
(3). 函数filter 的调用
函数filter 的调用格式为
y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR 滤波器,也可以用于FIR 滤波器。其中向量b 和a 分别表示系统函数的分子、分母多项式的系数,若a =1,此时表示FIR 滤波器,否则就是IIR 滤波器。该函数是利用给出的向量b 和a ,对x 中的数据进行滤波,结果放入向量y 。
(4).randn 函数调用
rand 产生的是[0,1]上的均匀分布的随机序列 ,randn 产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;
也就是说,可以直接使用上面两个函数对原始信号添加噪声,调用格式:
y=x+rand(length(x),1)或者y=x+randn(length(x),1)
(5). FFT函数调用
在MATLAB 的信号处理工具箱中函数FFT 用于序列快速傅立叶变换。
FFT 函数的一种调用格式为
y =fft (x )
其中,x 是序列,y 是序列的FFT ,x 可以为一向量或矩阵,若x 为一向量,y 是x 的FFT 。且和x 相同长度。
FFT 函数的另一种调用格式为:y =fft (x , N ) 式中,x ,y 意义同前,N 为正整数
第三章 语音信号处理的基本知识
3.1语音的录入和打开
在MATLAB 中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y 中,fs 表示采样频率(Hz),bits 表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N 的点则表示读取前N 点的采样值)。
sound(x,fs,bits); 用于对声音的回放。向量y 则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.2采样位数和采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB 。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1kHz 意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
3.3时域信号FFT 分析
FFT 即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
在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 进行处理
第四章 语音信号的采集
4.1语音信号的采集
首先我们通过在网上下载一段语音,定义为“larry.wav ”,过后在matlab 软件中,利用函数wavread 对语音信号进行采样,记下采样频率和采样点数。程序如下:
function yuyin_00
close all;
i=1;
[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs :采样频率;bits :采样点数
sound(x,fs,bits); %话音回放
N=length(x);
n=0:N-1;
figure(i);
subplot(2,1,1);
plot(n,x); %画出原始语音信号的波形
xlabel('n');
ylabel('x(n)');
title ('原始语音信号');
subplot(2,1,2);
[H,f]=freqz(x,1,512,fs);
plot(f,20*log10(abs(H))); %画出原始语音信号的频谱
xlabel('n');
ylabel('x(n)');
title ('原始语音信号的频谱');
运行结果:fs=22050HZ
bit=16
图4.1是原始语音信号的波形和频谱图
4.2语音信号的频谱分析
画出原始语音信号的时域波形,然后对语音信号进行FFT 变换,得到原始信号的频谱特性。FFT 频谱分析程序如下:
function yuyin_04 close all; i =1;
[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs :采样频率;bits :采样点数 sound(x,fs,bits); %话音回放 N=length(x); n=0:N-1; figure(i); subplot(2,1,1);
plot(n,x); %画出原始语音信号的波形 xlabel('n'); ylabel('x(n)')
;
title ('原始语音信号'); subplot(2,1,2); [H,f]=freqz(x,1,512,fs);
plot(f,20*log10(abs(H))); %画出原始语音信号的频谱 xlabel('n'); ylabel('x(n)');
title ('原始语音信号的频谱');
f=fft(x,N); %对语音号进行快速傅里叶变换, 得出频谱 i=i+1; figure(i); plot(abs(n),abs(f)); xlabel('k'); ylabel('|y(k)|'); title('FFT后的波形') ; 结果如下图:
图4.2原始信号的FFT 后频谱
第五章 数字滤波器的设计和画出其频率响应
5.1三种滤波器的性能指标
用窗函数法和双线性变换法设计以下三种数字滤波器,其性能指标如下:
a. 低通滤波器性能指标 fb=1000hz ,fc=1200hz , 最大衰减As=100db , 最小衰减Ap=1db ;
b. 高通滤波器性能指标fs=4800hz,fb=5000hz, 最大衰减 As=100db ,最小衰减Ap=1db ;
c. 带通滤波器性能指标 fb1=1200hz,fb2=3000hz , fc1=1000hz, fc2=3200hz,最大衰减 As=100db ,最小衰减Ap=1db ;
通过以上的性能指标设计出FIR 与IIR 两大种不同的数字滤波器。
5.2IIR 滤波器与FIR 滤波器的性能比较
FIR:Finite Impulse response,有限冲击响应 IIR:Infinite Impulse response,无限冲击响应
IIR 与FIR 两种滤波器性能比较图
从上面表格简单比较我们可以看到IIR 与FIR 滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR 较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR 滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。整体来看,IIR 滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR 滤波器没有稳定性问题,线性相位,但阶数多,延迟大。 而不论是IIR 滤波器还是FIR 滤波器的设计都包括三个步骤: (1) 按照实际任务的要求,确定滤波器的性能指标。
(2) 用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求可以考虑用IIR 系统函数或FIR 系统函数去逼近。 (3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。
5.3设计FIR 滤波器
5.3.1FIR 低通滤波器设计
程序设计如下:
fp=1000;fs=1200;As=120;Fs=22050; %确定技术指标 wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; %求归一化频率 wo=ws-wp; %求过渡带 beta=0.1102*(As-0.87); %求凯泽窗函数参数 N=ceil((As-8)/2.285/wo); %由过渡带决定N 的值 wc=(wp+ws)/2/pi; b=fir1(N,wc,kaiser(N+1,beta)); [Hw,w]=freqz(b,1); figure(1);
plot(w*Fs/2/pi,20*log10(abs(Hw))); %绘制频率响应曲线 grid ;
title ('FIR低通滤波器'); 输出仿真结果:
图5.1凯泽窗低通滤波器的幅频特性
5.3.2FIR 高通滤波器设计
程序如下:
fp=5000;fs=4800;Fs=22050;As=135; %确定技术指标 wp=2*pi*fp/Fs;ws=2*pi*fs/Fs; %求归一化频率 wo=wp-ws; %求过渡带 beta=0.1102*(As-0.87); %求凯泽窗函数参数 N=ceil((As-8)/2.285/wo); %由过渡带决定N 的值 wc=(wp+ws)/2/pi;
b=fir1(N,wc,'high',kaiser(N+1,beta)); [Hw,w]=freqz(b,1); figure(1);
plot(w*Fs/2/pi,20*log10(abs(Hw)));
grid ;
title ('FIR高通滤波器的幅频特性'); 输出仿真结果如下:
图5.2凯泽窗高通滤波器的幅频特性
5.3.3FIR 带通滤波器的设计
程序如下:
fb1=1000;fc1=1200;fb2=3000;fc2=3200; %确定技术指标 rs=120;Fs=22050;
wp1=2*pi*fc1/Fs;ws1=2*pi*fb1/Fs; %求归一化频率 wp2=2*pi*fb2/Fs;ws2=2*pi*fc2/Fs;
wo1=wp1-ws1;wo2=ws2-wp2; wo=max(wo1,wo2); %求过渡带 beta=0.1102*(rs-0.87); %求凯泽窗函数参数 N=ceil((rs-8)/2.285/wo); %由过渡带决定N 的值 wn1=(fb1+fc1)/Fs;wn2=(fb2+fc2)/Fs;wn=[wn1,wn2]; b=fir1(N,wn,'band',kaiser(N+1,beta)); [Hw,w]=freqz(b,1,512,Fs)
;
figure(1);
plot(w,20*log10(abs(Hw))); %绘制频率响应曲线 grid ;
title ('FIR带通滤波器'); 仿真结果如下:
图5.3凯泽窗带通滤波器的幅频特性
5.4设计IIR 滤波器 5.4.1IIR 低通滤波器的设计
程序设计如下:
fp=1000;fs=1200;Fs=22050; %确定技术指标 Ap=1;As=10;
wp=2*pi*fp/Fs; %归一化,求得数字边缘频率 ws=2*pi*fs/Fs; Ts=1/Fs;
wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标 was=2/Ts*tan(ws/2)
;
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数 [z,p,k]=buttap(N); %创建butterworth 模拟滤波器 [Bap,Aap]=zp2tf(z,p,k); [b,a]=lp2lp(Bap,Aap,wc);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [H,w]=freqz(bz,az); figure(1);
plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线 grid ;
axis([0,3000,-20,2]); xlabel ('频率/Hz'); ylabel ('幅度/dB');
title ('巴特沃兹低通滤波器'); 仿真结果如下:
图5.4巴特沃兹低通滤波器的幅频特性
5.4.2IIR 高通滤波器设计
程序设计如下:
fp=5000;fs=4800;Fs=22050; %确定技术指标 Ap=1;As=10;
wp=2*pi*fp/Fs; %归一化,求得数字边缘频率 ws=2*pi*fs/Fs; Ts=1/Fs;
wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标 was=2/Ts*tan(ws/2);
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数 [z,p,k]=buttap(N); %创建butterworth 模拟滤波器 [Bap,Aap]=zp2tf(z,p,k); [b,a]=lp2hp(Bap,Aap,wc);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [H,w]=freqz(bz,az); figure(1);
plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线 grid ;
axis([3000,6000,-20,2]); xlabel ('频率/Hz'); ylabel ('幅度/dB');
title ('巴特沃兹高通滤波器') ; 仿真结果如下:
图5.5巴特沃兹高通滤波器的幅频特性
5.4.3IIR 带通滤波器设计
程序设计如下:
fp1=1200;fp2=3000;fs1=1000;fs2=3200;Fs=22050;%确定技术指标 Ap=1;As=10;
wp1=2*pi*fp1/Fs;wp2=2*pi*fp2/Fs; %归一化,求得数字边缘频率 ws1=2*pi*fs1/Fs;ws2=2*pi*fs2/Fs; Ts=1/Fs;
wap1=2/Ts*tan(wp1/2);wap2=2/Ts*tan(wp2/2); %将数字指标转换成模拟指标
was1=2/Ts*tan(ws1/2);was2=2/Ts*tan(ws2/2); wap=[wap1,wap2];was=[was1,was2]; W1=(wap1+was1)/2;W2=(wap2+was2)/2;
Bw=W2-W1; %求带宽 wo=sqrt(W1*W2);
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数
Matlab 语音信号处理
摘要
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab 重要应用的领域之一。
本设计通过下载一段语音,对其进行了时域分析,频谱分析, 分析语音信号的特性。并应用matlab 平台对语音信号除去噪声,进一步设计三种滤波器即高通滤波器、低通滤波器、带通滤波器,基于洪泽三种滤波器设计原理,用窗函数法设计出这三种滤波器,然后含加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放含噪语音信号和去噪语音信号,对比研究了IIR 滤波器和FIR 滤波器在信号处理尤其是信号滤波去噪方面的特性和应用。论文从理论和实践上比较不同数字滤波器的滤波效果。
关键字:Matlab ;语音信号;信号处理;傅里叶变换;滤波器
The Design of Analysis Voice Signal
Abstract
Speech signal processing is to study the use of digital signal processing technology and knowledge of the voice signal voice processing of the emerging discipline is the fastest growing areas of information science one of the core technology. Transmission of information through the voice of humanity's most important, most effective, most popular and most convenient form of exchange of information..
Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering, Fourier transform, when domain and frequency domain analysis, sound playback and a variety of map rendering, and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis and visualization of signals, makes computer interaction more convenient . Matlab Signal Processing is one of the important areas of application.
The design of mobile phone collection a noisy speech, has carried on the analysis in time domain, frequency spectrum analysis, analysis of the characteristics of speech signal. And application of the MATLAB platform to the voice signal to remove noise, the further design of three kinds of filter is a high-pass filter, low-pass filter, bandpass filter, based on the Hongze three kinds of filter design, window function method to design the three kinds of filter, and then with the original speech signal filtering. Finally the comparison before and after filtering the speech signal in time domain and frequency domain, the playback noise speech signal denoising and the voice signal, a comparative study of the IIR filter and a FIR filter in signal processing especially for signal denoising in terms of the characteristics and application of. The theory and practice from the comparison of different digital filtering effect.
Keywords: Matlab; speech signal; signal processing; FFT; filter
目录
摘要 .................................................................................. I Abstract ............................................................................. II
第一章绪论 ............................................................................ 1
1.1课题研究的背景 ................................................................. 1
1.2国内外研究状况 ................................................................. 1
1.3本文的主要工作及研究步骤 ....................................................... 2
1.3.1本文的主要工作 ........................................................... 2
1.3.2论文的研究步骤 ........................................................... 2
第二章语音信号处理的总体方案 . .......................................................... 4
2.1运行环境及系统的基本要求 ....................................................... 4
2.1.1运行的环境 ............................................................... 4
2.1.2系统的基本要求 ........................................................... 4
2.2语音信号相关调用函数介绍 ..................................................... 4
2.2.1 Wavread函数介绍 ......................................................... 4
2.2.2其他相关函数介绍 ......................................................... 5
第三章语音信号处理的基本知识 . .......................................................... 6
3.1语音的录入和打开 ............................................................... 6
3.2采样位数和采样频率 ............................................................. 6
3.3时域信号FFT 分析 . ............................................................. 6
第四章 语音信号的采集.................................................................. 7
4.1语音信号的采集 ................................................................. 7
4.2语音信号的频谱分析 ............................................................. 8
第五章 数字滤波器的设计和画出其频率响应 . .............................................. 10
5.1三种滤波器的性能指标 .......................................................... 10
5.2IIR 滤波器与FIR 滤波器的性能比较 ............................................... 10
5.3设计FIR 滤波器 ................................................................ 11
5.3.1FIR 低通滤波器设计 ....................................................... 11
5.3.2FIR 高通滤波器设计 ....................................................... 12
5.3.3FIR 带通滤波器的设计 ..................................................... 13
5.4设计IIR 滤波器 ................................................................ 14
5.4.1IIR 低通滤波器的设计 ..................................................... 14
5.4.2IIR 高通滤波器设计 ....................................................... 15
5.4.3IIR 带通滤波器设计 ....................................................... 17
第六章 语音信号的滤波................................................................. 19
6.1语音信号滤波的流程 ............................................................ 19
6.2对语音信号滤波的仿真 .......................................................... 19
6.2.1滤波前后的时域对比 ...................................................... 19
6.2.2滤波前后的频域对比 ...................................................... 21
第七章总结 ........................................................................... 25
参考文献 ............................................................................. 26
致谢 .................................................................................. 1
附录: ................................................................................ 1
第一章绪论
1.1课题研究的背景
通过语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。语言是人类持有的功能,声音是人类常用的工具,是相互传递信息的最主要的手段。因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。让计算机能听懂人类的语言,是人类自计算机诞生以来梦寐以求的想法。
随着计算机越来越向便携化方向发展,随着计算环境的日趋复杂化,人们越来越迫切要求摆脱键盘的束缚而代之以语音输人这样便于使用的、自然的、人性化的输人方式。作为高科鼓应用领域的研究热点,语音信号采集与分析从理论的研究到产品的开发已经走过了几十个春秋并且取得了长足的进步。它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理.工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。可见,语音信号采集与分析的研究将是一项极具市场价值和挑战性的工作。我们今天进行这一领域的研究与开拓就是要让语音信号处理技术走人人们的日常生活当中,并不断朝更高目标而努力。
语音信号采集与分析之所以能够那样长期地、深深地吸引广大科学工作者去不断地对其进行研究和探讨,除了它的实用性之外,另一个重要原因是,它始终与当时信息科学中最活跃的前沿学科保持密切的联系.并且一起发展。语音信号采集与分析是以语音语言学和数字信号处理为基础而形成的一门涉及面很广的综合性学科,与心理、生理学、计算机科学、通信与信息科学以及模式识别和人工智能等学科都有着非常密切的关系。对语音信号采集与分析的研究一直是数字信号处理技术发展的重要推动力量。因为许多处理的新方法的提出,首先是在语音信号处理中获得成功,然后再推广到其他领域。
1.2国内外研究状况
早在一两千年前,人们便对语言进行了研究。由于没有适当的仪器设备,长期以来,一直是由耳倾听和用口模仿来进行研究。因此,这种语言研究常被称为“口耳之学”,所以对语音只是停留在定性的描写上。
语音信号处理真正意义上的研究可以追溯到1876年贝尔电话的发明,该技术首次
使用声电、电声转换技术实现了远距离的语音传输。1939年提出并研制成功的第一个声码器,从此奠定了语音产生模型的基础。这一发明在语音信号处理领域具有划时代的意义。19世纪60年代,亥姆霍兹应用声学方法对元音和歌唱进行了研究,从而奠定了语言的声学基础。20世纪40年代,一种语言声学的专用仪器—语谱图仪问世了。它可以把语音的时变频谱用语图表示出来,从而得出了“可见语言”。1948年美国Haskins 实验室研制成功的语音回放机,该仪器可以把手工绘制在薄膜片上的语谱图自动转换成语音,并进行语音合成。20世纪50年代队语言产生了系统的论述。随着计算机的出现,语音分析工作,得以在电子计算机上进行。在此基础上,语音信号处理的研究工作得到了计算机技术的帮助,取得了突破性的进展。
语音信号处理作为一个重要的研究领域,已经有很长的研究历史。但是它的快速发展可以说是从1940年前后Dudley 的声码器和Potter 等人的可见语音开始的;20世纪60年代中期形成的一系列数字信号处理方法和技术,如数字滤波器、快速傅立叶变换等成为语音信号数字处理的理论和技术基础; 到了80年代,由于矢量量化、隐马尔可夫模型和人工神经网络等相继被应用于语音信号处理,并经过不断改进与完善,使得语音信号处理技术产生了突破性的进展。进入90年代以来,语音信号处理在实用化方面取得了许多实质性的进展。一方面,对声学语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别实用化的需要,讲者自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题倍受关注。
1.3本文的主要工作及研究步骤
1.3.1本文的主要工作
本文简要介绍了语音信号采集与分析的发展史以及语音信号的特征、采集与分析方法,并通过手机录制自己的一段声音,运用Matlab 进行仿真分析,最后对于声音中的噪声进行滤波处理,比较滤波前后的变化以及介绍语音信号的特点与采集,仿真主要是验证奈奎斯特定理,对语音信号进行时域、频域上的分析,率谱,是对语音信号的综合和分析,包括语音信号的调制和滤波。
1.3.2论文的研究步骤
1.理论依据
根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,
采样定理;时域信号的FFT 分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。
2.信号采集
采集语音信号,并对其进行FFT 频谱分析,画出信号的时域波形图和频谱图。
3.构造受干扰信号并对其进行FFT 频谱分析
对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行FFT 频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。
4.数字滤波器设计
根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。
5.信号处理
用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行FFT 频谱分析。画出处理过程中所得各种波形及频谱图。
对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号 的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。
1.4本文使用的软件Matlab 介绍
MATLAB 是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分[4]。MATLAB 在现实中应用很广泛,如今随处可见,在各个领域都是有广泛的使用。
MATLAB 是矩阵实验室(Matrix Laboratory)的简称,和Mathematica 、Maple 并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB 来解算问题要比用C ,FORTRAN 等语言完相同的事情简捷得多,并且mathwork 也吸收了像Maple 等软件的优点, 使MATLAB 成为一个强大的数学软件。在新的版本中也加入了对C ,FORTRAN ,C++,JAVA 的支持。可以直接调用, 用户也可以将自己编写的实用程序导入到MATLAB 函数库中方便自己以后调用,此外许多的MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
第二章语音信号处理的总体方案
2.1运行环境及系统的基本要求
2.1.1运行的环境
运行环境主要介绍了硬件环境和软件环境。
硬件环境:
(1)处理器:Inter Core2 T6400
(2)内存:2G
(3)硬盘空间:320GB 或更高
(4)显卡:SVGA 显示适配器
软件环境:
操作系统:WindowXP
开发环境主要介绍了本系统采用的操作系统、开发语言。
(1)操作系统:WindowsXP
(2)开发环境:Matlab 7.0
2.1.2系统的基本要求
本文是用Matlab 对含噪的的语音信号同时在时域和频域进行滤波处理和分析, 同时对该语音信号通过滤波器出去噪声,设计出三种滤波器,得出图形后一一比较实现语音信号的处理分析。
2.2语音信号相关调用函数介绍
2.2.1 Wavread函数介绍
选取一段语音信号,然后在matlab 软件平台下,利用wavread 函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread 函数,理解采样频率、采样位数等概念。
wavread 函数调用格式:
y=wavread(file ),读取file 所规定的wav 文件,返回采样值放在响亮y 中。
[y,fs,nbits]=wavread(file),采样值放在向y 中,f s 表示采样频率(Hz ),nbits 表示采样位数。
y=wavread(file ,N ),读取前N 点的采样值放在向量y 中。
y=wavread(file ,[N 1, N 2]),读取从N 1到N 2点的采样值放在向量y 中。 对语音信号04.wav 进行采样其程序如下:
[y,fs,nbits]=wavread(‘larry ’)
其中:
fs =44100;(fs=44100为双声道设置频率,fs=22050为单声道设置频率) nbits =16;
y=wavread(file ,[20000,65000])
2.2.2其他相关函数介绍
(1). 函数fftfilt 的调用
函数fftfilt 的调用格式为
y=fftfilt(b,x)
该格式是利用基于FFT 的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR 滤波器有效。该函数是通过向量b 描述的滤波器对x 数据进行滤波。
(2). 函数sound 的调用
函数sound 可以对声音进行回放。其调用格式为:
Sound(x,fs,bits)
(3). 函数filter 的调用
函数filter 的调用格式为
y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR 滤波器,也可以用于FIR 滤波器。其中向量b 和a 分别表示系统函数的分子、分母多项式的系数,若a =1,此时表示FIR 滤波器,否则就是IIR 滤波器。该函数是利用给出的向量b 和a ,对x 中的数据进行滤波,结果放入向量y 。
(4).randn 函数调用
rand 产生的是[0,1]上的均匀分布的随机序列 ,randn 产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;
也就是说,可以直接使用上面两个函数对原始信号添加噪声,调用格式:
y=x+rand(length(x),1)或者y=x+randn(length(x),1)
(5). FFT函数调用
在MATLAB 的信号处理工具箱中函数FFT 用于序列快速傅立叶变换。
FFT 函数的一种调用格式为
y =fft (x )
其中,x 是序列,y 是序列的FFT ,x 可以为一向量或矩阵,若x 为一向量,y 是x 的FFT 。且和x 相同长度。
FFT 函数的另一种调用格式为:y =fft (x , N ) 式中,x ,y 意义同前,N 为正整数
第三章 语音信号处理的基本知识
3.1语音的录入和打开
在MATLAB 中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y 中,fs 表示采样频率(Hz),bits 表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N 的点则表示读取前N 点的采样值)。
sound(x,fs,bits); 用于对声音的回放。向量y 则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.2采样位数和采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB 。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1kHz 意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
3.3时域信号FFT 分析
FFT 即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
在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 进行处理
第四章 语音信号的采集
4.1语音信号的采集
首先我们通过在网上下载一段语音,定义为“larry.wav ”,过后在matlab 软件中,利用函数wavread 对语音信号进行采样,记下采样频率和采样点数。程序如下:
function yuyin_00
close all;
i=1;
[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs :采样频率;bits :采样点数
sound(x,fs,bits); %话音回放
N=length(x);
n=0:N-1;
figure(i);
subplot(2,1,1);
plot(n,x); %画出原始语音信号的波形
xlabel('n');
ylabel('x(n)');
title ('原始语音信号');
subplot(2,1,2);
[H,f]=freqz(x,1,512,fs);
plot(f,20*log10(abs(H))); %画出原始语音信号的频谱
xlabel('n');
ylabel('x(n)');
title ('原始语音信号的频谱');
运行结果:fs=22050HZ
bit=16
图4.1是原始语音信号的波形和频谱图
4.2语音信号的频谱分析
画出原始语音信号的时域波形,然后对语音信号进行FFT 变换,得到原始信号的频谱特性。FFT 频谱分析程序如下:
function yuyin_04 close all; i =1;
[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs :采样频率;bits :采样点数 sound(x,fs,bits); %话音回放 N=length(x); n=0:N-1; figure(i); subplot(2,1,1);
plot(n,x); %画出原始语音信号的波形 xlabel('n'); ylabel('x(n)')
;
title ('原始语音信号'); subplot(2,1,2); [H,f]=freqz(x,1,512,fs);
plot(f,20*log10(abs(H))); %画出原始语音信号的频谱 xlabel('n'); ylabel('x(n)');
title ('原始语音信号的频谱');
f=fft(x,N); %对语音号进行快速傅里叶变换, 得出频谱 i=i+1; figure(i); plot(abs(n),abs(f)); xlabel('k'); ylabel('|y(k)|'); title('FFT后的波形') ; 结果如下图:
图4.2原始信号的FFT 后频谱
第五章 数字滤波器的设计和画出其频率响应
5.1三种滤波器的性能指标
用窗函数法和双线性变换法设计以下三种数字滤波器,其性能指标如下:
a. 低通滤波器性能指标 fb=1000hz ,fc=1200hz , 最大衰减As=100db , 最小衰减Ap=1db ;
b. 高通滤波器性能指标fs=4800hz,fb=5000hz, 最大衰减 As=100db ,最小衰减Ap=1db ;
c. 带通滤波器性能指标 fb1=1200hz,fb2=3000hz , fc1=1000hz, fc2=3200hz,最大衰减 As=100db ,最小衰减Ap=1db ;
通过以上的性能指标设计出FIR 与IIR 两大种不同的数字滤波器。
5.2IIR 滤波器与FIR 滤波器的性能比较
FIR:Finite Impulse response,有限冲击响应 IIR:Infinite Impulse response,无限冲击响应
IIR 与FIR 两种滤波器性能比较图
从上面表格简单比较我们可以看到IIR 与FIR 滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR 较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR 滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。整体来看,IIR 滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR 滤波器没有稳定性问题,线性相位,但阶数多,延迟大。 而不论是IIR 滤波器还是FIR 滤波器的设计都包括三个步骤: (1) 按照实际任务的要求,确定滤波器的性能指标。
(2) 用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求可以考虑用IIR 系统函数或FIR 系统函数去逼近。 (3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。
5.3设计FIR 滤波器
5.3.1FIR 低通滤波器设计
程序设计如下:
fp=1000;fs=1200;As=120;Fs=22050; %确定技术指标 wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; %求归一化频率 wo=ws-wp; %求过渡带 beta=0.1102*(As-0.87); %求凯泽窗函数参数 N=ceil((As-8)/2.285/wo); %由过渡带决定N 的值 wc=(wp+ws)/2/pi; b=fir1(N,wc,kaiser(N+1,beta)); [Hw,w]=freqz(b,1); figure(1);
plot(w*Fs/2/pi,20*log10(abs(Hw))); %绘制频率响应曲线 grid ;
title ('FIR低通滤波器'); 输出仿真结果:
图5.1凯泽窗低通滤波器的幅频特性
5.3.2FIR 高通滤波器设计
程序如下:
fp=5000;fs=4800;Fs=22050;As=135; %确定技术指标 wp=2*pi*fp/Fs;ws=2*pi*fs/Fs; %求归一化频率 wo=wp-ws; %求过渡带 beta=0.1102*(As-0.87); %求凯泽窗函数参数 N=ceil((As-8)/2.285/wo); %由过渡带决定N 的值 wc=(wp+ws)/2/pi;
b=fir1(N,wc,'high',kaiser(N+1,beta)); [Hw,w]=freqz(b,1); figure(1);
plot(w*Fs/2/pi,20*log10(abs(Hw)));
grid ;
title ('FIR高通滤波器的幅频特性'); 输出仿真结果如下:
图5.2凯泽窗高通滤波器的幅频特性
5.3.3FIR 带通滤波器的设计
程序如下:
fb1=1000;fc1=1200;fb2=3000;fc2=3200; %确定技术指标 rs=120;Fs=22050;
wp1=2*pi*fc1/Fs;ws1=2*pi*fb1/Fs; %求归一化频率 wp2=2*pi*fb2/Fs;ws2=2*pi*fc2/Fs;
wo1=wp1-ws1;wo2=ws2-wp2; wo=max(wo1,wo2); %求过渡带 beta=0.1102*(rs-0.87); %求凯泽窗函数参数 N=ceil((rs-8)/2.285/wo); %由过渡带决定N 的值 wn1=(fb1+fc1)/Fs;wn2=(fb2+fc2)/Fs;wn=[wn1,wn2]; b=fir1(N,wn,'band',kaiser(N+1,beta)); [Hw,w]=freqz(b,1,512,Fs)
;
figure(1);
plot(w,20*log10(abs(Hw))); %绘制频率响应曲线 grid ;
title ('FIR带通滤波器'); 仿真结果如下:
图5.3凯泽窗带通滤波器的幅频特性
5.4设计IIR 滤波器 5.4.1IIR 低通滤波器的设计
程序设计如下:
fp=1000;fs=1200;Fs=22050; %确定技术指标 Ap=1;As=10;
wp=2*pi*fp/Fs; %归一化,求得数字边缘频率 ws=2*pi*fs/Fs; Ts=1/Fs;
wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标 was=2/Ts*tan(ws/2)
;
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数 [z,p,k]=buttap(N); %创建butterworth 模拟滤波器 [Bap,Aap]=zp2tf(z,p,k); [b,a]=lp2lp(Bap,Aap,wc);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [H,w]=freqz(bz,az); figure(1);
plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线 grid ;
axis([0,3000,-20,2]); xlabel ('频率/Hz'); ylabel ('幅度/dB');
title ('巴特沃兹低通滤波器'); 仿真结果如下:
图5.4巴特沃兹低通滤波器的幅频特性
5.4.2IIR 高通滤波器设计
程序设计如下:
fp=5000;fs=4800;Fs=22050; %确定技术指标 Ap=1;As=10;
wp=2*pi*fp/Fs; %归一化,求得数字边缘频率 ws=2*pi*fs/Fs; Ts=1/Fs;
wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标 was=2/Ts*tan(ws/2);
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数 [z,p,k]=buttap(N); %创建butterworth 模拟滤波器 [Bap,Aap]=zp2tf(z,p,k); [b,a]=lp2hp(Bap,Aap,wc);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [H,w]=freqz(bz,az); figure(1);
plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线 grid ;
axis([3000,6000,-20,2]); xlabel ('频率/Hz'); ylabel ('幅度/dB');
title ('巴特沃兹高通滤波器') ; 仿真结果如下:
图5.5巴特沃兹高通滤波器的幅频特性
5.4.3IIR 带通滤波器设计
程序设计如下:
fp1=1200;fp2=3000;fs1=1000;fs2=3200;Fs=22050;%确定技术指标 Ap=1;As=10;
wp1=2*pi*fp1/Fs;wp2=2*pi*fp2/Fs; %归一化,求得数字边缘频率 ws1=2*pi*fs1/Fs;ws2=2*pi*fs2/Fs; Ts=1/Fs;
wap1=2/Ts*tan(wp1/2);wap2=2/Ts*tan(wp2/2); %将数字指标转换成模拟指标
was1=2/Ts*tan(ws1/2);was2=2/Ts*tan(ws2/2); wap=[wap1,wap2];was=[was1,was2]; W1=(wap1+was1)/2;W2=(wap2+was2)/2;
Bw=W2-W1; %求带宽 wo=sqrt(W1*W2);
[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数