您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页基于Matlab的有噪声语音信号处理

基于Matlab的有噪声语音信号处理

来源:化拓教育网
题目:基于Matlab的有噪声语音信号处理

摘要

滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。

关键词:数字滤波器 MATLAB 窗函数法 巴特沃斯 切比雪夫 双线性变换

目录

1、绪论··4

2、作业内容与要求··5

3、作业设计的具体实现··6

3.1 语音信号的采集··6

3.2 语音信号的时频分析··6

3.3 语音信号加噪与频谱分析··8

3.4 设计FIR和IIR数字滤波器··9

3.5 用滤波器对加噪语音信号进行滤波··20

3.6 比较滤波前后语音信号的波形及频谱··21

3.7 回放语音信号··31

3.8 设计GUI界面··31

4、队员贡献及民主评价··34

5、小结··34

6、致谢··35

1、绪论

数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选择性。FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。 FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。

IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、

乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化。

2、作业内容与要求

选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计FIR和IIR数字滤波器, 并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号。最后,设计一个信号处理系统界面。

3 作业设计的具体实现

3.1 语音信号的采集

利用PC机上的声卡和WINDOWS操作系统可以进行数字信号的采集。将话筒输入计算机ide语音输入到插口上,启动录音机。按下录音按钮,接着将话筒对着PC的外放,记录音乐播放器正在播放的音乐,记录一段时间后停止录音。以文件名“speech”保存在

一个文件中。可以看但文件后缀名为.wav,这是WINDOWS操作系统规定的声音文件存的标准。

3.2语音信号的时频分析

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍wavread 函数几种调用格式。

(1)y=wavread(file)

功能说明:读取file所规定的wav文件,返回采样值放在向量y中。

(2)[y,fs,nbits]=wavread(file)

功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。

接下来,对语音信号speech.wav进行采样。其程序如下:

[y,fs,nbits]=wavered (‘speech’);把语音信号加载入Matlab 仿真软件平台中 然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下: Xk=fft(xn,N) ;参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下:

[y,fs,nbits]= wavread('F:\\speech.wav');

N=length(y); %求出语音信号长度

Y=fft(y,N); %傅里叶变换

figure;

subplot(2,1,1);

plot(y);title('原始信号波形');

subplot(2,1,2);

plot(abs(Y));

title('原始信号频谱');

axes1('position', [1 1 1 1]);

程序结果如下图:

3.3 语音信号加噪与频谱分析

在MATLAB中产生高斯白噪声非常方便,我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。

在本次设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用Randn(m,n)函数。语音信号添加噪声及其频谱

分析的主要程序如下:

[y,fs,nbits]=wavread('speech'); %窗函数带通滤波

n=length(y); %求出语音信号的长度

noise=0.01*randn(n,2); %随机函数产生噪声

s=y+noise;

sound(s);

figure;

subplot(2,1,1);

plot(s);title('加噪语音信号的时域波形');

S=fft(s);

subplot(2,1,2);

plot(abs(s));

title('加噪语音信号的频域波形');

程序结果如下图:

3.4 设计FIR和IIR数字滤波器

3.4.1 FIR数字滤波器的设计与实现

FIR:有限脉冲响应滤波器。有限说明其脉冲响应是有限的。与IIR相比,它具有线性相位、容易设计的优点。这也就说明,IIR滤波器具有相位不线性,不容易设计的缺点。而另一方面,IIR却拥有FIR所不具有的缺点,那就是设计同样参数的滤波器,FIR比IIR需要更多的参数。这也就说明,要增加DSP的计算量。DSP需要更多的计算时间,对DSP

的实时性有影响。FIR滤波器的设计比较简单,就是要设计一个数字滤波器去逼近一个理想的低通滤波器。通常这个理想的低通滤波器在频域上是一个矩形窗。也就是把这个时域采样序列去乘一个窗函数,就把这个无限的时域采样序列截成了有限个序列值。但是加窗后对此采样序列的频域也产生了影响:此时的频域便不在是一个理想的矩形窗,而是成了一个有过渡带,阻带有波动的低通滤波器。通常根据所加的窗函数的不同,对采样信号加窗后,在频域所得的低通滤波器的阻带衰减也不同。通常我们就是根据此阻带衰减去选择一个合适的窗函数。如矩形窗、汉宁窗、汉明窗、BLACKMAN窗、凯撒窗等。

