信号与系统课程设计报告
《基于IIR的有噪声语音信号处理》
班 级:电子 121 班
姓 名:
成 绩:
指导教师:
日 期:2015年1月6日
目 录
1、摘要及关键字…………………………………………………………………2
2、实验目的与具体任务…………………………………………………………3
3、MATLAB设计与运行结果及分析……………………………………………4
3.1 基于IIR滤波器的语音信号的处理…………………………………………4
3.1.1 语音信号的采集与播放………………………………………………4
3.1.2 语音信号的时域分析及频谱分析……………………………………5
3.2 加噪后的语音信号时域及频谱分析………………………………………6
3.3 用滤波器对加噪语音信号进行滤波………………………………………7
3.3.1 滤波器的设计…………………………………………………………7
3.3.2 滤波后的时域及频谱分析……………………………………………10
3.3.3 比较滤波前后的语音信号的频谱波形………………………………12
3.3.4 IIR滤波器的处理结果的分析…………………………………………12
3.4 设计的GUI界面……………………………………………………………14
3.5 流程图………………………………………………………………………15
4、LABVIEW仿真及结果分析…………………………………………………16
4.1 LABVIWE的仿真………………………………………………………16
4.1.1 LABVIEW仿真程序框图……………………………………………16
4.1.2 LABVIEW仿真前面板………………………………………………17
4.2 LABVIEW结果分析……………………………………………………17
5、实验总结……………………………………………………………………19
6、参考文献……………………………………………………………………20
1、摘要及关键字
摘要
本课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,在设计IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。然后再利用LABVIEW软件进行相应的实体仿真,通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB以及LABVIEW可以有效快捷地设计IIR数字滤波器,最终实验结果的各项性能指标均达到指定要求。
ABSTRACT
This topic noisy speech signal processing based on MATLAB, the design and implementation of the integrated use of theoretical knowledge of digital signal processing to add noise speech signal in time domain, frequency domain analysis and filtering. Corresponding conclusions through theoretical derivation, using MATLAB as a programming tool for computer implementation. In the process of design implementation, using butterworth, chebyshev, and bilinear reform IIR digital filter design, in the design of IIR digital filter, we first write in the formula of analog filter based on index, and then through a certain transformation, converts analog filter formula into digital filter formula. And by using the MATLAB as an auxiliary tool to complete the design of computing and graphics drawing. Then using the LABVIEW software corresponding physical simulation, through a simulation for the designed filter and frequency characteristic analysis, using MATLAB and LABVIEW can quickly and effectively IIR digital filter design, finally the experimental results of various performance indicators are to meet the specified requirements.
关键字:语音信号、加噪处理、IIR滤波器、MATLAB、LABVIEW
2、实验目的及具体任务
实验目的
本设计课题主要研究数字语音信号的初步分析方法、IIR数字滤波器的设计及应用。本设计研究的主要内容是先进行语音信号的采集,然后对语音信号进行频谱分析,再利用IIR两种滤波器对语音信号进行过滤和频谱分析,画出滤波之后的频谱图与时域波形,并对信号滤波前后进行分析比较,分析信号的变化,得出几种滤波器的滤波性能。通过完成本课题的设计,主要达到以下几个目的:
(1)掌握Matlab软件的特点和使用方法。
(2)掌握对信号和系统的时域、频域特性进行分析的方法。
(3)掌握IIR数字滤波器的设计方法及应用。
(4)了解语音信号的特性及分析方法。
(5)了解LabVIEW虚拟仪器的特点以及采用LabVIEW进行仿真的方法。
(6)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。
实验具体任务
选择一个语音信号或录制一段语音信号作为分析的对象,对其进行频谱分析;利用MATLAB产生正弦波噪声加入到语音信号中,模仿语音信号被干扰,并对其进行频谱分析;设计IIR数字滤波器, 并对被噪声干扰的语音信号进行滤波, 分析滤波后信号的时域和频域特征,最后回放语音信号。课题具体任务如下:
(一)利用Matlab设计基于IIR滤波的数字语音信号处理系统。
其基本功能包括:利用GUI设计友好的图形用户界面,实现语音信号读取,时域波形显示,频谱分析,设计IIR数字滤波器(巴特沃斯、切比雪夫、椭圆滤波器任选)实现噪声滤除。具体任务如下:
(1)对语音信号进行采集(读取),对数字语音信号加入干扰噪声,画出原始信号及带噪信号的时域波形,利用FFT进行频域分析,画出相应波形,并对语音进行播放。
(3)分析语音信号频谱及噪声频率,根据实际情况设计IIR数字滤波器实现噪声的滤除。
(4)分析、对比噪声滤除前后的语音时域、频域特性,并对噪声滤除前后语音进行播放。
(5)利用GUI设计图形用户界面(包含以上功能)。
(二)利用LabVIEW进行仿真设计。
实现简单数字语音信号处理系统的功能,要求给出系统的前面板和框图,并记录仿真结果。
3、MATLAB设计与运行结果及分析
3.1 基于滤波器的语音信号的处理
3.1.1语音信号的采集与播放
本实验选择已有的语音信号ai2.wav作为分析对象对其进行原始语音信号的采集与分析以及加噪后频谱分析,利用MATLAB中的“wavread”命令来读入(采集)语音信号,利用Wavread 函数的调用格式为y=wavread(file)读取file所规定的wav文件,返回采样值放在向量y中。然后画出语音信号的时域波形,再对语音信号进行频谱分析。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
源程序:
H={'*.wav'};
[filename,pathname]=uigetfile(H,'请选择打开信号');
file=strcat(pathname,filename);
y=wavread(file);
plot(y);title('原信号时域波形');
播放原始语音信号源程序:
fs=16000;
sound (y,fs);
3.1.2原始信号时域分析及频谱分析
所得原始语音信号的时域波形如图3-1
图 3-1
原始语音信号频谱分析
X=fft(y);
N=length(y);
k=0:N-1;
plot(k,abs(X));title('原始语音信号频谱图')
波形如图3-2
图3-2
3.2 加噪后的语音信号的播放,时域及频谱分析
播放加噪声后的语音信号:
sound(s,16000);
加噪声后的信号时域分析
N=length(y);
t=0:N-1;
d=[0.05*cos(0.03*t)]';
s=y+d;
plot(s,'r');title('加噪后信号时域图');
波形如下图3-3
图3-3
加噪声后的信号频谱分析
N=length(y);
t=0:N-1;
d=[0.05*cos(3*t)]';
s=y+d; S=fft(s);
plot(abs(S));title('加噪后信号频域图');
波形如图3-4
图3-4
3.3 用滤波器对加噪语音信号进行滤波
3.3.1 滤波器的设计
IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。 对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。以利用模拟滤波器设计IIR数字低通滤波器为例总结设计过程的具体步骤如下:
(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。
(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。
(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。
接下来,我们根据语音信号的特点给出有关滤波器的技术指标:
①低通滤波器的性能指标:
fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB
②高通滤波器的性能指标:
fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;
③带通滤波器的性能指标:
fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB
在Matlab中,可以利用函数butter,cheby1设计IIR滤波器。巴特沃斯滤波器设计函数有多种调用格式,本课程设计中用到的是[N,wc]=butter(N,wc,Rp,As,’s’),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。MATLAB信号处理工具箱函数cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:
[B,A]=cheby1(N,Rp,wpo,’ftypr’)
[B,A]=cheby1(N,Rp,wpo,’ftypr’,’s’)
函数butter,cheby1设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。IIR数字滤波器的主要程序。
%=========================IIR低通滤波器=======================
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5); %双线性变换实现S域到Z域的变换
[h,w]=freqz(num11,den11); %根据参数求出频率响应
plot(w*8000*0.5/pi,abs(h));
legend('用butter设计');
图3-5 IIR低通滤波器
%======================IIR带通==========================
wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换
wp2=tan(pi*Fp2/Ft);
ws1=tan(pi*Fs1/Ft);
ws2=tan(pi*Fs2/Ft);
w=wp1*wp2/ws2;
bw=wp2-wp1;
wp=1;
ws=(wp1*wp2-w.^2)/(bw*w);
[n12,wn12]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率
[b12,a12]=butter(n12,wn12,'s'); %求S域的频率响应参数
[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将S域低通参数转为带通的
[num12,den12]=bilinear(num2,den2,0.5);%双线性变换实现S域到Z域的转换
[h,w]=freqz(num12,den12); %根据参数求出频率响应
plot(w*8000*0.5/pi,abs(h));
axis([0 4000 0 1.5]);
legend('用butter设计');
图3-6 IIR带通滤波器
%======================IIR高通==========================
Ft=8000;
Fp=4000;
Fs=3500;
wp1=tan(pi*Fp/Ft); %高通到低通滤波器参数转换
ws1=tan(pi*Fs/Ft);
wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率
[b13,a13]=cheby1(n13,1,wn13,'s'); %求S域的频率响应的参数
[num,den]=lp2hp(b13,a13,wn13); %将S域低通参数转为高通的
[num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现S域到Z域转换
[h,w]=freqz(num13,den13);
plot(w*21000*0.5/pi,abs(h));
title('IIR高通滤波器');
legend('用cheby1设计');
图3-7 IIR 高通滤波器
3.3.2 滤波后的时域及频谱分析
Ft=8000;
Fp=4000;
Fs=3500;
wp1=tan(pi*Fp/Ft); %高通到低通滤波器参数转换
ws1=tan(pi*Fs/Ft);
wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率
[b13,a13]=cheby1(n13,1,wn13,'s'); %求S域的频率响应的参数
[num,den]=lp2hp(b13,a13,wn13); %将S域低通参数转为高通的
[num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现S域到Z域转换
[h,w]=freqz(num13,den13);
plot(w*21000*0.5/pi,abs(h));
title('IIR高通滤波器');
legend('用cheby1设计');
图3-8 切比雪夫滤波器
滤波后的频谱分析
Ft=8000;
Fp=4000;
Fs=3500;
wp1=tan(pi*Fp/Ft); %高通到低通滤波器参数转换
ws1=tan(pi*Fs/Ft);
wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=buttord(wp,ws,1,50,'s');%求高通滤波器的阶数和截止频率?
[b13,a13]=butter(n13,wn13,'s');%求S域的频率响应的参数??
[num11,den11]=bilinear(b13,a13,0.5);%利用双线性变换实现频率响应S域到Z域的变换
n = length (y) ; %求出语音信号的长度
t=0:n-1;
d=[0.5*cos(3*t)]'; %随机函数产生噪声
s=y+d; %语音信号加入噪声
S=fft(s); %傅里叶变换
z11=filter(num11,den11,s);
m11=fft(z11);
plot(abs(m11),'r');title('滤波后信号的频谱');
滤波后的频谱如图3-9
图3-9
3.3.3 比较滤波前后的语音信号的频谱波形
图3-10 滤波前后的语音信号频谱波形
3.3.4 IIR滤波器的处理结果的分析
3.4 设计的GUI界面
本次实验中所设计的GUI界面如图4-1所示
可以实现音频的输入,播放,显示原始信号时域波形,加噪声后时域波形与频谱波形,播放加噪后声音,IIR滤波器,滤波后信号的频谱波形以及滤波后声音的播放的功能。
3.5 流程图
4、LABVIEW仿真及结果分析
4.1 LABVIWE的仿真
4.1.1 LABVIEW仿真程序框图
LABVIEW仿真程序框图如图4-1所示。
图4-1
LABVIEW仿真程序能够录入已经录制好的声音并播放,显示时域图及频谱图。程序中加入了频率为300Hz,幅值为0.5的噪声,并与原始信号相加,播放产生时域图与频谱图。之后通过一个高通滤波器滤波后能够播放滤波后声音信号,显示时域波形和频谱波形。
4.1.2 LABVIEW仿真前面板
LABVIEW仿真前面板如图4-2所示。
图4-2
4.2 LABVIEW结果分析
6、参考文献
1高西全,丁玉美.数字信号处理.第3版.北京:西安电子科技大学出版社,2008
2 刘泉,阙大顺.数字信号处理原理与实现.北京:电子工业出版社,2005
3 张磊,毕靖,郭莲英.MATLAB实用教程.北京:人民邮电出版社,2008
4 张威.MATLAB基础与编程入门.西安:西安电子科技大学出版社,2006
5 周利清,苏菲.数字信号处理基础.北京:北京邮电大学出版社,2005