语音信号的滤波处理八.docx
- 文档编号:27145024
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:59
- 大小:424.81KB
语音信号的滤波处理八.docx
《语音信号的滤波处理八.docx》由会员分享,可在线阅读,更多相关《语音信号的滤波处理八.docx(59页珍藏版)》请在冰豆网上搜索。
语音信号的滤波处理八
1设计目的及内容
1.1设计目的
(1)掌握数字信号处理的基本概念,基本理论和基本方法。
(2)熟悉离散信号和系统的时域特性。
(3)掌握序列快速傅里叶变换方法。
(4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(5)掌握利用MATLAB对语音信号进行频谱分析。
(6)掌握滤波器的网络结构。
(7)掌握MATLAB设计IIR、FIR数字滤波器的方法和对信号进行滤波的方法。
1.2设计内容
1.2.1预习题部分
(1)设计卷积运算的演示程序:
可输入任意两个序列x1(n)、x2(n),并指定x1(n)为自己的学号,本实验为x1(n)={2,0,1,1,5,7,0,5,0,2,2,9}。
x2(n)的内容和长度自选。
例如x2(n)={1,2.43,6.17,12.93,22.17,32.25,40.88,45.87,45.87,40.88,32.25,22.17,12.93,6.17,2.43,1.0000}。
(2)编写程序演示采样定理(时域采样、频谱周期延拓),同时演示采样频率小于2fc时,产生的混叠效应:
①对下面连续信号进行采样:
,A为幅度因子,a为衰减因子,
为模拟角频率,其中n为学号(例如,王墨同学n=23)
②要求输入采样频率fs(根据程序处理需要指定范围)后,在时域演示信号波形、采样脉冲及采样后信号;在频域演示不同采样频率下对应信号的频谱。
1.2.2设计题部分
(1)选择Windows系统的C:
\WINDOWS\Media\WindowsXP关机.wav,并对该信号进行采样;
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;
(3)产生噪声信号加到语音信号中,得到被污染的语音信号,并回放语音信号;
(4)污染信号的频谱分析,画出被污染的语音信号时域波形和频谱;
(5)根据有关的频谱特性,采用间接法设计IIR数字滤波器,并画出相应滤波器的幅频图(设计3个IIR滤波器)
a.模拟滤波器类型:
切比雪夫滤波器(低通、带通、高通)
b.总体要求:
MATLAB原程序+仿真波形+技术指标
(6)根据有关的频谱特性,采用直接法设计FIR数字滤波器,并画出相应滤波器的幅频,相频图(设计3个FIR滤波器)
a.滤波器类型:
Blackman窗(低通、带通、高通)
b.总体要求:
MATLAB原程序+仿真波形+技术指标+窗函数
(7)用自己设计的这些滤波器分别对被不同噪声污染的信号进行滤波;
(8)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
(9)回放语音信号。
2课程设计基本原理
2.1设计思路
(1)语音信号声音选自XP系统盘目录下C:
\WINDOWS\Media\WindowsXP关机.wav
(2)根据不同的滤波器类型选择不同(频率)的噪声信号加到语音信号中,得到被污染的语音信号。
(3)分别设计切比雪夫(低通、带通、高通)以及Blackman窗滤波器(低通、带通、高通)对被污染的语音信号滤波,滤掉相应的噪音信号,得到符合要求的语音信号。
如图2.1所示图为切比雪夫滤波器或Blackman窗滤波器设计流程:
图2.1总体方案设计流程图
2.2设计原理
设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。
本次数字信号处理课程设计选用切比雪夫数字滤波器(IIR)以及Blackman窗数字滤波器(FIR)。
2.2.1IIR数字滤波器的结构与设计
IIR滤波器系统函数的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。
设计IIR数字滤波器的方法主要有基于冲激响应不变法的IIR数字滤波器设计,基于双线性Z变换法的IIR数字滤波器设计,数字高通及带通IIR滤波器设计,基于MATLAB函数直接设计IIR数字滤波器。
2.2.1.1基于双线性Z变换法的IIR数字低通滤波器设计
利用冲激响应不变法设计数字滤波器时会产生频域混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。
为了克服这一问题,需要找到由s平面到z平面的另外的映射关系,这种关系应保证:
(1)s平面的整个jΩ轴仅映射为z平面单位圆上的一周。
(2)若G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的。
(3)这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得到G(s)。
(4)如果G(j0)=1那么
,双线性Z变换满足以上4个条件的映射关系,其变换公式为:
双线性Z变换的基本思路是,首先将整个s平面压缩到一条从–π/Ts到π/Ts的带宽为2π/Ts的横带里,然后通过标准的变换关系将横带变换成整个z平面上去,这样就得到s平面与z平面间的一一对应的单值关系。
在MATLAB中双线性Z变换可以通过bilinear函数实现,其调用格式为[Bz,Az]=bilinear(B,A,Fs)。
其中B,A为模拟滤波器传递函数G(s)的分子分母多项式的系数向量,而Bz,Az为数字滤波器的传递函数H(z)的分子分母多项式的系数向量。
2.2.1.2数字高通及带通IIR滤波器设计
除了低通数字滤波器之外,实际中还常常需要高通及带通数字滤波器。
这两种数字滤波器的设计步骤如下:
(1)将数字滤波器H(z)的技术指标ωp和ωs,通过Ω=tan(ω/2)转变为模拟滤波器G(s)的技术指标Ωp和Ωs,作归一化处理后,得到ηp=1,ηs=Ωs/Ωp;
(2)化解为模拟原型滤波器G(s)的技术指标;
(3)设计模拟原型滤波器G(p);
(4)将G(p)转换为模拟滤波器的转移函数G(s);
(5)将G(s)转换成数字滤波器的转移函数H(z)s=(z–1)(z+1)。
所谓原型滤波器是指归一化的低通滤波器。
本节主要讨论通过IIR数字滤波器的原型转换设计法和IIR数字滤波器的直接设计方法来设计数字高通及带通滤波器其转换方法主要有3种:
一是直接由模拟低通滤波器转换成数字高通、带通滤波器;二是先由模拟低通滤波器转换成模拟高通、带通滤波器,然后再把它转换成相应的数字滤波器;三是将模拟低通滤波器先转换成数字低通滤波器,再通过变量代换变换成高通、带通滤波器。
2.2.2窗设计FIR数字滤波器的基本思想
窗设计的基本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,无限持续时间脉冲响应),然后截取(加窗)它的脉冲响应得到线性相位和因果FIR滤波器。
因此这种方法的重点是选择一个合适的窗函数和理想滤波器。
我我们用
表示理想的选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零响应。
一个带宽
的低通滤波器由下式给定:
为了从
得到一个FIR滤波器必须同时在两边截取
。
而要得到一个因果的线性相位滤波器,它的
长度为N必须有:
这种操作叫做加窗,h(n)可以看作是
与窗函数
的乘积:
其中
根据
的不同定义,可以得到不同的窗结构。
在频域中,因果FIR滤波器响应
由
和窗响应
的周期卷积得到即:
2.2.3MATLAB中布拉克曼窗的实现
在MATLAB中实现布拉克曼窗的函数为Blackman,调用格式如下:
w=blackman(N)
w=blackman(N,'sflag')
3设计步骤和过程
3.1语音信号的采集与频谱分析
利用Windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000Hz,8位,单声道)录制一段自己的话音,或者采用Windows自带的声音文件(默认为22050Hz),时间控制在几秒左右。
在MATLAB软件平台下,利用函数wavread对录制的语音信号进行采样,记住采样频率;接着画出语音信号的时域波形;然后利用fft函数对语音信号进行频谱分析,得到信号的频谱特性。
3.2设计数字滤波器
语音信号的频谱范围主要为100Hz-7000Hz左右。
因此,在设计低通滤波器时,应把噪声频谱设定在7000Hz以上,这样,通过低通滤波器即可滤除噪声信号,从而还原语音信号;在设计高通滤波器时,应把噪声设定在100Hz以内,以通过高通滤波器滤除低频噪声信号,从而还原频率相对较高的语音信号;在设计带通滤波器时,可把噪声设计在低于100Hz或高于7000Hz的频谱上,以通过带通滤波器还原通带范围内的语音信号。
3.2.1IIR数字滤波器的设计
设计IIR数字滤波器的方法主要有基于冲激响应不变法的IIR数字滤波器设计,基于双线性Z变换法的IIR数字滤波器设计,数字高通、带通及带阻IIR滤波器设计,基于MATLAB函数直接设计IIR数字滤波器。
本实验中采用双线性变换法变换的切比雪夫数字滤波器。
3.2.1.1切比雪夫低通数字滤波器
(1)给3.1节中采集的语音信号加一7000Hz以上的噪声,形成污染信号。
(2)设计一个切比雪夫低通滤波器,通带范围含语音信号,阻带频率设定为小于噪声信号的频率。
(3)将设计好的切比雪夫低通滤波器滤除被噪声污染后的语音信号,即还原语音信号。
3.2.1.2切比雪夫高通数字滤波器
(1)给3.1节中采集的语音信号加一100Hz以下的噪声,形成污染信号。
(2)设计一个切比雪夫高通滤波器,通带范围含语音信号,阻带频率设定为大于噪声信号的频率。
(3)将设计好的切比雪夫低通滤波器滤除被噪声污染后的语音信号,即还原语音信号。
3.2.1.3切比雪夫带通数字滤波器
(1)给3.1节中采集的语音信号加一100Hz以下或7000Hz以上的噪声(实验中取大频率的噪声信号),形成污染信号。
(2)设计一个切比雪夫带通滤波器,通带范围含语音信号,阻带频率设定不包括噪声信号频率。
(3)将设计好的切比雪夫带通滤波器滤除被噪声污染后的语音信号,即原语音信号。
3.2.2FIR滤波器的设计
FIR滤波器通常采用窗函数方法来设计。
正确地选择窗函数可以提高设计数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶次。
常用的窗函数有以下几种:
矩形窗(Rectangularwindow)、汉宁窗(Hanningwindow)、海明窗(Hammingwindow)、布拉克曼窗(Blackmanwindow)、切比雪夫窗(Chebyshevwindow)、巴特里特窗(Bartlettwindow)及凯塞窗(Kaiserwindow)。
本实验中采用布拉克曼窗(Blackmanwindow)设计滤波器。
3.2.2.1Black窗低通滤波器
(1)给3.1节中采集的语音信号加一7000Hz以上的噪声(频率远大于语音信号的最大频率),形成污染信号。
(2)设计一个Blackman窗低通滤波器,通带范围含语音信号,阻带频率设定为小于噪声信号频率。
(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即还原语音信号。
3.2.2.2Black窗高通滤波器
(1)给3.1节中采集的语音信号加一100Hz以下的噪声(频率远小于语音信号的最小频率),形成污染信号。
(2)设计一个Blackman窗高通滤波器,通带范围含语音信号,阻带频率设定为大于噪声信号频率。
(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即还原语音信号。
3.2.2.3Blackman窗带通滤波器
(1)给3.1节中采集的语音信号加一100Hz以下或7000Hz以上的噪声(实验中取大频率的噪声信号)。
(2)设计一个Blackman窗带通滤波器,通带范围含语音信号,阻带频率设定为不包括噪声信号频率。
(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即原语音信号。
4程序调试及运行结果
4.1切比雪夫低通数字滤波器
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫低通滤波器进行滤波。
MATLAB程序如下,仿真处理如图4.1所示。
clf;clc;closeall;clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信号采集与频谱分析
[x,Fs,bits]=wavread('C:
\WINDOWS\Media\WindowsXP关机.wav');
x=x(:
1)';
t=0:
1/Fs:
(length(x)-1)/Fs;%时间
figure
(1);
subplot(2,1,1);
plot(t,x);
title('语音信号波形');xlabel('时间/s');ylabel('幅度');
y=fft(x,1024);
f=(Fs/1024)*(0:
512);
subplot(2,1,2);
plot(f,abs(y(1:
513)));
title('语音信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(x,Fs,bits);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%生成模拟噪声
fn=7000;%噪声频率
zs=0.5*sin(2*pi*fn*t);%噪声信号
figure
(2);
subplot(211);
plot(t(1:
128),zs(1:
128))
title('噪声波形');xlabel('时间/s');ylabel('幅度');
zs1=fft(zs,1024);
sound(zs,Fs,bits);
subplot(2,1,2)
plot(f,abs(zs1(1:
513)));
title('噪声频谱');xlabel('频率/Hz');ylabel('幅度');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%噪声与语音信号叠加
x1=x+zs;
y1=fft(x1,1024);
figure(3);
subplot(211);plot(t,x1);
title('加入噪声后的信号波形');xlabel('时间/s');ylabel('幅度');
subplot(212);
plot(f,abs(y1(1:
513)));
title('加入噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(x1,Fs,bits);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%低通滤波器
fp=6000;fc=8000;Fs=22050;
rp=1;rs=100;
wp=2*pi*fp/Fs;
wc=2*pi*fc/Fs;
Fs=Fs/Fs;
wap=2*tan(wp/2);was=2*tan(wc/2);
[N,wc]=cheb1ord(wap,was,rp,rs,'s');
[B,A]=cheby1(N,rp,wc,'s');
[Bz,Az]=bilinear(B,A,Fs);
figure(4);
[h,w]=freqz(Bz,Az,512,Fs*22050);
plot(w,abs(h));
title('切比雪夫低通滤波器');
xlabel('频率/Hz');ylabel('损耗/dB');
gridon;
yd=filter(Bz,Az,x1);
figure(5);
subplot(2,1,1);plot(t,yd);
title('滤波后信号波形');xlabel('时间/s');ylabel('幅度');
ydd=fft(yd,1024);
subplot(2,1,2);plot(f,abs(ydd(1:
513)));
title('滤波后信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(yd,22050,bits)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
图4.1切比雪夫低通滤波器处理噪声图
4.2切比雪夫高通数字滤波器
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫高通滤波器进行语音信号的滤波。
MATLAB程序如下,仿真处理如图4.2所示。
clf;clc;closeall;clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信号采集与频谱分析
[x,Fs,bits]=wavread('C:
\WINDOWS\Media\WindowsXP关机.wav');
x=x(:
1)';
t=0:
1/Fs:
(length(x)-1)/Fs;%时间
figure
(1);
subplot(2,1,1);
plot(t,x);
title('语音信号波形');xlabel('时间/s');ylabel('幅度');
y=fft(x,1024);
f=(Fs/1024)*(0:
512);
subplot(2,1,2);
plot(f,abs(y(1:
513)));
title('语音信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(x,Fs,bits);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%生成模拟噪声
fn=100;%噪声频率
zs=0.5*sin(2*pi*fn*t);%噪声信号
figure
(2);
subplot(211);
plot(t,zs)
title('噪声波形');xlabel('时间/s');ylabel('幅度');
zs1=fft(zs,1024);
sound(zs,Fs,bits);
subplot(2,1,2)
plot(f,abs(zs1(1:
513)));
title('噪声频谱');xlabel('频率/Hz');ylabel('幅度');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信号与噪声叠加
x1=x+zs;
y1=fft(x1,1024);
figure(3);
subplot(211);plot(t,x1);
title('加入噪声后的信号波形');xlabel('时间/s');ylabel('幅度');
subplot(212);
plot(f,abs(y1(1:
513)));
title('加入噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(x1,Fs,bits);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%高通滤波
fp=450;fc=150;Fs=22050;
rp=1;rs=100;
wp=2*pi*fp/Fs;
wc=2*pi*fc/Fs;
Fs=Fs/Fs;
wap=2*tan(wp/2);was=2*tan(wc/2);
[N,wc]=cheb1ord(wap,was,rp,rs,'s');
[B,A]=cheby1(N,rp,wc,'high','s');
[Bz,Az]=bilinear(B,A,Fs);
figure(4);
[h,w]=freqz(Bz,Az,512,Fs*22050);
plot(w,abs(h));
title('切比雪夫高通滤波器');
xlabel('频率/Hz');ylabel('损耗/dB');
gridon;
yd=filter(Bz,Az,x1);
figure(5);
subplot(2,1,1);plot(t,yd);
title('滤波后信号波形');xlabel('时间/s');ylabel('幅度');
ydd=fft(yd,1024);
subplot(2,1,2);plot(f,abs(ydd(1:
513)));
title('滤波后信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(yd,22050,bits)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
图4.2切比雪夫高通滤波器处理噪声图
4.3切比雪夫带通数字滤波器
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫带通滤波器进行语音信号的滤波。
MATLAB程序如下,仿真处理如图4.3所示。
clf;clc;closeall;clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信号采集与频谱分析
[x,Fs,bits]=wavread('C:
\WINDOWS\Media\WindowsXP关机.wav');
x=x(:
1)';
t=0:
1/Fs:
(length(x)-1)/Fs;%时间
figure
(1);
subplot(2,1,1);
plot(t,x);
title('语音信号波形');xlabel('时间/s');ylabel('幅度');
y=fft(x,1024);
f=(Fs/1024)*(0:
512);
subplot(2,1,2);
plot(f,abs(y(1:
513)));
title('语音信号频谱');xlabel('频率/Hz');ylabel('幅度');
sound(x,Fs,bits);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%生成模拟噪声
fn=8000;%噪声频率
zs=0.5*sin(2*pi*fn*t);%噪声信号
figure
(2);
subplot(211);
plot(t,zs)
title('噪声波形');xlabel('时间/s');ylabel('幅度');
zs1=fft(zs,1024);
sound(zs,Fs,bits);
subplot(2,1,2)
plot(f,abs(zs1(1:
513)));
title('噪声频谱');xlabel('频率/Hz');ylabel('幅度');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信号与噪声叠加
x1=x+zs;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 滤波 处理