语音信号的滤波处理八_第1页
语音信号的滤波处理八_第2页
语音信号的滤波处理八_第3页
语音信号的滤波处理八_第4页
语音信号的滤波处理八_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1设计目的及内容

1.1设计目的

⑴掌握数字信号处理的根本概念,根本理论和根本方法。

⑵熟悉离散信号和系统的时域特性。

⑶掌握序列快速傅里叶变换方法。

⑷学会MATLAB的使用,掌握MATLAB的程序设计方法。

⑸掌握利用MATLAB对语音信号进行频谱分析。

⑹掌握滤波器的网络结构。

⑺掌握MATLAB设计HR、FIR数字滤波器的方法和对信号进行滤波的方法。

1.2设计内容

预习题局部

⑴设计卷积运算的演示程序:

可输入任意两个序列xl(n)、x2(n),并指定xl(n)为自己的学号,本实验为

xl(n)={2,0,1,1,5,7,0,5,0,2,2,9}ox2(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}o

⑵编写程序演示采样定理(时域采样、频谱周期延拓),同时演示采样频率小于2fc时,

产生的混叠效应:

①对下面连续信号进行采样:

a,

xa(t)=Ae~sin(Qor)w(r),A=n,a=Q()=小历乃,〃=学号,A为幅度因子,a为衰减因子,

为模拟角频率,其中n为学号(例如,王墨同学n=23)

②要求输入采样频率fs(根据程序处理需要指定范围)后,在时域演示信号波形、采样

脉冲及采样后信号;在频域演示不同采样频率下对应信号的频谱。

设计题局部

⑴选择Windows系统的C:\WINDOWS\Media\WindowsXP关机wav,并对该信号进行采

样;

⑵语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;

⑶产生噪声信号加到语音信号中,得到被污染的语音信号,并回放语音信号;

(4)污染信号的频谱分析-,画出被污染的语音信号时域波形和频谱;

⑸根据有关的频谱特性,采用间接法设计IIR数字滤波器,并画出相应滤波器的幅频图(设

L3个IIR滤波器)

a.模拟滤波器类型:切比雪夫滤波器(低通、带通、高通)

b.总体要求:MATLAB原程序+仿真波形+技术指标

⑹根据有关的频谱特性,采用直接法设计F1R数字滤波器,并画出相应滤波器的幅频,相

频图〔设计3个滤波器)

a.滤波器类型:Blackman窗(低通、带通、高通)

b.总体要求:MATLAB原程序+仿真波形+技术指标+窗函数

⑺用自己设计的这些滤波器分别对被不同噪声污染的信号进行滤波;

⑻分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行比

照,分析信号的变化;

⑼回放语音信号。

2课程设计根本原理

2.1设计思路

⑴语音信号声音选自XP系统盘目录下C:\WINDOWS\Media\WindowsXP关机wav

(2)根据不同的滤波器类型选择不同(频率)的噪声信号加到语音信号中,得到被污

染的语音信号。

(3)分别设计切比雪夫(低通、带通、高通)以及Blackman窗滤波器(低通、带通、

高通)对被污染的语音信号滤波,滤掉相应的噪音信号,得到符合要求的语音信号。

如图2.1所示图为切比雪夫滤波器或Blackman窗滤波器设计流程:

图2.1总体方案设计流程图

2.2设计原理

设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)

具有指定的频率特性。数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成

无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。本次