面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:

(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。

(2)构造希望逼近的频率响应函数。 (3)计算h(n).。 (4)加窗得到设计结果。

接下来,我们根据语音信号的特点给出有关滤波器的技术指标: 低通滤波器的性能指标:

fp=1000Hz,fc=1200Hz,As=50db ,Ap=1dB

高通滤波器的性能指标:

fp=3500Hz,fc=4000Hz,As=50dB,Ap=1dB

带通滤波器的性能指标:

fp1=1200Hz,fp2=4000Hz,fc1=1000Hz,fc2=3200,As=100dB,Ap=1dB

在Matlab中,可以利用函数fir1设计FIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。

MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:

[B,A]=cheby1(N,Rp,wpo,’ftypr’) [B,A]=cheby1(N,Rp,wpo,’ftypr’,’s’)

下面我们将给出设计FIR数字滤波器的主要程序和图像

%===================FIR==========================

低通滤波器

Ft=8000;

Fp=1000;

Fs=1200;

wp=2*Fp/Ft;

ws=2*Fs/Ft;

rp=1;

rs=50;

p=1-10.^(-rp/20);

s=10.^(-rs/20);

fpts=[wp ws];

mag=[1 0];

dev=[p s];

[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);

b21=fir1(n21,wn21,kaiser(n21+1,beta));

[h,w]=freqz(b21,1);

figure;

plot(w*8000*0.5/pi,abs(h));

title('FIR低通滤波器','fontweight','bold');

%===================FIR高

Ft=8001;

Fp=4000;

Fs=3500;

wp=2*Fp/Ft;

==========================

ws=2*Fs/Ft;

rp=1;

rs=50;

p=1-10.^(-rp/20);

s=10.^(-rs/20);

fpts=[ws wp];

mag=[0 1];

dev=[p s];

[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);%kaiserord求阶数截止频率

b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta));%由firl设计滤波器

[h,w]=freqz(b23,1);

figure;

plot(w*12000*0.5/pi,abs(h));

title('FIR高通滤波器');

axis([2500 5500 0 1.2]);

%===================FIR带

Fp1=1200;

Fp2=3000;

==========================

Fs1=1000;

Fs2=3200;

Ft=8000;

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);

[n22,wn22]=buttord(wp,ws,1,50,'s'); [b22,a22]=butter(n22,wn22,'s'); %求低通滤波器阶数和截止频率

%求S域的频率响应参数

[num2,den2]=lp2bp(b22,a22,sqrt(wp1*wp*2),bw);%将S域低通参数转为带通的

[num22,den22]=bilinear(num2,den2,0.5); %双线性变换实现S域到Z域的转换

[h,w]=freqz(num22,den22);%根据参数求出频率响应

figure;

plot(w*8000*0.5/pi,abs(h));

axis([0 4000 0 1.5]);

legend('用butter 设计');

3.4.2 IIR数字滤波器的设计与实现

对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:

(1)确定所需类型数字滤波器的技术指标。

(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)

