电子科技大学-2014数字信号处理课程设计.docx

上传人:wj 文档编号:150585 上传时间:2023-04-28 格式:DOCX 页数:8 大小:133.97KB
下载 相关 举报
电子科技大学-2014数字信号处理课程设计.docx_第1页
第1页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第2页
第2页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第3页
第3页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第4页
第4页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第5页
第5页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第6页
第6页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第7页
第7页 / 共8页
电子科技大学-2014数字信号处理课程设计.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子科技大学-2014数字信号处理课程设计.docx

《电子科技大学-2014数字信号处理课程设计.docx》由会员分享,可在线阅读,更多相关《电子科技大学-2014数字信号处理课程设计.docx(8页珍藏版)》请在冰点文库上搜索。

电子科技大学-2014数字信号处理课程设计.docx

2014数字信号处理课程设计

学号

姓名

分工

2012019040026

朱清

码代码

2012019040030

任慧君

分析题目

2012019010030

杨倩然

负责撰写报告

题目1:

设计音频降噪算法,并用MATLAB仿真实现。

1)读入一段音频后添加噪声,必须包括两种不同的噪声,信噪比:

0dB~10dB;

2)分别采用滑动平均滤波器,直接频域滤波,以及谱分析后设计滤波器滤波三种方法实现,并对比效果。

3)给出各种方案的设计依据、代码、频响曲线,以及输入输出对比图。

1)读入音频并添加噪声

因为我使用的版本是matlab2014,所以很多函数可能跟老师讲的和旧版的DSP书不太一样,不过可以在2012及其以上的版本运行(我都试过)。

我们选择一个时长较短的音频(梁静茹的loveiseverything)使用函数audioread读入。

使用awgn在信号中插入高斯白噪声。

同时,为了让效果明显应让信噪比尽量大一点,故使用信噪比为8DB和9DB的两种噪声。

相关代码:

%读入语音信号

[sound,fs]=audioread('music.wav');[sound,fs]=audioread('music.wav');

%playsong;

song=audioplayer(y,Fs);play(song);

N=length(sound);df=fs/N;

n=1:

N/2;

fx=df*(n-1);

sound1=awgn(sound,8,'measured');

noise=awgn(sound1,9,'measured');audiowrite('noise.wav',noise,fs);

%addtwonoises;

%playnoise;

%noisysong=audioplayer(noise,fs);

%play(noisysong);fy=fft(noise);

soundfft=fft(sound);fy=fft(noise);figure

(1);

subplot(2,1,1),plot(fx,abs(soundfft(n))),title('原始音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');subplot(2,1,2),plot(fx,abs(fy(n))),title('加噪后音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');

下图为原始音频与加噪后的声音音频的频域图像对比:

原始音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

加噪后音频的频域图像

10000

度 5000

00 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

2)滑动滤波器设计

从教材上我们可以知道滑动平均滤波器的表达式



y[n]



M-1x[n

l0



l]/M经过多次试

验发现三阶滑动平均滤波器在此效果最好故我们使用三阶滑动平均滤波器。

相关代码:

%moving-averagefilter

movingnoise=zeros(length(noise)-2,1);fori=3:

N,

movingnoise(i-2)=(noise(i)+noise(i-1)+noise(i-2))/3;

end

noisey=fft(movingnoise);

n1=1:

length(movingnoise)/2;

noisex=n1*(fs/length(movingnoise));figure

(2),

subplot(2,1,1),plot(fx,abs(fy(n))),title('噪声音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');subplot(2,1,2),plot(noisex,abs(noisey(n1))),title('三阶滑动平均后音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');

%playthenoisysongaftermoving-averagefilter

%dnoisysong=audioplayer(dnoise);

%play(dnoisysong);

经过三阶滑动滤波器之后的输入输出对比图:

噪声音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

三阶滑动平均后音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

3)直接频域滤波

直接频域滤波即是使用理想低通滤波器,我们将截止频率设定为4000HZ,用在频域矩阵上直接取0的方法实现。

再通过IFFT反变换得到时域。

相关代码:

%directlyfilter

directffty=zeros(size(fy));fori=1:

length(noise),

if(fx(i)<4000),directffty(i)=fy(i);else

break;end

endfigure(3),

subplot(2,1,1),plot(fx,abs(fy(n))),title('噪声音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');subplot(2,1,2),plot(fx,abs(directffty(n))),title('直接频域滤波后音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');

%playthenoisysongafterdirectlyfilted

%directy=ifft(directffty);

%audiodirecty=audioplayer(directy,fs);

%play(audiodirecty);

使用直接频域滤波后音频频域的输入输出对比图:

噪声音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

直接频域滤波后音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

4)谱分析后设计滤波器滤波

我们使用MATLAB工具fdatool来设计滤波器。

框图如下:

用FDATOOL设计的滤波器得到的参数在代码开始,10阶的KAISER滤波器,FS=16000,FC=4000;

相关代码:

%designafirwindowfilterusingfdatool

Num=[-0.0298

-0.0349

0.0418

0.0516

-0.0669

-0.0943

0.1579

0.4746

0.4746

0.1579

-0.0943

-0.0669

0.0516

0.0418

-0.0349

-0.0298]';

a=1;

filtednoise=filter(Num,a,noise);fftfilt=fft(filtednoise);figure(4),

subplot(2,1,1),plot(fx,abs(fy(n))),title('噪声音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');subplot(2,1,2),plot(fx,abs(fftfilt(n))),title('构造滤波器滤波后音频的频域图像'),xlabel('频率(Hz)'),ylabel('幅度');

%playtheaudioafterfirwindow

%filtaudio=audioplayer(filtednoise,fs);

%play(filtaudio)

使用构造滤波器滤波后的音频频域对比图:

噪声音频的频域图像

10000

度 5000

0

0 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

构造滤波器滤波后音频的频域图像

10000

度 5000

00 1000 2000 3000 4000 5000 6000 7000 8000

频率(Hz)

总结:

我们可以通过函数audioplay()生成播放对象再使用play()来播放滤波后的信号从听觉上进行对比。

(R2014A)

1.加入噪声后的音频播放起来会明显听到噪音。

2.滑动平均滤波器对于整个频域上的噪声都有过滤作用,但是若阶数过高容易使信号失真。

3.直接频域滤波能够使截止频率以上的噪声频率完美过滤,但是对截止频率以下的噪声频率无能为力,并且在实际中难以实现。

4.FDATOOL设计滤波器滤波与直接频域滤波有同样的缺点,但是是实际能够实现的,工程可用的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2