数字信号处理课程设计选用切比雪夫数字滤波器(IIR)以及Blackman窗数字滤波器(FIR〕。

IIR数字滤波器的结构与设计

HR滤波器系统函数的极点可以在单位圆内的任何位置,实现1IR滤波器的阶次较低,

所用的存储单元较少,效率高,又由于IIR数字滤波器能够保存一些模拟滤波器的优良特

性,因此应用很广。设计IIR数字滤波器的方法主要有基于冲激响应不变法的HR数字滤波

器设计,基于双线性Z变换法的IIR数字滤波器设计,数字高通及带通IIR滤波器设计,

基于MATLAB函数直接设计IIR数字滤波器。

.1基于双线性Z变换法的IIR数字低通滤波器设计

利用冲激响应不变法设计数字滤波器时会产生频域混叠现象,使数字滤波器的频响偏

离模拟滤波器的频响特性。为了克服这一问题,需要找到由s平面到z平面的另外的映射

关系,这种关系应保证:

(l)s平面的整个jQ轴仅映射为z平面单位圆上的一周。

(2)假设G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的。

(3)这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得至UG(s)。

(4)如果G(jO)=l那么斤=双线性Z变换满足以上4个条件的映射关系,其变换

匚二2z-l

公式为:工z+1

双线性Z变换的根本思路是,首先将整个s平面压缩到一条从-n/Ts到n/Ts的带宽

为2冗/Ts的横带里,然后通过标准的变换关系将横带变换成整个z平面上去,这样就得到

s平面与z平面间的一一对应的单值关系。

在MATLAB中双线性Z变换可以通过bilinear函数实现,其调月格式为

[3z,Az]=bilinear(B,A,Fs)。

其中B,A为模拟滤波器传递函数G⑸的分子分母多项式的系数向量,而Bz,Az为数字

滤波器的传递函数H(z)的分子分母多项式的系数向量。

・2数字高通及带通IIR滤波器设计

除了低通数字滤波器之外,实际中还常常需要高通及带通数字滤波器。这两种数字滤

波器的设计步骤如下:

(1)将数字滤波器H(z)的技术指标3P和3s,通过。二tan(o/2)转变为模拟漉波器G(s)

的技术指标Cp和Qs,作归一化处理后,得到[p=l,nS=Qs/Qp;

(2)化解为模拟原型滤波器G(s)的技术指标;

(3)设计模拟原型滤波器G(p);

(4)将G(p)转换为模拟流波器的转移函数G(5);

⑸将G(s)转换成数字滤波器的转移函数H(z)s=(z-1)(z+1)。

所谓原型滤波器是指归一化的低通滤波器。本节主要讨论通过IIR数字滤波潜的原型

转换设计法和HR数字滤波器的直接设计方法来设计数字高通及带通滤波器其转换方法主

要布•3种:一是直接由模拟低通滤波器转换成数字高通、带通漉波器;二是先由模拟低通

滤波器转换成模拟高通、带通流波器,然后再把它转换成相应的数字滤波器;三是将模拟

低通滤波器先转换成数字低通滤波器,再通过变量代换变换成高通、带通滤波器。

窗设计FIR数字滤波器的根本思想

窗设计的根本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,

无限持续时间脉冲响应),然后截取(加窗)它的脉冲响应得到线性相位和因果FIR滤波器。

因此这种方法的重点是选择一个适宜的窗函数和理想滤波器。我我们用〃』(""')表示理想的

选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零响应。一个带宽叫

的低通滤波器由下式给定:

为了从45)得到一个FIR滤波器必须同时在两边截取勾(〃)。而要得到一个因果的线

性相位流波器,它的为(〃)长度为N必须有:

h(ri),Q<n<N-\N-1

〃(〃)=da=------

0淇他2

这种操作叫做加窗,h(n)可以看作是也⑺与窗函数的乘积:

h(n)=hd5)改〃)

其中

,、(关于a对称KN-1

认叱。,其他

根据的不同定义,可以得到不同的窗结构。

在频域中,因果FIR滤波器响应”(*)由凡©")和窗响应/*)的周期卷积得到即:

]n

jMjt0jA

d(e)0W(e)=jW(e1Hd(。川一人)川丸

一“

22.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变换法的HR数字滤波器设计,数字高通、带通及带阻1IR滤

波器设计,基于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)>汉宁窗(Hanning

window)海明窗(Hammingwindow)、布拉克曼窗(Blackmanwindow)、切比雪

夫窗(Chebyshevwindow)>巴特里特窗(Bartlettwindow)及凯塞窗(Kaiser

window)o本实验中采用布拉克曼窗(Blackmanwindow)设计源波器。

3.2.2.1Black窗低通滤波器

(1)给3.1节中采集的语音信号加一7000Hz以上的噪声(频率远大于语音

信号的最大频率),形成污染信号。

(2)设计一个Blacknum窗低通滤波器,通带范围含语音信号,阻带频率设定

为小于噪声信号频率。