(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。

(4)设计模拟低通滤波器。

(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。

(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。

我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。

下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤: (1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。

(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。

(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。

(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。

MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:

[B,A]=cheby1(N,Rp,wpo,’ftypr’) [B,A]=cheby1(N,Rp,wpo,’ftypr’,’s’)

函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计

滤波器时只需要代入相应的实现函数即可。下面我们将给出IIR数字滤波器的主要程序。

%===================IIR==========================

低通滤波器

Fp=1000;

Fs=1200;

Ft=8000;

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');

[num11,den11]=bilinear(b11,a11,0.5);

[h,w]=freqz(num11,den11);

figure;

plot(w*8000*0.5/pi,abs(h));

legend('用butter设计');

%===================IIR高

Ft=8000;

==========================

Fp=4000;

Fs=3500;

w1=tan(pi*Fp/Ft);

ws1=tan(pi*Fs/Ft);

wp=1;

ws=w1*wp/ws1;

[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率

[b13,a13]=cheby1(n13,1,wn13,'s'); % 求S域的频率响应是参数

[num,den]=lp2hp(b13,a13,wn13);

[num13,den13]=bilinear(num,den,0.5);%利用双线性变换实现S域到Z域转换

[h,w]=freqz(num13,den13);

figure;

plot(w*21000*0.5/pi,abs(h));

title('IIR高通滤波器');

legend('用cheby 1设计');

%===================IIR带

Fp1=1200;

Fp2=3000;

==========================

Fs1=1000;

Fs2=3200;

Ft=8000;

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*wp*2),bw);%将S域低通参数转为带通的

[num12,den12]=bilinear(num2,den2,0.5); %双线性变换实现S域到Z域的转换

[h,w]=freqz(num12,den12); %根据参数求出频率响应

figure;

plot(w*8000*0.5/pi,abs(h));

axis([0 4000 0 1.5]);

legend('用butter设计');

3.5 用滤波器对加噪语音信号进行滤波

用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:

y=fftfilter(h,x,M).其中,h是系统单位冲击响应向量;X是输入序列向量;y是系统的输出序列向量;M是由用户的选择的输入序列的分段长度,缺省时,默认的输入向量的重常度M=512.

函数filter的调用格式:yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。

3.6 比较滤波前后语音信号的波形及频谱

主要程序及运行结果如下:

%==============双线性变换法======================

[y,fs,nbits]=wavread('speech'); %双线性低通滤波器

n=length(y); %求出语音信号长度

noise=0.01*randn(n,2); %随机函数产生噪声

s=y+noise; %语音信号加入噪声

S=fft(s); %傅里叶变换

Fp=1000;

Fs=1200;

Ft=8000;

低通滤波器

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');

[num11,den11]=bilinear(b11,a11,0.5);

z11=filter(num11,den11,s);

sound(z11);

m11=fft(z11); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

grid;

subplot(2,2,2);

plot(abs(m11),'r');

title('滤波后信号的频谱');

grid;

subplot(2,2,3);

plot(s);

title('滤波前的信号波形');

grid;

subplot(2,2,4);

plot(z11);

title('滤波后的信号波形');

%==============

线

[y,fs,nbits]=wavread('speech'); %双线性高通滤波器

n=length(y); %求出语音信号长度

noise=0.01*randn(n,2); %随机函数产生噪声

s=y+noise; %语音信号加入噪声

======================

S=fft(s); %傅里叶变换

Ft=8000;

Fp=4000;

Fs=3500;

w1=tan(pi*Fp/Ft);

ws1=tan(pi*Fs/Ft);

wp=1;

ws=w1*wp/ws1;

[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率

[b13,a13]=cheby1(n13,1,wn13,'s'); % 求S域的频率响应是参数

[num,den]=lp2hp(b13,a13,wn13);

[num13,den13]=bilinear(num,den,0.5);

z13=filter(num13,den13,s);

sound(z13);

m13=fft(z13); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m13),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(s);

title('滤波前的信号波形');

subplot(2,2,4);

plot(z13);

title('滤波后的信号波形');

%==============

线

[y,fs,nbits]=wavread('speech'); %双线性带通滤波器

n=length(y); %求出语音信号长度

======================

noise=0.01*randn(n,2); %随机函数产生噪声

s=y+noise; %语音信号加入噪声

S=fft(s); %傅里叶变换

Fp1=1200;

Fp2=3000;

Fs1=1000;

Fs2=3200;

Ft=8000;

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*wp*2),bw);%将S域低通参数转为带通的

[num12,den12]=bilinear(num2,den2,0.5);

z12=filter(num12,den12,s);

sound(z12);

m12=fft(z12); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m12),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(s);

title('滤波前的信号波形');

subplot(2,2,4);

plot(z12);

title('滤波后的信号波形');

%==============

[y,fs,nbits]=wavread('speech'); %窗函数低通

n=length(y); %求出语音信号的长度

noise=0.01*randn(n,2); %随机函数产生噪声

m=y+noise; %语音信号加入噪声

==========================

S=fft(m); %傅里叶变换

Ft=8000;

Fp=1000;

Fs=1200;

wp=2*Fp/Ft;

ws=2*Fs/Ft;

rp=1;

rs=50;

p=1-10.^(-rp/20);

s=10.^(-rs/20);

fpts=[wp ws];

mag=[1 0];

dev=[p s];

[n21,wn21,beta,]=kaiserord(fpts,mag,dev);

b21=fir1(n21,wn21,kaiser(n21+1,beta));

z21=fftfilt(b21,m);

sound(z21);

m21=fft(z21); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m21),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(m);

title('滤波前信号的波形');

subplot(2,2,4);

plot(z21);

title('滤波后信号的波形');

%==============

窗函数法高通滤波器

==========================

[y,fs,nbits]=wavread('speech'); %窗函数高通滤波

n=length(y); %求出语音信号的长度

noise=0.01*randn(n,2); %随机函数产生噪声

m=y+noise; %语音信号加入噪声

S=fft(m); %傅里叶变换

Ft=8001;

Fp=4000;

Fs=3500;

wp=2*Fp/Ft;

ws=2*Fs/Ft;

rp=1;

rs=50;

p=1-10.^(-rp/20);

s=10.^(-rs/20);

fpts=[ws wp];

mag=[0 1];

dev=[p s];

[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);%kaiserord求阶数截止频率

b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta));%由firl设计滤波器

