云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于MATLAB的有噪声的语音信号处理的课程设计

基于MATLAB的有噪声的语音信号处理的课程设计

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 8:43:16

可以看到,随机噪声均匀的分布在整个频谱范围内。

(5)设计FIR和IIR数字滤波器

在MATLAB中,根据频谱特征设计FIR和IIR滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。

低通滤波器的性能指标: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中,利用[N,wc]=butter(N,wc,Rp,As,'s')设计并计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc;[B,A]=cheby1(N,Rp,wpo,'ftypr')设计切比雪夫I型滤波器。

在课程设计中,共设计了六种滤波器对信号进行滤波:FIR低通,高通,带通滤波器,IIR低通,高通,带通滤波器。通过对原始信号和加噪信号的频谱进行观察,原始语音信号频谱集中在低频段,而随机噪声接近均匀的分布在整个频谱范围内,因此推测选用低通滤波器去噪性能要好于高通和带通滤波器。

(6)对污染信号进行滤波

在MATLAB中用FIR和IIR滤波器对加噪信号进行滤波,其中通过利用函数fftfilt用FIR滤波器滤波,通过利用函数filter用IIR滤波器滤波。

(7)回放语音信号

在MATLAB中,通过用sound函数对语音信号进行回放,用以比较各滤波器的滤波效果。

各滤波器设计模块的程序和说明如下:

(1)IIR低通滤波器设计

[y,fs,nbits]=wavread('OriSound.wav'); n = length (y) ; Noise=0.2*randn(n,1); s=y+Noise; S=fft(s); Ft=8000; Fp=1000; Fs=1200; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft;

[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,fs,nbits); m11=fft(z11); figure;

subplot(2,2,1);

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

title('滤波前信号的频谱','fontweight','bold'); axis([ 0 80000 0 4000]); grid;

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

title('滤波后信号的频谱','fontweight','bold'); axis([ 0 80000 0 4000]); grid;

subplot(2,2,3); plot(s);

title('滤波前信号的波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;

subplot(2,2,4); plot(z11);

title('滤波后的信号波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;

结果如下:

%语音信号采集 %计算语音信号长度

%产生随机噪声信号Noise

%将Noise添加到原始信号,得到污 染信号s

%快速傅里叶变换

%低通滤波器的阶数和截止频率 %S域频率响应的参数

%利用双线性变换实现频率响应S域到Z域的变换 %滤波

%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱

%绘出滤波后的信号频谱

%绘出滤波前的信号波形

%绘出滤波后的信号波形

可以看出,滤波后将非低频部分的噪声频率滤掉,但还有一些高于原始语音信号的频率没有被去除。

(2)IIR高通滤波器设计

[y,fs,nbits]=wavread ('OriSound'); n = length (y) ; Noise=0.2*randn(n,1); s=y+Noise; S=fft(s); Fp1=1200; Fs1=1000; Ft=8000;

wp1=tan(pi*Fp1/Ft); ws1=tan(pi*Fs1/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域转 换 z13=filter(num13,den13,s); %滤波 sound(z13,fs,nbits); %回放滤波后的信号 m13=fft(z13); %滤波后的信号频谱 figure;

subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),'g');

title('滤波前信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;

subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m13),'r');

title('滤波后信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;

subplot(2,2,3); %绘出滤波前的信号波形 plot(s);

title('滤波前信号的波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;

subplot(2,2,4); %绘出滤波后的信号波形 plot(z13);

title('滤波后的信号波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;

结果如下:

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

可以看到,随机噪声均匀的分布在整个频谱范围内。 (5)设计FIR和IIR数字滤波器 在MATLAB中,根据频谱特征设计FIR和IIR滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。 低通滤波器的性能指标: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中,利用[N,wc]=butter(N,wc,Rp,As,'s

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com