(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即复

原语音信号。

3.2.2.2Black窗高通滤波器

⑴给3.1节中采集的语音信号加一100Hz以下的噪声(频率远小于语音信

号的最小频率J,形成污染信号。

(2)设计一个Blackman窗高通滤波器,通带范围含语音信号,阻带频率设定

为大于噪声信号频率。

(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即复

原语音信号。

3.2.2.3Blackman窗带通滤波器

(1)给3.1节中采集的语音信号加一100Hz以下或7000Hz以上的噪声(实

验中取大频率的噪声信号)。

(2)设计一个Rlackman窗带通滤波器,通带范围含语音信号,阻带频率设定

为不包括噪声信号频率。

(3)将设计好的Blackman窗高通滤波器滤除被噪声污染后的语音信号,即原

语音信号。

4程序调试及运行结果

4.1切比雪夫低通数字滤波器

将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切

比雪夫低通滤波器进行滤波。MATLAB程序如下,仿真处理如图4.1所示。

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

蜥信号采集与频谱分析

[x,Fs,bits]=wavreadCC:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:,1)';

t=0:1/Fs:(length(x)-l)/Fs;%U'tl'nj

figure(1);

subplot(2,1,1);

plot(t,x);

title('语音信号波形')jxlabelC时间/s');ylabelC幅度');

y=fft(x,1024);

f=(Fs/1024)*(0:512):

subplot(2,1,2);

plot(f,abs(y(1:513)));

title('语音信号频谱');xlabelC频率/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('噪声波形');xlabelf时间/s');ylabelC幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

title('噪声频谱');x:abel('频率/Hz');ylabel:'幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥噪声与语音信号叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

title('参加噪声后的信号波形');xlabelC时间/s');ylabel('幅度');

subplot(212);

plot(f,abs(yl(1:513)));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

嬲低通滤波器

fp=6000;fc=8000;Fs=22050;

rp=l;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]=chebyl(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('切比雪夫低通滤波器');

xlabelC频率/Hz');ylabel(,损耗/dB');

gridon;

yd二filter(Bz,Az,xl);

figure(5);

subplot(2,1,1);plotyd);

滤波后信号波形');xlabel('时间/s');y:abel('幅度');

ydd=fft(yd,1024);

subplot(2,1,2);plotIf,abs(ydd(l:513)));

titleC滤波后信号频谱');xlabel(,频率/Hz');ylabel('幅度');

