数字信号处理课程设计报告书课题名称 音频信号的谱分析及滤波姓 名学 号院、系、部 物理与电信工程系 专 业通信工程指导教师2011年 06月24日※※※※※※※※※ ※※ ※※ ※※ ※※※※※※※※※2008级学生数字信号 处理课程设计一、设计任务及要求:设计任务:录制一段音频(如歌曲,说话声等),采用MATLAB工具对此音频信号用FFT作谱分析。
录制一段加入噪声的音频(如在歌声中加入尖锐的口哨声或者其他噪声),采用MATLAB工具对此音频信号用FFT作谱分析。
选择合适的指标,设计FIR数字滤波器,将音频中加入的噪声信号减弱或滤除。
设计要求:(1) 掌握数字信号处理的基本概念,基本理论和基本方法。
(2) 掌握序列快速傅里叶变换方法。
(3) 掌握利用MATLAB对语音信号进行频谱分析。
(4) 掌握MATLAB设计IIR对信号进行滤波的方法。
指导教师签名:2011 年06月14 日二、指导教师评语:指导教师签名:2011年06月26 日三、成绩验收盖章2011年06 月26日音频信号的谱分析及滤波刘娟(湖南城市学院物理与电信工程系通信工程专业,益阳,413000)1设计目的(1) 采用MATLAB工具对音频信号用FFT作谱分析,熟悉MA TLAB在通信原理和数字信号处理中的运用。
(2) 熟悉FFT算法原理和FFT的基本性质。
(3) 设计数字滤波器,滤除音频信号中的噪声,通过观察对音频信号去噪的滤波作用,获得数字滤波器的感性认识。
(4) 通过本课程设计的实践使学生具有一定的实践操作能力,为学生完成毕业设计打下基础。
2设计要求录制一段音频(如歌曲,说话声等),采用Matlab工具对此音频信号用FFT 作谱分析。
录制一段加入噪声的音频(如在歌声中加入尖锐的口哨声或者其他噪声),采用Matlab工具对此音频信号用FFT作谱分析。
选择合适的指标,设计FIR数字滤波器,将音频中加入的噪声信号减弱或滤除。
将处理后的音频信号重新生成.wav文件,收听该音频,根据效果调整滤波器指标重新设计滤波器。
3设计原理傅立叶变换和信号的采样是进行音频分析时用到的最基本的技术。
傅立叶变换是进行频谱分析的基础,信号的频谱分析是指按信号的频率结构,求取其分量的幅值、相位等按频率分布规律,建立以频率为横轴的各种“谱”,如幅度谱、相位谱。
我们经常通过观察幅度谱来对信号进行谱分析。
3.1 FFT算法快速傅里叶变换(Fast Fourier Transform,FFT)有广泛的应用,如数字信号处理、计算大整数乘法、求解偏微分方程等等。
它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
设x(n)为N项的复数序列,由DFT变换,需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的x(n),即N点DFT变换大约就需要N2次运算。
当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N 次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。
这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。
继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。
而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。
3.2 数字滤波器原理(1) 设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
(2) 数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。
(3) 关于用butter函数求系统函数分子与分母系数的几种形式。
a.[b,a]=butter(N,wc,…high'):设计N阶高通滤波器,wc为它的3dB频率。
b.[b,a]=butter(N,wc):当wc为具有两个元素的矢量wc=[w1,w2]时,它设计2N阶带通滤波器。
c.[b,a]=butter(N,wc,…stop'):若wc=[w1,w2],则它设计2N阶带阻滤波器。
如果在这个函数输入变元的最后,加一个变元“s”,表示设计的是模拟滤波器。
(4)wavread函数调用格式y=wavread(file):读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,nbits]=wavread(file):采样值放在向量y中,fs表示采样频率Hz,nbits 表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。
(5) 函数fftfilt函数fftfilt的调用格式为 y=fftfilt(b,x)。
该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。
该函数是通过向量b 描述的滤波器对x数据进行滤波。
4设计程序4.1无噪声的音频信号作FFT谱分析[x,fs,bits]=wavread('my.wav'); %读出信号,采样率和采样位数sound(x,fs,bits); %播放音频X=fft(x,4096);mag=abs(X); %作FFT变换后频谱取模figure(1);subplot(1,2,1);plot(x);title('原始信号波形');subplot(1,2,2);plot(mag);title('原始信号频谱图');xlabel('k');ylabel('|X(k)|');4.2有噪声的音频信号作FFT谱分析figure(2);[x,fs,bits]=wavread('myw.wav'); %读出信号,采样率和采样位数sound(x,fs,bits); %播放音频X=fft(x,4096);mag=abs(X); %作FFT变换后频谱取模figure(1);subplot(1,2,1);plot(x);title('原始信号波形');subplot(1,2,2);plot(mag);title('原始信号频谱图');xlabel('k');ylabel('|X(k)|');4.3将音频中加入的噪声信号减弱或滤除x=wavread('myw.wav');N=6; %滤波器的阶数Wn=0.2; %滤波器的通带截止频率[b,a]=butter(N,Wn); %传递函数表示的数字滤波器X=fft(x,2048);figure(2)subplot(2,2,1);plot(x);title('滤波前信号的波形');subplot(2,2,2);plot(abs(X));title('滤波前信号的频谱');xlabel('k');ylabel('|X(k)|');y=fftfilt(b,x); %该函数是通过向量b描述的滤波器对x数据进行滤波Y=fft(y,2048);sound(y); %播放滤波后的音频subplot(2,2,3);plot(y);title('滤波后信号的波形');subplot(2,2,4);plot(abs(Y));title('滤波后信号的频谱');xlabel('k');ylabel('|Y(k)|');5设计结果及分析5.1无噪声的音频作FFT谱分析的频谱图图5.1 无噪声的音频作FFT谱分析的频谱图从上图可知,时域图中无噪声信号在300000s左右的振幅最大,即信号最强;频谱图中信号主要集中在0KHZ至4000KHZ频段,且在两端幅值最大。
5.2 有噪声的音频作FFT谱分析的频谱图图5.2 有噪声的音频做FFT谱分析的频谱图从上图可知,时域图中有噪声信号在90000s和220000s附近幅值最大;频谱图中信号在0KHZ和4000KHZ附近的幅值最大,。
5.3 将音频中加入的噪声信号减弱或滤除的频谱分析图5.3 将音频中加入的噪声信号减弱或滤除的频谱分析图分别比较上图中滤波前后时域和频域的波形可知,滤波后信号幅值都有所下降,但与无噪声信号波形还有一定的差异,说明噪声只是部分被减弱,并没有被完全滤除。
5.4 实验结果分析在程序调试过程时,我们可以从信号滤波前后的波形图以及频谱图上看出变化。
当然,也可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳朵听力的限制,有些情况下我们是很难听出异同的,但是此次程序的语音信号在滤波前后变化还是比较明显的。
6 设计总结对于这次的课程设计感觉很是有收获,平常看书听课总觉得这门课乏味而没有多大用处。
通过这次课程设计的实践,在老师和同学的帮助下我看到了数字信号处理的实际应用,解决了把原来在上课时不理解的知识转化成了现实中的问题,感觉自己又把原来的知识学习了一遍。
通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。
学会设计分析不同滤波器对相应的信号,并且清楚的看到了在学习知识的前提下要在现实中多实践,才能更好的解决实际问题。
在使用MATLAB中,我也对此软件有了更好的应用和认识,因为它可以是你更好的使课本上的死知识变成自己的实际应用所以课程设计对我们的帮助很大。
最后我相信通过使用此软件越来越熟练,在解决实际问题和分析问题上也就更容易。
参考文献[1] 程佩青. 数字信号处理教程[M]. 北京:清华大学出版社,2006:182~184.[2] 张志涌. 精通matlab6.5版[M].北京:北京航天航空大学出版社,2005:70~84.[3] 曹志刚. 钱亚生.现代通信原理[M].北京:清华大学出版社,2006:100~131.[4] 刘树棠. 信号与系统[M]. 西安:西安交通大学出版社,2005:25~78.[5] 刘毅敏. 基于matlab的调制解调器的设计[M]. 武汉:武汉科技大学,2006:26~32.[6] 郭文彬. 通信原理基于matlab的计算机仿真[M].北京:北京邮电大学出版社,2006:76~95.[7] 张磊.毕靖,郭莲英.MA TLAB实用教程[M].北京:人民邮电出版社,2008:68~89.[8] 郭仕剑等. MA TLAB7.X数字信号处理[M].北京:人民邮电出版社,2006:38~54.[9] 薛年喜. MA TLAB在数字信号处理中的应用[M]. 北京:清华大学出版社,2003:46~54.。