基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf

上传人:tbuqq 文档编号:5207612 上传时间:2020-02-20 格式:PDF 页数:19 大小:788.41KB
返回 下载 相关 举报
基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf_第1页
第1页 / 共19页
基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf_第2页
第2页 / 共19页
基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf_第3页
第3页 / 共19页
基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf_第4页
第4页 / 共19页
基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf》由会员分享,可在线阅读,更多相关《基于MATLAB的有噪声的语音信号处理的课程设计要点.pdf(19页珍藏版)》请在三一文库上搜索。

1、DSP 实验课程设计实验报告 DSP 实验课程设计实验报告 姓名:学号:班级: 1.课程设计题目: 基于 MATLAB 的有噪声的语音信号处理的课程设计。 2.课程设计的目的: 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应 的结论,再利用MATLAB 做为编程工具进行计算机实现,从而加深对所学知识的理解,建立 概念。 3.课程设计的要求: (1) 熟悉离散信号和系统的时域特性。 (2) 掌握序列快速傅里叶变换FFT方法。 (3) 学会 MATLAB 的使用,掌握MATLAB 的程序设计方法。 (4) 利用 MATLAB 对语音信号进行频谱分析。 (5) 掌握 M

2、ATLAB 设计各种数字滤波器的方法和对信号进行滤波的方法。 4.课程设计的内容: 录制一段语音信号,对语音信号进行频谱分析,利用MATLAB 中的随机函数产生噪声加 入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR 和 IIR 数字滤波器,并 对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。 5.课程设计的步骤: (1)语音信号的获取 通过录音软件录制一段语音“数字信号处理”,命名为“ OriSound ” ,时长大约1 到 2 秒,在 MATLAB 中,通过使用wavread 函数,对语音进行采样: y,fs,nbits=wavread(OriS

3、ound); %语音信号的采集 采样值放在向量y 中,采样频率为fs ,采样位数为nbits 。 DSP 实验课程设计实验报告 (2)语音信号的频谱分析 画出语音信号的时域波形,然后对语音信号进行频谱分析,在 MATLAB 中,通过使用fft 函数对信号进行快速傅里叶变换,得到信号的频谱特性。 因此采集语音并绘出波形和频谱的模块程序如下: y,fs,nbits=wavread(OriSound); %语音信号的采集 sound(y,fs,nbits); %语音信号的播放 n=length(y) ; %计算语音信号的长度 Y=fft(y,n); %快速傅里叶变换 figure; subplot(

4、2,1,1); %绘出时域波形 plot(y); title(原始信号波形,fontweight,bold); axis( 00000 80000 -1 1); %通过尝试确定合适的坐标参数 grid; subplot(2,1,2); %绘出频域频谱 plot(abs(Y); title(原始信号频谱,fontweight,bold); axis( 0 150000 0 4000); %通过尝试确定合适的坐标参数 grid; 结果如下: DSP 实验课程设计实验报告 可以看到,语音信号的频率集中在低频部分。 (3)产生噪声信号 在 MATLAB 中,通过使用randn 函数产生随机噪声信号,并

5、加到语音信号中得到被污染 的语音信号,回放语音信号。 产生随机噪声: Noise=0.2*randn(n,1); 其中用 0.2 倍乘噪声用来适当削减噪声的作用,便于对语音信号进行处理并比较效果。 (4)污染信号频谱分析 对被污染的加噪信号进行时域和频域分析。 加噪声并分析信号波形频谱的模块程序及说明如下: DSP 实验课程设计实验报告 y,fs,nbits=wavread(OriSound.wav); %语音信号采集 sound(y,fs,nbits); %回放语音信号便于比较效果 n = length (y) ; %计算语音信号长度 Noise=0.2*randn(n,1); %产生随机噪

6、声信号Noise s=y+Noise; %将 Noise 添加到原始信号,得到污 染信号 s sound(s); %回放污染信号s figure; subplot(2,1,1); %绘制加噪信号时域波形 plot(s); title(加噪语音信号的时域波形,fontweight,bold); axis( 00000 80000 -1 1); grid; S=fft(s); %对 s进行快速傅里叶变换得到频谱 subplot(2,1,2); %绘制加噪信号频域频谱 plot(abs(S); title(加噪语音信号的时域波形,fontweight,bold); axis( 0 150000 0

7、4000); grid; 结果如下: DSP 实验课程设计实验报告 可以看到,随机噪声均匀的分布在整个频谱范围内。 (5)设计 FIR 和 IIR 数字滤波器 在 MATLAB 中,根据频谱特征设计FIR 和 IIR 滤波器。在 Matlab 中,可以利用函数fir1 设计 FIR 滤波器,利用函数butter,cheby1 设计 IIR 滤波器,利用Matlab 中的函数freqz 画出 各步滤波器的频率响应。 低通滤波器的性能指标:fp=1000Hz , fc=1200Hz ,As=100db ,Ap=1dB 高通滤波器的性能指标:fp=3500Hz , fc=4000Hz ,As=100

8、dB ,Ap=1dB ; 带通滤波器的性能指标:fp1=1200Hz , fp2=3000hZ , fc1=1000Hz , fc2=3200Hz , As=100dB , Ap=1dB 在 MATLAB 中,利用 N,wc=butter(N,wc,Rp,As,s)设计并计算巴特沃斯模拟滤波器的阶 数 N 和 3dB 截止频率wc;B,A=cheby1(N,Rp,wpo,ftypr)设计切比雪夫I 型滤波器。 在课程设计中,共设计了六种滤波器对信号进行滤波:FIR 低通,高通,带通滤波器, IIR 低通,高通,带通滤波器。通过对原始信号和加噪信号的频谱进行观察,原始语音信号 频谱集中在低频段,

9、而随机噪声接近均匀的分布在整个频谱范围内,因此推测选用低通滤波 器去噪性能要好于高通和带通滤波器。 (6)对污染信号进行滤波 在 MATLAB 中用 FIR 和 IIR 滤波器对加噪信号进行滤波,其中通过利用函数fftfilt用 FIR 滤波器滤波,通过利用函数filter 用 IIR 滤波器滤波。 (7)回放语音信号 在 MA TLAB 中,通过用sound 函数对语音信号进行回放,用以比较各滤波器的滤波效 果。 各滤波器设计模块的程序和说明如下: (1)IIR 低通滤波器设计 DSP 实验课程设计实验报告 y,fs,nbits=wavread(OriSound.wav); %语音信号采集

10、n = length (y) ; %计算语音信号长度 Noise=0.2*randn(n,1); %产生随机噪声信号Noise s=y+Noise; %将 Noise 添加到原始信号,得到污 染信号 s 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);

11、%利用双线性变换实现频率响应S 域到 Z 域的变换 z11=filter(num11,den11,s); %滤波 sound(z11,fs,nbits); %回放滤波后的信号 m11=fft(z11); %滤波后的信号频谱 figure; subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g); title(滤波前信号的频谱,fontweight,bold); axis( 0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m11),r); title(滤波后信号的频谱,fontweight,bo

12、ld); axis( 0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤波前信号的波形,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形 plot(z11); title(滤波后的信号波形,fontweight,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看出, 滤波后将非低频部分的噪声频率滤掉,但还有一些高于原始语音信号的频率 没

13、有被去除。 (2)IIR 高通滤波器设计 y,fs,nbits=wavread (OriSound); %语音信号采集 n = length (y) ; %计算语音信号的长度 Noise=0.2*randn(n,1); %产生随机噪声 s=y+Noise; %语音信号加入噪声得到加噪信号 S=fft(s); %快速傅里叶变换 Fp1=1200; Fs1=1000; Ft=8000; wp1=tan(pi*Fp1/Ft); ws1=tan(pi*Fs1/Ft); wp=1; ws=wp1*wp/ws1; n13,wn13=cheb1ord(wp,ws,1,50,s); %模拟的低通滤波器阶数和截

14、止频率 DSP 实验课程设计实验报告 b13,a13=cheby1(n13,1,wn13,s); %S 域的频率响应的参数 num,den=lp2hp(b13,a13,wn13); %S 域低通参数转为高通的 num13,den13=bilinear(num,den,0.5); %利用双线性变换实现频率响应S域到 Z 域转 换 z13=filter(num13,den13,s); %滤波 sound(z13,fs,nbits); %回放滤波后的信号 m13=fft(z13); %滤波后的信号频谱 figure; subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g

15、); title(滤波前信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m13),r); title(滤波后信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤波前信号的波形,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形

16、plot(z13); title(滤波后的信号波形,fontweight,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看出,滤波后将原始信号绝大部分频谱滤掉,剩下噪声信号,不能采用。 (3)IIR 带通滤波器设计 y,fs,nbits=wavread (OriSound); %语音信号采集 n = length (y) ; %计算语音信号的长度 Noise=0.2*randn(n,1); %产生随机噪声 s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换 Ft=8000; Fp=1000; F

17、s=1200; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50; p=1-10.(-rp/20); %通带阻带波纹 q=10.(-rs/20); fpts=wp ws; DSP 实验课程设计实验报告 mag=1 0; dev=p q; n21,wn21,beta,ftype=kaiserord(fpts,mag,dev); %由 kaiserord 求滤波器的阶数和截 止频率 b21=fir1(n21,wn21,kaiser(n21+1,beta); %设计滤波器 z21=fftfilt(b21,s); %滤波 sound(z21,fs,nbits); %回放滤波后的信

18、号 m21=fft(z21); %滤波后的信号频谱 figure(4); subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g); title(滤波前信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m21),r); title(滤波后信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤波前信号的波形

19、,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形 plot(z21); title(滤波后的信号波形,fontweight,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看出,大部分噪声被去除,与低通IIR 滤波器的效果差不多,稍好于低通。 (4)FIR 低通滤波器 y,fs,nbits=wavread (OriSound); %语音信号采集 n = length (y) ; %计算语音信号的长度 Noise=0.

20、2*randn(n,1); %产生随机噪声 s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换 Ft=8000; Fp=1000; Fs=1200; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50; p=1-10.(-rp/20); %通带阻带波纹 q=10.(-rs/20); fpts=wp ws; DSP 实验课程设计实验报告 mag=1 0; dev=p q; n21,wn21,beta,ftype=kaiserord(fpts,mag,dev); %由 kaiserord 求滤波器的阶数和截止频 率 b21=fir1(n21,wn21,k

21、aiser(n21+1,beta); %由 fir1 设计滤波器 z21=fftfilt(b21,s); %滤波 sound(z21,fs,nbits); %回放滤波后的信号 m21=fft(z21); %滤波后的信号频谱 figure(4); subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g); title(滤波前信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m21),r); title(滤波后信号的频谱,fontweight,

22、bold); axis(0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤波前信号的波形,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形 plot(z21); title(滤波后的信号波形,fontweight,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看出: 大部分的噪声频率被滤除,几乎完整的保留了原始信号的频谱,滤波效果最

23、好,但是由于在低频部分仍然有随机信号的干扰,所以回放信号较原始信号音质稍差。 (5)FIR 高通滤波器 y,fs,nbits=wavread (OriSound); %语音信号采集 n = length (y) ; %计算语音信号的长度 Noise=0.2*randn(n,1); %产生随机噪声 s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换 Ft=8000; Fp=4000; Fs=3500; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50; p=1-10.(-rp/20); %通带阻带波纹 DSP 实验课程设计实验报告 q=10.(-rs

24、/20); fpts=ws wp; mag=0 1; dev=p q; n23,wn23,beta,ftype=kaiserord(fpts,mag,dev); b23=fir1(n23,wn23,high,kaiser(n23+1,beta); %由 fir1 设计滤波器 z23=fftfilt(b23,s); %滤波 sound(z23,fs,nbits); %回放滤波后的信号 m23=fft(z23); %滤波后的信号频谱 figure; subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g); title(滤波前信号的频谱,fontweight,bold)

25、; axis(0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m23),r); title(滤波后信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤波前信号的波形,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形 plot(z23); title(滤波后的信号波形,fontweig

26、ht,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看到, 滤波后只剩部分高频噪声频率,原始语音信号频率被滤除,因此无法恢复语 音信号。 (6)FIR 带通滤波器 y,fs,nbits=wavread (OriSound); %语音信号采集 n = length (y) ; %计算语音信号的长度 Noise=0.2*randn(n,1); %产生随机噪声 s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换 Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; Ft=22

27、00; wp1=tan(pi*Fp1/Ft); %带通到低通滤波器参数转换 wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); DSP 实验课程设计实验报告 w=wp1*wp2/ws2; bw=wp2-wp1; wp=1; ws=(wp*wp2-w.2)/(bw*w); n22,wn22=buttord(wp,ws,1,50,s); %低通滤波器阶数和截止频率 b22,a22=butter(n22,wn22,s); %S 域的频率响应的参数 z22=fftfilt(b22,s); %滤波 sound(z22,fs,nbits)

28、; %回放滤波后的信号 m22=fft(z22); %滤波后的信号频谱 figure; subplot(2,2,1); %绘出滤波前的信号频谱 plot(abs(S),g); title(滤波前信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,2); %绘出滤波后的信号频谱 plot(abs(m22),r); title(滤波后信号的频谱,fontweight,bold); axis(0 80000 0 4000); grid; subplot(2,2,3); %绘出滤波前的信号波形 plot(s); title(滤

29、波前信号的波形,fontweight,bold); axis(00000 100000 -1 1); grid; subplot(2,2,4); %绘出滤波后的信号波形 plot(z22); title(滤波后的信号波形,fontweight,bold); axis(00000 100000 -1 1); grid; 结果如下: DSP 实验课程设计实验报告 可以看到, 滤波器将部分低频滤去,也就滤掉了部分原始信号频率,因此无法正常恢复 语音信号。 (8)设计 GUI界面 创建一个 GUI 界面,可以方便的管理各个模块。 首先通过FileNewGUI创建一个GUI 界面,然后对界面进行设计,最

30、后对各个空 间编写回调函数。 效果如下: DSP 实验课程设计实验报告 其中, “原始语音频谱分析”可以对原始语音信号进行波形和频谱的显示,“加噪后频谱 分析”可以对加噪后语音信号进行波形和频谱的显示,“滤波器对加噪语音信号进行滤波模 块”中的各滤波器控件分别可以利用相应的滤波器对加噪后的语音信号进行滤波处理并回 放。 6.课程设计总结: 在这次课程设计中,我设计制作了加噪语音信号滤波提取的系统,综合运用了之前几次 实验,尤其是滤波器设计方面的MATLAB知识,并最后得到了比较理想的效果。通过这次 课程设计, 我加深了对滤波器方面知识的理解。用自己设计的各种滤波器对污染信号进行处 理,也让我更

31、加清楚的理解了滤波器的滤波特性,比较并找到最合适的滤波器。 这次课程设计是一个不小的挑战,通过不断的学习和尝试,最终制作完成, 在这个过程 中我也有了很多的提高和收获。比如, 如何在语音信号中添加噪声,如何灵活的利用各种滤 波器对语音信号进行处理,如何用 MA TLAB 设计 GUI 界面并对控件添加回调函数等。其中, 印象最深的是GUI 界面的设计。通过查找资料,我掌握了设计GUI 基本界面的方法,把所 DSP 实验课程设计实验报告 有的功能集中到一个界面中,操作简便又实用美观。当然, 这次设计也让我认识到自身的不 足,比如编程经验欠缺,知识联系能力不强等。但是通过不断的改进,我在这两方面都有了 很大的提高,对课堂知识的掌握和精进有很大的帮助。

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1