当前位置:文档之家› matlab报告基于matlab有噪声语音信号处理

matlab报告基于matlab有噪声语音信号处理

Matlab课程设计报告题目:基于MATLAB有噪声语音信号处理系(院):计算机与信息工程学院专业:通信工程班级:10623102指导教师:学年学期:2011 ~ 2012 学年第2 学期简介:我们通信工程专业在实践中经常碰到需要对已接收信号进行处理的情况,而滤波器设计在数字信号处理中占有极其重要的地位。

本课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪语音信号进行时域、频域分析和滤波。

通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。

在设计实现的过程中,我们使用双线性变换法设计IIR数字滤波器,对模拟加噪语音信号进行低通滤波、高通滤波及带通滤波,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。

1 绪论:数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。

数字滤波器, 是数字信号处理中及其重要的一部分。

本课题采用IIR 滤波器对加噪声音信号进行处理。

IIR滤波器采用递归型结构,即结构上带有反馈环路。

IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。

同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

2.原始语音信号采集与处理2.1语音信号的采集由于MATLAB只识别格式为.wav的声音文件,我们利用PC机上的声卡和WINDOWS操作系统进行数字信号的采集。

启动录音机进行录音,以文件名“Orisound”保存入原程序所属的文件夹中。

可以看到,文件存储器的后缀默认为.wav ,这是WINDOWS操作系统规定的声音文件存的标准。

程序流程图:2.2语音信号的时频分析利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。

再对其进行采样,记住采样频率和采样点数。

对语音信号Orisound.wav进行采样其程序如下:[y,fs,nbits]=wavread (‘OriSound’); %把语音信号加载入MATLAB仿真软件平台中画出语音信号的时域波形,再对语音信号进行频谱分析。

在本次设计中,我们利用fft函数对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。

程序如下:[y,fs,nbits]=wavread(‘Orisound’); %语音信号的采集sound(y,fs,nbits); %语音信号的播放n=length(y) ;Y=fft(y,n); %快速傅里叶变换figure;subplot(2,1,1);plot(y);title(‘原始信号波形’,’fontweight’,’bold’);axis([ 78000 80000 -1 1]);grid;subplot(2,1,2);plot(abs(Y));title(‘原始信号频谱’,’fontweight’,’bold’);axis([ 0 150000 0 4000]);grid;程序结果如下图:2.3语音信号加噪与频谱分析利用MATLAB中的随机函数Randn(m,n)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。

主要程序如下:[y,fs,nbits]=wavread('OriSound');sound(y,fs,nbits);n = length (y) ;Noise=0.2*randn(n,2);s=y+Noise;sound(s);figure;subplot(2,1,1);plot(s);title('加噪语音信号的时域波形','fontweight','bold');axis([ 78000 80000 -1 1]);grid;S=fft(s);subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形','fontweight','bold');axis([ 0 150000 0 4000]);grid;程序结果如下图:3设计数字滤波器3.1数字滤波器设计的基本思路数字滤波器的实现有两个关键步骤:一个从数字域到模拟域间的变换,这个变换实现了数字滤波器技术指标到模拟滤波器技术指标的转换,同样也实现了模拟滤波器系统函数到数字滤波器系统函数的转换;另一个是从模拟滤波器技术指标到满足该指标的模拟滤波器的设计。

3.2 模拟滤波器概述用模拟—数字变换法设计IIR数字滤波器,首先必须设计一个模拟滤波器,它有许多不同的类型,主要有以下两种类型:(1)、巴特沃思(Botterworth简写BW)滤波器。

BW滤波器是根据幅频特性在通带内具有最拼图特性而定义的滤波器,对一个N阶低通滤波器来说,所谓最平ω=处都为零。

BW滤波器的另一个坦特性就是模拟函数的前(2N-1)阶导数在0特性是在通带和阻带内的幅频特性始终是频率的单调下降函数,且其模拟函数随阶次N 的增大而更接近于理想低通滤波器。

(2)、切比雪夫(Chbyshev 简写为CB )滤波器。

CB 低通滤波器的模拟函数由切比雪夫多项式定义,且在通带内的幅频响应是波动的,在阻带则单调变化。

3.3设计IIR 滤波器目前IIR 数字滤波器设计的最通用的方法是借助于模拟滤波器的设计方法。

模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此,充分利用这些已有的资源将会给数字滤波器的设计带来很大方便。

IIR 数字滤波器的设计步骤是:(1)、按一定规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标;(2)、根据转换后的技术指标设计模拟低通滤波器()G s ;(3)、再按一定规则将G(s)转换成H(z)。

若设计的数字滤波器是低通的,那么上述设计工作可以结束,若所设计的是高通,带通或带阻滤波器,那么还有步骤(4):(4)、将高通、带通、或带阻数字l 不去的技术指标先转化为低通模拟滤波器的技术指标,然后按照上述步骤(2)设计出低通()G s ,再将()G s 转换为所需的H(z)。

利用模拟滤波器设计IIR 数字低通滤波器的步骤:(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。

(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。

(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。

(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。

程序如下:Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);[n11,wn11]=buttord(wp,ws,1,50,’s’);[b11,a11]=butter(n11,wn11,’s’);[num11,den11]=bilinear(b11,a11,0.5);[h,w]=freqz(num11,den11);figure;plot(w*8000*0.5/pi,abs(h));legend(‘IIR低通滤波器’,’Location’,’NorthWest’);grid;程序结果如下图:3.2验证所设计的滤波器:为了验证滤波器的可使用性,我们用常用的sin函数来进行验证。

其具体程序及运行结果如下:t=[0:1/1023:1];s=sin(2*pi*t);N=length(s);y=s+0.5*rand(1,N);subplot(2,1,1);plot(y);title('加噪语音信号的时域波形','fontweight','bold');S=fft(y);subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形','fontweight','bold');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'); %求S域的频率响应的参数[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换z11=filter(num11,den11,s);sound(z11);m11=fft(z11); %求滤波后的信号figure;subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');grid;subplot(2,2,2);plot(abs(m11),'r');title('滤波后信号的频谱','fontweight','bold');grid;subplot(2,2,3);plot(y);title('滤波前信号的波形','fontweight','bold');grid;subplot(2,2,4);plot(z11);title('滤波后的信号波形','fontweight','bold');grid;程序结果如下图:由所得结果可知,所设计的滤波器符合要求。

4 滤波用设计好的IIR低通滤波器对加噪的语音信号进行滤波,程序如下:[y,fs,nbits]=wavread (‘OriSound’); %IIR低通n = length (y) ; %求出语音信号的长度Noise=0.2*randn(n,2); %随机函数产生噪声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’); %求S域的频率响应的参数[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换z11=filter(num11,den11,s);sound(z11);m11=fft(z11); %求滤波后的信号figure;subplot(2,2,1);plot(abs(S),’g’);title(‘滤波前信号的频谱’,’fontweight’,’bold’);axis([ 0 150000 0 4000]);grid;subplot(2,2,2);plot(abs(m11),’r’);title(‘滤波后信号的频谱’,’fontweight’,’bold’);axis([ 0 150000 0 4000]);grid;subplot(2,2,3);plot(s);title(‘滤波前信号的波形’,’fontweight’,’bold’);axis([95000 100000 -1 1]);grid;subplot(2,2,4);plot(z11);title(‘滤波后的信号波形’,’fontweight’,’bold’);axis([95000 100000 -1 1]);grid;程序结果如下图:经过以上的加噪处理后,可在Matlab中用函数sound对声音进行回放。

相关主题