当前位置:文档之家› 现代信号处理课设报告

现代信号处理课设报告

中南大学本科生课程设计报告课程名称现代信号处理指导教师赵亚湘学院信息科学与工程学院专业班级通信工程班姓名学号题目一语音信号去噪处理一、设计要求1)在windows系统下的录音机录制一段1s左右的语音信号作为原声信号,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数;2)画出语音信号的时域波形,对采样后的语音进行fft变换,得到信号的频谱特性;对语音信号分别加入正弦噪声和白噪声,画出加噪信号的时域波形和频谱图;3)根据对加噪语音信号谱分析结果,确定滤除噪声滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;4)用所设计的滤波器对加噪的信号进行滤波,在同一个窗口画出滤波前后信号的时域图和频谱图,对滤波前后的信号进行对比,分析信号变化;5)利用sound(x)回放语音信号,验证设计效果。

二、设计思想和系统功能分析②在MATLAB平台上读入语音信号。

③绘制频谱图并回放原始语音信号。

④利用MATLAB编程加入一段正弦波噪音,设计滤波器去噪。

⑤利用MATLAB编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。

⑥通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。

三、设计中关键部分的理论分析与计算,关键模块的设计思路1、语言的录入及处理在MATLAB软件平台下,利用函数wavread()对语音信号采集,并记录采样频率和采样点数。

将语音信号转换成计算机能够运算的有限长序列。

用FFT(傅里叶变换)对其作谱分析。

对信号添加噪声,然后通过窗函数法设计滤波器滤掉该语音信号的噪声,对比滤波前后的语音波形和频谱。

2、时域信号的FFT分析FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

在MATLAB 的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。

函数FFT 用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。

函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。

函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x 为矩阵,按相同方法对x进行处理。

3、滤波方法将信号中特定波段频率滤除的操作称为滤波,它是抑制和防止干扰的一项重要措施。

若有用信号和无用信号在频谱上可区分,则可采用滤波的方法来衰减甚至消除无用信号。

传统的滤波方法是使用滤波器,比如低通、高通、带通、带阻滤波器等,通常按典型的滤波器原型来设计。

典型的滤波器原型有Butterworth, Chebyshev 和elliptical 等几种。

本次设计采用巴特沃斯低通滤波器实现对加正弦噪声信号的滤波处理,采用海明窗实现对加高斯白噪声信号的滤波处理。

四、测试数据、测试输出结果,及必要的理论分析和比较1、加正弦噪声-1-0.500.51原始信号时域图time(s)幅度5001000原始信号频谱图Hz幅度-1-0.500.51滤波前信号时域图time(s)幅度01000200030004000500060005001000滤波前信号频谱图Hz幅度(1)由上图中的时域明显看出加正弦噪声前后信号的改变,频域图更是可以轻易选择低通滤波器去滤掉噪声恢复原声音信号。

-1-0.500.51滤波后信号时域图time(s)幅度5001000滤波后信号频谱图Hz幅度(2)滤波后,效果明显,听声音也可以看出,此次操作的成功。

-250-200-150-100-5050频率响应w/pi幅度2、加高斯白噪声(1)下面两幅图信号时域和频域的对比也能明显看出加噪声前后的差异之处。

而且可以看出,巴特沃斯高通、低通、带通滤波器都不能够滤去这种噪声,因此想到窗函数,而我选择的是海明窗。

00.51 1.52 2.53 3.54-1-0.500.51原始信号时域图time(s)幅度01000200030004000500060005001000原始信号频谱图Hz幅度00.511.522.533.54-1-0.500.51滤波前信号时域图time(s)幅度01000200030004000500060005001000滤波前信号频谱图Hz幅度(2)滤波之后的声音信号显然不适合原声音信号一样,但声音效果还是差不多的。

00.511.522.533.54-1-0.500.51滤波后信号时域图time(s)幅度01000200030004000500060005001000滤波后信号频谱图Hz幅度-70-60-50-40-30-20-10频率响应Hz幅度五、总结,包括设计过程中遇到的问题和解决方法,设计心得与体会等Matlab 是一套高性能的数值计算和可视化软件。

打开matlab 软件,新建new M-File,输入程序代码,代码分为四大块:原始信号程序;噪声信号程序;巴特沃斯低通滤波器设计程序;对信号进行滤波处理程序,当然每个程序包括画图程序。

在编写程序的过程中,有很多需要注意的,比如在利用windows进行录音的时候,windows7录音的格式是.wma格式的,开始是不注意,导致程序一开始运行时就出错,需要用改成.wav格式的,之后对于滤波器性能指标的设计,时域和频谱波形的画图程序显示也需要注意,否则很容易出错,或是显示不了波形。

用巴特沃斯低通滤波器滤除噪声之后,实验总是存在误差,无法完全滤除噪声。

低通滤波后,声音稍微有些发闷、低沉,原因是高频分量被低通滤波器衰减。

但是很接近原来的声音。

如果用高通滤波后,只有少许杂音,原因是低频分量被高通滤波器衰减,而人声部分正好是低频部分,所以只剩下杂音,或者发出高频杂音但人的耳朵听不到。

MATLAB7.0功能十分强大且操作起来比较简单,可以在短时间内掌握其操作要领,同时加深了数字信号处理理论联系实际的学习和运用。

在编程过程中,MATLAB7.0对格式要求非常严格,不能识别中文标点符号,在使用时容易出现错误,导致整个程序不能运行。

在以往,我们都是通过课本来感性的认知语音信号,通过本次的课程设计,让我对语音信号有了一个较为实际的认识。

于此同时,让我们再次把数字信号处理及数字滤波器的设计方法重新进行了复习和学习。

