当前位置:文档之家› 音频信号的谱分析及去噪

音频信号的谱分析及去噪

课程设计任务书
课程设计学生日志
课程设计考勤表
课程设计评语表
音频信号的谱分析及去噪
一、研究背景:………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
二、设计方案…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
三、设计目的和意义
通过MATLAB编程,用FFT函数绘制出音频信号的频谱。

用噪音去干扰音频信号,画出干扰后信号的频谱。

这样观察对比,便可分析出噪声对音频信号的干扰。

主要目的是通过设计FIR 数字滤波器滤除噪音信号,体会滤波器可提取有用信号消除干扰的作用。

去噪,可以减少或消除信号传输过程中的干扰,从而达到有效传输。

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
四、设计原理
1、FFT原理:运用快速傅里叶变换得信号的频谱,快速傅里叶变换是可以用计
算机编程实现的一种快速求得信号频谱的方法。

在MATLAB 编程中可以直接调用FFT 函数。

2、FIR 数字滤波器的设计步骤:
1)将给定的数字滤波器性能指标转化成相应的模拟滤波器性能指标。

2)将模拟滤波器的性能指标变换成模拟低通滤波器的性能指标。

3)用所得的模拟低通滤波器的性能指标,利用某种模拟滤波器逼近方法,设计得出该滤波器。

低通滤波器的频率响应:
设计滤波器时主要考虑四个指标:通带截止频率、阻带起始频率、通带衰减、阻带衰减。

五、 详细设计步骤
1. 用Windows 附件中的录音机录制了一段歌曲,并且由MATLAB 中的FFT 函数绘制出它的频谱图和时域波形。