z23=fftfilt(b23,m);

sound(z23);

m23=fft(z23); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m23),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(m);

title('滤波前信号的波形');

subplot(2,2,4);

plot(z23);

title('滤波后信号的波形');

%==============

[y,fs,nbits]=wavread('speech'); %窗函数带通滤波

n=length(y); %求出语音信号的长度

noise=0.01*randn(n,2); %随机函数产生噪声

s=y+noise; %语音信号加入噪声

==========================

S=fft(s); %傅里叶变换

Fp1=1200;

Fp2=3000;

Fs1=1000;

Fs2=3200;

Ft=8000;

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);

[n22,wn22]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率

[b22,a22]=butter(n22,wn22,'s');

z22=fftfilt(b22,s);

sound(z22);

m22=fft(z22); %求滤波后的信号

figure;

subplot(2,2,1);

plot(abs(S),'g');

title('滤波前信号的频谱');

subplot(2,2,2);

plot(abs(m22),'r');

title('滤波后信号的频谱');

subplot(2,2,3);

plot(s);

title('滤波前信号的波形');

subplot(2,2,4);

plot(z22);

title('滤波后信号的波形');

3.7 回放语音信号

经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y).可以察觉滤波前后的声音有明显的变化。

3.8 设计GUI界面

3.8.1 系统界面设计工具—GUI概述

图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。 FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。 GUI创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)代码。

3.8.2 界面设计及使用说明

首先我们新建一个GUI文件:File/New/GUI 如下图所示:

选择Blank GUI(Default)。

然后添加Push Button和Static Text控件,布局之后,得到如图所示的结果

然后双击各个控件,就可以为控件添加相应的函数,实现相应的功能。

4、队员贡献及民主评价 5、小结

这次作业我们利用Matlab这一工具对添加噪声后的语音信号进行分析。通过这次作业,我们加深了对滤波器方面知识的理解。用自己设计的各种滤波器对污染信号进行处理,也让我更加清楚的理解了滤波器的滤波特性,比较并找到最合适的滤波器。同时通过这次实践,加深了我们对《信号与系统》的理解,之前对于采样、混叠以及各种滤波等概念不是很明白,这次通过亲身实践才慢慢明白。还有之前一直不明白傅里叶变换、拉普拉斯变换、z变换等有什么用,以为学了也是白学,但这次彻底改变了我们的观点。从这次作业

中,我们深刻的明白了两句话,1:凡事存在即有理; 2:实践是检验真理的唯一标准!

致谢

在《信号与系统》这门课中,感谢赵茗老师对我们的悉心指导,虽然有时候课堂到课率并不是很理想,但赵老师依旧不厌其烦,认真负责的讲解着每一个章节,每一个有用的知识点,尽可能的让每一位去上课的同学觉得自己没有白来,尽到了一位好老师的职责,体现了一位好老师的风范!在这里,我们仅向认真负责的赵老师奉上最诚挚的敬意和最衷心的问候!您辛苦了!当然,我们也要一并感谢为我们默默付出的助教,谢谢你们!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务