最为重要的是,本次课程设计让我重新审视了学习的过程:只去做实验是不行的,首先还是要思考,遇到了问题查书籍,百度搜索也只是一种手段,更加重要的是要去想,去理解,只有这样才能真正的做好实验。

六、参考文献[1]高西全,丁玉美.数字信号处理(第三版)[M].西安:西安电子科技大学出版社,[2]周玲.基于MATLAB的语音信号数字滤波处理[J].安庆师范学院学报.[3]王薇,张明敏.基于MATLAB的FIR数字滤波器典型设计[J].火力与指挥控制.七、程序源代码清单%第一题(正弦)%信号采样[x,fs,bit]=wavread('C:\Users\ASUS\Desktop\信号课设\相关资料\相关资料\Sounds\bat.wav'); M=size(x,1); %提取采样信号的长度t=(0:length(x)-1)/fs; %计算样本时刻f=fs*(0:(M+1)/2-1)/M+1;x=x(:,1); %只取单声道X=fft(x,M+1);figure(1)subplot(2,1,1);plot(t,x)title('原始信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f,abs(X(1:(M+1)/2)));title('原始信号频谱图')xlabel('Hz');ylabel('幅度');%加正弦白噪声及滤波a=0.02;f1=5000;ts=0:1/fs:(size(x)-1)/fs; %将所加噪声信号的点数调整到与原始信号相同noise=a*sin(2*pi*f1*ts)'; %噪声为5000Hz的正弦信号z=x+noise;Z=fft(z,M+1); %进行N+1点FFT变换fp=3500; %通带截止频率fc=4500; %阻带下限截止频率Rp=3; %通带波纹Rs=30; %阻带波纹Wp=fp/fs*2*pi;Ws=fc/fs*2*pi; %计算对应的数字频率T=2;Fs=1/T; %定义采样间隔wp1=2/T*tan(Wp/2);ws1=2/T*tan(Ws/2); %截止频率预畸变[N,wn]=buttord(wp1,ws1,Rp,Rs,'s');%计算滤波器介数和截止频率[cs,ds]=butter(N,wn,'s'); %计算滤波器系统函数分子分母系数[b,a]=bilinear(cs,ds,Fs); %双线性变换得到数字滤波器系统函数分子分母系数[H,W]=freqz(b,a);y=filter(b,a,z); %对加噪信号进行滤波Y=fft(y,M+1); %对滤波后进行N+1点FFT变换figure(2)subplot(2,1,1); %画滤波前信号波形图和频谱图plot(t,z)title('滤波前信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f,abs(Z(1:(M+1)/2)));title('滤波前信号频谱图')xlabel('Hz');ylabel('幅度');figure(3)subplot(2,1,1); %画滤波后信号波形图和频谱图plot(t,y)title('滤波后信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f,abs(Y(1:(M+1)/2)));title('滤波后信号频谱图')xlabel('Hz');ylabel('幅度');figure(4) %绘制滤波器频率响应plot(W/pi,20*log10(abs(H)))title('频率响应')xlabel('w/pi');ylabel('幅度');sound(5*x,fs)pause;sound(20*x,fs)pause;sound(20*z,fs)pause;sound(20*y,fs) %滤波后的语音信号%第一题(高斯)%信号采样[x,fs,bit]=wavread('C:\Users\ASUS\Desktop\信号课设\相关资料\相关资料\Sounds\bat.wav'); M=size(x,1); %提取采样信号的长度t=(0:length(x)-1)/fs; %计算样本时刻f=fs*(0:(M+1)/2-1)/M+1;x=x(:,1); %只取单声道X=fft(x,M+1);figure(1)subplot(2,1,1);plot(t,x)title('原始信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f,abs(X(1:(M+1)/2)));title('原始信号频谱图')xlabel('Hz');ylabel('幅度');%加高斯白噪声及滤波z2=awgn(x,20); %对信号加信噪比为10的高斯白噪声N2=size(z2,1); %提取采样信号的长度t2=(0:length(z2)-1)/fs; %计算样本时刻f2=fs*(0:(N2+1)/2-1)/N2+1;X2=fft(x,N2+1);Z2=fft(z2,N2+1); %进行N+1点FFT变换fp=1000; %通带截止频率fc=2000; %阻带起始频率Wp=fp/fs*2*pi;Ws=fc/fs*2*pi; %计算对应的数字频率detaw=Ws-Wp;n=ceil(1*pi/detaw);wc=(Wp+Ws)/2;b=fir1(n-1,wc/pi,hamming(n));%选择海明窗,并归一化[H,w]=freqz(b);ma=20*log10(abs(H));v=conv(b,z2); %对加噪信号进行滤波t1=(0:length(v)-1)/fs;V=fft(v,N2+1); %对滤波后进行N+1点FFT变换figure(2)subplot(2,1,1); %画滤波前信号波形图和频谱图plot(t,z2)title('滤波前信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f2,abs(Z2(1:(N2+1)/2)));title('滤波前信号频谱图')xlabel('Hz');ylabel('幅度');figure(3)subplot(2,1,1); %画滤波后信号波形图和频谱图plot(t1,v)title('滤波后信号时域图');xlabel('time(s)');ylabel('幅度');subplot(2,1,2);plot(f2,abs(V(1:(N2+1)/2)));title('滤波后信号频谱图')xlabel('Hz');ylabel('幅度');figure(4) %绘制滤波器频率响应plot(w/pi,ma)title('频率响应')xlabel('Hz');ylabel('幅度');sound(5*x,fs)pause;sound(5*x,fs)pause;sound(5*z2,fs)pause;sound(5*v,fs) %滤波后的语音信号题目二语音信号的延时和混响一.设计要求1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样;2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;4)设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,全通结构的混响器,并画出滤波器的频域响应;5)用自己设计的滤波器对采集的语音信号进行滤波;6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;7)回放语音信号。

相关主题