N=1024;%采样点数
fs=20000; %语音信号采样频率为20000
[x0,fs,NBTS]=wavread('d:\输入噪声\ly.wav'); % ly 为原始语音信号
[m0,n0]=size(x0); x0=wavread('d:\




\ly.wav'); %读取音频信号 sound(x0,fs); %播放音频信号 figure(1)
阻带
过渡带
通带
plot(linspace(0,m0/fs,m0),x0); %做原始语音信号的时域图
title('输入音频信号');
y0=fft(x0,N); %对输入音频信号做1024点FFT变换
f0=fs*(0:N/2-1)/N; figure(2)
plot(f0,abs(y0(1:512)));
title('音频信号的频谱'); %做原始语音信号的FFT频谱图
axis([0 5000 0 70]);
仅从其时域波形来看,无法看出其波形的正确性,由于是多频率的信号因此其时域波形与单频信号肯定存在很大差别。

无噪声音频频谱图:
2.用上述方法从新录入此段歌曲,且在录得过程中加入钥匙响声噪音。

编写程序画出其时域波形和频谱,同时观察加入噪声后的音频信号的频谱与无噪声音频信号频谱的区别。

N=1024;
fs=20000;
[x1,fs,NBTS]=wavread('d:\输入噪声\lyy.wav'); % lyy带噪声的音频信号[m1,n0]=size(x1);
x1=wavread('d:\输入噪声\lyy.wav'); %读取信号
sound(x1,fs); %播放音频
figure(3)
plot(linspace(0,m1/fs,m1),x1); %做原始语音信号的时域图
title('带噪声的音频信号');
y1=fft(x1,N); %对信号FFT变换
f1=fs*(0:N/2-1)/N;
figure(4)
plot(f1,abs(y1(1:512)));
title('带噪声的音频信号频谱'); %做原始语音信号的FFT频谱图
信号的读入直接调用系统函数wavread,从目标文件中读出信号。

带噪声音频信号波形:
将上图与没有带噪声的音频信号相比较,可以看到在原来的基础上加上了一些比较高的频率分量。

最后要将信号无失真恢复出来就必须将该信号通过一个滤
波器,将高频分量滤除。

从信号时域波形可得知其频谱中一定加入了高频分量。

其频谱图如下所示。

3、设计FIR数字滤波器。

首先确定其性能指标
fs=20000;
fedge=[500 600];%通带截止频率和阻带起始频率
mval=[1 0];%通带幅度为1阻带幅度为0
dev=[0.0599 0.00316]; %通带衰减0.5dB,阻带衰减大于等于50dB。

[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs); %计算低通滤波器的技术指标。

b=remez(N,fpts,mag,wt);
[h,w]=freqz(b,1,512);
figure(5)
plot(w/pi,20*log10(abs(h)));
title('低通滤波器频率响应');
axis([0 0.2 -80 20]);
grid;
xlabel('频率/Hz');
ylabel('幅度/db');
设计低通滤波器频率响应波形:
从图形中可以看到与预期设想的基本符合,通带截止频率为500Hz,阻带起始频率为600Hz。

3.让加入噪声后的语音信号通过此低通滤波器,滤波以后得到的信号,画出其时域波形和频谱图。

与第一步中不含噪音的音频信号的频谱进行比较,分析此低通滤波器的性能。

N=1024;
fs=20000;
lb=filter(b,1,x1);%对带有噪声的音频信号进行滤波figure(6)
plot(linspace(0,m1/fs,m1),lb);
title('滤波后的信号');
y2=fft(lb,N); %对滤波后的信号FFT变换
f2=fs*(0:N/2-1)/N;
figure(7)
plot(f2,abs(y2(1:512)));
title('滤波后信号频谱');
axis([0 5000 0 50]);
sound(lb,fs); %播放滤波后的音频信号。

滤波后时域信号波形:
与带噪声的信号相比噪声明显降低了。

滤波信号的频谱图形:
与无噪声的音频信号频谱相比,已经非常接近了,说明滤波器性能达到了预期指标。

可以从此恢复原来音频信号。

5、恢复重建音频信号,调用系统函数wavwrite即可生成音频信号。

lb1=lb/2; %由于加入噪声的缘故,将其幅度减半以免在重新生成音频信号的时候使得信号丢失
wavwrite(lb1,20000,16,'lb.wav'); %重新生成音频信号
将恢复重建的音频信号打开播放,可以感觉到与原来的音频信号基本一样,除了一些频率比较低的噪声没能滤除外,基本达到要求。

六、设计结果及分析
从上面每一部分设计绘出的波形来看,基本达到了本次设计的要求。

主要还存在的问题是由于输入的是音频信号,对于这种具有多个频率的信号不熟悉,并
不像正弦信号那样直观清晰,所以在分析结果时比价困难。

但通过一步一步的分析,到最终将信号恢复,验证了所设计系统的有效性。

七、体会
通过做这个课程设计,自己受益匪浅。

课程设计锻炼了我分析问题解决问题的能力,将所学知识更进一步的理解运用,使我不但从理论上对知识有更深的认识,在实际中有一定了解。

信号经过FFT变换绘出频谱图,更加直观的把信号的特性展现在了面前,这样使得我对信号的认识也有了进一步的了解。

线性调制过程,乘上载波实质就是频谱的搬移过程,观察得到的频谱图,验证了搬移的过程。

本次设计中,最关键的我认为还是滤波器的设计,滤波器设计得好与差将直接影响调制结果,进而影响解调结果,最后将无法得到原始的调制信号,将出现严重的失真。

再有,每次做课程设计之前,自己总会觉得很难,但经过仔细地分析之后,由理论知识作为基础,再进行设计便会觉得不是那么难。

设计过程中,遇到的最大问题是对MATLAB编程在信号处理上的不熟悉,在不断的查阅资料和分析过程中有将以前所学知识进行了一次巩固。

八、参考文献
[1] 程佩青. 数字信号处理教程. 清华大学出版社,2007.2
[2] 曹志刚. 钱亚生.现代通信原理 . 清华大学出版社,2009.9
[3] 张威. MATLAB基础与编程入门. 西安电子科技大学出版社,2008.1
[4] 曾峰. 数字通信原理——基于MATLAB仿真计算. 电子书,2006.1。

相关主题