sound(yd,22050,bits;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

唳声波形

20004000600080001000012000

加入嫌声后的信号波形

£jWlii——

,100.511.522533.5

时间后

图4.1切比雪夫低通滤波器处理噪声图

4.2切比雪夫高通数字滤波器

将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切

比雪夫高通滤波器进行语音信号的滤波。MATLAB程序如下,仿真处理如图4.2

所示。

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥信号采集与频谱分析

[x,Fs,bits]=wavread(,C:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:,l)f;

t=0:1/Fs:(length(x)T)/Fs;%时间

figure(l);

subplot(2,1,1);

plot(t,x);

title('语音信号波形');xlabelC时间/s');ylabel('幅度');

y=fft(x,1024);

f=(Fs/1024)*(0:512):

subplot(2,1,2);

plot(f,abs(y(1:513)));

title('语音信号频谱')jxlabelC频率/Hz');ylabel('幅度');

sound(x,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%生成模拟噪声

fn=100;%噪声频率

zs=0.5*sin(2*pi*fn*t);%噪声信号

figure(2);

subplot(211);

plot(t,zs)

title('噪声波形');x:abel('时间/s');ylabel(J幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

title('噪声频谱');xlabel(,频率/Hz');ylabel「幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥信号与噪声叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

titleC参加噪声后的信号波形');xlabel('时间/s');ylabelC幅度’);

subplot(212);

plot(f,abs(yl(1:513;));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%

%高通滤波

fp=450;fc=150;Fs=22050;

rp=l;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]=cheblord(wap,was,rp,rs,'s');

[B,A]=chebyl(N,rp,wc,'high','s');

[Bz,Az]=bi1inear(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,xl);

figure(5);

subplot(2,1,1);plot(t,yd);

title('滤波后信号波形');xlabel('时间/s');y:abel('幅度');

ydd=fft(yd,1024);

subplot(2,1,2);plot(f,abs(ydd(l:513)));

title('滤波后信号频谱');xlabelC频率/Hz');ylabcl('幅度');

sound(yd,22050,bits;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

语音信号谀形

0.5

0

e

s

■0.5

0.511.522.533.5

时何/s

加入收泮后的信号波形

时间,8

加入联而后的18号频谓

3比寓火芯通3波0

2000KCOGXWaow1000012000

第孙他

建波后信号波形

©2

94

00.511.522.533.5

时间牌

建波后信号领涝

60

3

20

200040006COO80001000012000

图4.2切比雪夫高通滤波器处理噪声图

4.3切比雪夫带通数字滤波器

将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切

比雪夫带通滤波器进行语音信号的滤波。MATLAB程序如下,仿真处理如图4.3

所示。

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

嬲信号采集与频谱分析

[x,Fs,bits]=wavreadC:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:,D,;

t=0:1/Fs:(length(x)T)/Fs;%时间

figure(l);

subplot(2,1,1);

plot(t,x);

title('语音信号波形');xlabel('时间/s');ylabcl('幅度');

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('噪声波形');x:abel('时间/s');ylabcl('幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

title('噪声频谱');x:abel('频率/Hz');ylabel:'幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

嬲信号与噪声叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

title('参加噪声后的信号波形');xlabelC时间/s');ylabelC幅度');

subplot(212);

plot(f,abs(yl(1:513)));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%

%带通滤波

fsl=100;fpl=400;fpu=4000;fsu=500;Fs=22050;

rp=l;rs=10;

wp=2*pi*[fpl,fpu]/Fs;

ws=2*pi*[fsl,fsu]/Fs;

Fs=Fs/Fs;

wap二2*tan(wp/2);was=2*tan(ws/2);

[N,wc]=cheblord(wap,was,rp,rs,'s');

[B,A]=chebyl(N,rp,wc,'s');

[Bz,Az]=bilinear(B,A,Fs);

[h,w]=freqz(Bz,Az,512,Fs*22050);

figure(4);

plot(w,abs(h))

title('切比雪夫带通滤波器');

xlabel()频率/Hz');ylabelC损耗/dB');

gridon;

yd=filter(Bz,Az,xl);

figure(5);

subplot(2,1,1);plot(t,yd);

title(,滤波后信号波形');xlabel时间/s');y:abel('幅度');

ydd=fft(yd,1024);

subplot(2,1,2);plot(f,abs(ydd(l:513)));

title('滤波后信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(yd,22050,bits;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

20004000600080001000012000

»$/Hz

图4.3切比雪夫带通滤波器处理噪声图

4.4Blackman窗低通滤波器

将语音信号和噪声信号叠加可以得到含噪声信号,分析其频谱特性之后用

Blackman窗低通滤波器进行语音信号的滤波。MATLAB程序如下,仿真处理如

图4.4所示。

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥信号采集与频谱分析

[x,Fs,bits]=wavread(,C:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:»1)*;

t=0:1/Fs:(length(x)T)/Fs;%时间

figure(l);

subplot(2,1,1);

plot(t,x);

title('语音信号波形');xlabelC时间/s');ylabel('幅度');

y=fft(x,1024);

f=(Fs/1024)*(0:512):

subplot(2,1,2);

plot(f,abs(y(1:513)));

title('语音信号频谱')jxlabelC频率/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('噪声波形');x:abel('时间/s');ylabel(J幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

title('噪声频谱');xlabel(,频率/Hz');ylabel「幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥噪声与语音信号叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

titleC参加噪声后的信号波形');xlabel('时间/s');ylabelC幅度’);

subplot(212);

plot(f,abs(yl(1:513;));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

fp=4000;fc=6000;Fs=22050;

rp=l;rs=100;

wp=2*pi*fp/FS;

ws=2*pi*fc/FS;

Bt=ws-wp;

NO=ceil(ll*pi/Bt);

N=NO+mod(NO+1,2);

wc=(wp+ws)/2/pi;

hn=firl(N-l,wc,blackman(N));

X=conv(hn,x);

sound(X,FS,bits);

Xl=fft(X,1024);

figure(4);

subplot(211);plot(X);

titleC滤波后的信号波形');xlabelC时间/s');ylabel('幅度');

subplot(212);

plot(f,Xl(ydd(l:513;));

title('滤波后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

语台信号波形

2

时间这

m入嗔声后的信守装形

电波后的信守跋史

608ICOOO12030

须率"HZ

图4.4Blackman窗低通滤波器处理噪声图

4.5Blackman窗高通滤波器

将语音信号和噪声信号叠加可以得到含噪声信号,分析其频谱特性之后用

Blackman窗高通滤波器进行语音信号的滤波。MATLAB程序如下,仿真处理如

图4.5所示。

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%信号采集与频谱分析

[x,Fs,bits]=wavread(,C:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:,1)';

t=0:1/Fs:(length(x)T)/Fs;%时间

figure(l);

subplot(2,1,1);

plot(t,x);

title。语音信号波形')jxlabel(J时间/s');ylabel('幅度');

y=fft(x,1024);

f=(Fs/1024)*(0:512);

subplot(2,1,2);

plot(f,abs(y(1:513)J);

title('语音信号频谱')jxlabelC频率/Hz');ylabelC幅度');

sound(x,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

嬲生成模拟噪声

fn=100;%噪声频率

zs=0.5*sin(2*pi*fn*t);%噪声信号

figure(2);

subplot(211);

plot(t(1:128),zs(1:128))

title('噪声波形');xlabelC时间/s');ylabelC幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

titleC噪声频谱');xlabelC频率/Hz');ylabel(幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

嬲噪声与语音信号叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

title(,参加噪声后的信号波形');xlabelC时间/s');ylabcl('幅度');

subplot(212);

plot(f,abs(yl(1:513;));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

fp=450;fc=l50;Fs=22050;

rp=l;rs=100;

wp二2*pi*Fp/Fs;

ws=2*pi*fc/Fs;

Bt=wp-ws;

N0=ceil(ll*pi/Bt);

N=N0+mod(N0+l,2);

wc=(wp+ws)/2/pi;

hn=firl(N-l,wc,*high*,blackman(N));

X=conv(hn,x);

sound(X,Fs,bits);

Xl=fft(X,1024);

figure(4):

subplot(211);plot(X);

title('滤波后的信号波形');xlabelC时间/s'J;ylabel('幅度');

subplot(212);

plot(f,abs(XI(1:513)));

title('滤波后的信号频谱');xlabelC频率/Hz');ylabel('幅度');

照声波形

WfRj.'S

唤声城w

300

200

100

200040006000800)100W12COO

加入塌声后的信号波形

时间侑

加入堤声后的信号嫉语

«

9

600010000

痰率Mz

05

图4.5Blackman窗高通滤波器处理噪声图

4.6Blackman窗带通滤波器

将语音信号和噪声信号叠加可以得到含噪声信号,分析其频谱特性之后用

Blackman窗带通滤波器进行语音信号的滤波。MATLAB程序如下,仿真处理如

图4.6所示c

elf;clc;closeall;clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

烟信号采集与频谱分析

[x,Fs,bits]=wavread:'C:\WINDOWS\Media\WindowsXP关机.wav');

x=x(:,1)';

t=0:1/Fs:(length(x)T)/Fs;%时间

figure(1);

subplot(2,1,1);

plot(t,x);

titleC语音信号波形');xlabelC时间/s');ylabel('幅度');

y=fft(x,1024);

f=(Fs/1024)*(0:512):

subplot(2,1,2);

plot(f,abs(y(1:513)J);

title('语音信号频谱');xlabelC频率/Hz');ylabel('幅度');

sound(x,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

厥生成模拟噪声

fn=8000;%噪声频率

zs=0.5*sin(2*pi*fn*t);%噪声信号

figure(2);

subplot(211);

plot(t,zs)

title('噪声波形');x”bel('时间/s');ylabelC幅度');

zsl=fft(zs,1024);

sound(zs,Fs,bits);

subplot(2,1,2)

plot(f,abs(zsl(1:513)));

title('噪声频谱')ixlabeK,频率/Hz');ylabel{'幅度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%信号与噪声叠加

xl=x+zs;

yl=fft(xl,1024);

figure(3);

subplot(211);plot(t,xl);

titleC参加噪声后的信号波形');xlabel('时间/s');ylabelC幅度');

subplot(212);

plot(f,abs(yl(1:513;));

titleC参加噪声后的信号频谱');xlabel('频率/Hz');ylabel('幅度');

sound(xl,Fs,bits);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

与带通加窗滤波

FS=22050;

wlp=400*2*pi/FS;wup=4000*2*pi/FS;

wls=100*2*pi/FS;wus=500*2*pi/FS;

Bt=wlp-wls;

N0=ceil(ll*pi/Bt.);

N=N0+mod(N0+l,2);

wc=[(wls+wlp)/2/pi,(wus+wup)/2/pi];

hn=firl(N-l,wc,blackman(N));

X=conv(hn,x);

sound(X,FS,bits);

Xl=fft(X,1024);

figure⑷;

subplot(211);plot(X);

title('滤波后的信号波形')ixlabelC时间/s'):ylabel('幅度');

subplot(212);

plot(f,abs(XI(1:513:));

title('滤波后的信号频谱')jxlabelC频率/Hz');ylabel('幅度');

诺言信号领港

60

1000012000

频率,'HZ

加入娱声后的信号波形

时间,S

加入唉声后的信号须造

020004000600000001000012000

频率

图4.6Blackman窗带通滤波器处理噪声图

5课程设计体会

为期一周的数字信号课程设计让我亲身体验到了数字信号的设计不仅需要

很扎实的理论知识而且需要有细心,沉着的头脑。

课程设计过程中我获益匪浅.首先对数字信号处理这门课程有了更深的了

解,因为课程设计本身要求将以前所学的理论知识运用到实际的设计当中去,在

设计过程中,无形中便加深了对数字信号处理的了解及运用能力,对课本以及以

前学过的知识有了一个更好的总结与理解;以前的数字信号处理实验只是针对某

一个简单的信号进行处理,而课程设计对我们的总体设计的要求更严格,需要通

过翻阅复习以前学过的知识确立了实验总体设计方案,在程序调试的过程中总会

出现一些问题,需要我们细心解决,所以这一周下来,我对程序错误的排查能力

有了很大的提高;再次,通过此次课程设计,我对实验所用到的MATLAB软件有

了初步的了解,这对我们以后的工作和学习都很有帮助。

这次课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工

作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。有的积极查

询相关资料,并且经常聚在一起讨论各个方案的可行性。在课程设计中只有一个

人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可

能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。而这次设计

也正好锻炼我们这一点,这也是非常珍贵的。

通过这次课程设计,我想说:为完成这次课程设计我们确实很辛苦,但苦中

仍有乐,和团队人员这十儿天的一起工作的日子,让我们有说有笑,相互帮助,

配合默契,多少人间欢乐在这里泗下,大学里一年的相处还赶不上这一周的课设,

我感觉和同学们之间的距离更加近了。这个课程设计确实很累,最后程序调试成

功的时候,我们的心中就不免兴奋,不免冲动。以前种种艰辛这时就变成了最甜

美的回忆!

这次课程设计终于完成了,在设计中遇到了很多问题,最后在老师的辛勤指

导下,终于迎刃而解。同时,在老师的身上我学得到很多实用的知识,在此我表

示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!

6预习题局部

(1)设计卷积运算的演示程序

分别动态演示两个序列进行线性卷积xl(n)*x2(n)和圆周卷积xl(n)Ox2(n)

的过程;要求分别动态演示翻转、移位、乘积、求和的过程,程序及波形图如下

所示:

线性卷积程序:

n=T5:18;

M=17;

yn二zeros(1,19);

figure(1)

stem(yn);

xlabcl('n')

ylabel(*y(n)')

xnl=[201157050229];

xml=[zeros(1,11)xnlzeros(l,11)];

figure(2)

stem(n,xml)

xlabel('m')

ylabelCxl(m)')

xn2=[0.22.45.1710.320.1732.2540.8845.8745.8740.8832.252D.17

10.35.172.40.2];

xm2=[fliplr(xn2)zeros(1,18)];

figure(3)

stem(n,xm2)

xlabel('m,)

ylabelCx2(N-m)J)

title('n=0')

yn(l)=sum((xml.*xm2)');

figure(4)

stem(yn)

xlabelCn))

ylabel(*y(n),)

title('n=NJ)

forN=1:17

xm3=[zeros(1,N)fliplr(xn2)zeros(1,M)];

figure()

stem(n,xm3)

xlabel(in)

ylabel(*x2(N-m)J)

title(,n=N,)

M二M-l;

yn(N+1)=sum((xm1.*xn3));

figure()

stem(yn)

xlabel(*n)

ylabel('y(n)')

title(Jn=W)

end

xm3=[zeros(l,18)fliplr(xn2)]

figure()

stem(xm3);

xlabel('m')

ylabelCx2(N-m),)

title(,n=N,)

yn(19)=sum((xml.*xm3)');

figure()

stem(yn)

xlabel(*n,)

ylabel(*y(n)')

title('n=N')

5101520

图6.1线性卷积结果略图

圆周卷积程序如下:

n=0:17;

yn=zeros(l,18);

figure(1)

stcm(yn);

xlabel('n*)

ylabelCy(n)')

xnl=[201157050229];

xnll=[xnl,zeros(1,6)]

figure(2)

stem(n,xnl1)

xlabcl(,m')

ylabel(*xl(m)1)

xn2=[00.22.45.1710.320.1732.2540.8845.8745.8740.8832.2520.17

10.35.172.40.20];

xm2=[fliplr(xn2)zeros(1,length(xn2)-length(xnl1))];

figure(3)

stem(n,xm2)

xlabcl(,m')

ylabel(*x2(m)')

title(*n=0,);

yn(l)=sum((xnll.*xm2)');

figure(4)

stem(yn)

xlabel('n')

ylabel(*y(n)')

title('n=N')

forN=l:17

xml=[fliplr(xnl(l:N))fliplr(xnll(N+l:18))];

figure0

stem(n,xml)

xlabel('in*)

ylabel(*xl(N-m)')

title(*n=N,)

yn(N)=sum((xml.*xm2)');

figure()

stem(n,yn)

xlabel('n')

ylabel(*y(n),)

title(,n=N,)

end

figure()

xml=fliplr(xnll);

stem(n,xml)

xlabel('in')

ylabel(*xl(N-m)')

title('n=N')

yn(12)=sum((xmll.*xn2)');

figure()

stem(n,yn)

xlabclCn,)

ylabel(*y(n)')

titleC0=^)

分析•:当N<18时,圆周卷积发生混叠;

图6.2圆周卷积结果略图

FFT程序如下:

ml=wavread(,C:\Windows\Media\tada.wav');ml=ml'(1,:)

m2=[l2.436.1712.9322.1732.2540.8845.87...

45.8740.8832.2522.1712.936.172.431]:

subplot(421);stem(ml);xlabel('n*);ylabel(*xl(n)');

subplot(422);stem(m2);xlabel('n');ylabel(*x2(n)');

y=conv(ml,m2);

subplot(423);stem(y;;xlabelCn');ylabel('y');

N=max(length(ml),length(m2));

Xl=fft(ml,25);X2=fft(m2,25);

subplot(424);stem(Xl);xlabelCn*);ylabelCXI');

subplot(425);stem(X2);xlabel(,n');ylabel(*X2');

Y1=X1.*X2;

subplot(426);stem(Yl);xlabelCn');ylabel('Yl');

Y2=fft(y);

subplot(427);stem(Y2);xlabel(,n');ylabelCY2f);

图6.3FFT结果图

(2)编写程序演示采样定理(时域采样、频谱周期延拓),同时演示采样频率小于

2fc时,产生的混叠效应:

①对下面连续信号进行采样:

a,

%⑺=Aesin(Qor)w(r),A=/7,4=小历乃,〃=学号,A为幅度因子,a为衰

减因子,R)为模拟角频率,其中n为学号(例如,王墨同学n=23)

②要求输入采样频率fs(根据程序处理需要指定范围)后,在时域演示信号波

形、采样脉冲及采样后信号;在频域演示不同采样频率下对应信号的频谱。

采样程序如下所示:

fs=input(,请输入采样频率:’);

n=input('请输入三位学号:‘);

t=0:1/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论