sound(5*yy1,fs,bits); %回放经无限回声滤波器后的语音信号 pause(2); %延时2秒
%全通结构的混响器 8
数字信号处理课程设计报告
[x,fs,bits]=wavread('wlx.wav',[10000 40000]); %读取语音信号 x=x(:,1); %只取单声道 n1=0:2000;
a=0.5; %a取小于等于1
Bz1=[a,0,0,0,0,0,0,0,0,0,1]; %分子的系数 Az1=[1,0,0,0,0,0,0,0,0,0,a]; %分母的系数
yy2=filter(Bz1,Az1,x); figure(6); %FIR滤波器进行滤波
subplot(2,1,1);plot(yy2); title('全通应的时域图')%全通结构的混响器时域波形
点的FFT变换 YY2=fft(yy2,2001); %经全通结构的混响器后的信号做2001 subplot(2,1,2);plot(n1(1:1000),YY2(1:1000)); %全通结构的混响器频谱图 title('全通应的频谱图')
sound(5*yy2,fs,bits); %回放经全通结构的混响器后的语音信号 5 程序调试 5.1 调试过程与步骤
首先用计算机的声音编辑工具录制一段语音,生成.wav文件。再在MATLAB的m文件中书写代码,逐步调试。待运行成功后,设计界面,使代码与界面结合。设计界面时修改按钮的string属性设计按钮,在对每个按钮的功能编写代码,调试并运行。 5.2 发现的问题
1.根据不同录制的声音,信号采样的频率不一样,有时采样出来回放的信号没有声音,这就说明信号采样频率有误。
2.变量未设置初值。 3.wavread()函数运用错误。 4.界面设计时不能运行。 5.3 解决的办法
1.由于自己录制的声音频率较高,所以必须先试验不同频率的采样,找到合适的频率。
9
数字信号处理课程设计报告 2.变量设置初值。
3.wavread()函数运用应注明文件类型并且放进work文件夹下。
4.界面设计时不能运行,检查代码,每段需要先读取声音文件在运行下面的代码。
6运行与测试 6.1运行程序
图6-1 界面设计图
图6-2 原始信号图 10
数字信号处理课程设计报告
图6-3 采样后信号图
图6-4 延时后的信号图
图6-5 混响后的信号图 11
数字信号处理课程设计报告
图6-6 单回声滤波后的信号图
图6-7 无限个回声滤波后的信号图
图6-8 信号经全通结构的混响器后的图 12
数字信号处理课程设计报告 结 论
通过这次的课程设计,熟悉并掌握了MATLAB中有关语音信号的读取,频谱分析,在时域用数字信号处理方法将信号加入延时和混响, 再分析其频谱,并与原始信号频谱进行比较。
通过在图书馆以及网上查找资料,我大体知道了怎么设计的各个步骤。在做界面的过程中,也学到了很多,掌握了句柄的用法,各个按钮如何实现其功能。做
matlab的界面过程中,最重要的一个经验就是:最好是把代码先用脚本文件的形式写完,然后在做界面,因为在添加控件的过程中本来写好的程序会出问题的。这个是一个软件的问题。否则有时候就会浪费很多时间。另外值得注意的一个问题是:命名最好用“匈牙利命名法”,否则函数太多了,就不知道名字代表什么意思,有时候,这样子也会节省很多时间。
在录制声音文件时,因为我的录制的声音频率较高,所以在采样时经过很多次的变换才能够采到适合的频率,在代码分析设计时,我认识到自身有很多不足,如何让声音加入到MATLAB中,如何设计各个滤波器等。开始都毫无头绪,但经过查阅资料,以及组员之间的相互讨论,最后让这个课程设计能够圆满的完成了。
经过这次的课程设计,我对理论知识的掌握更加牢固了,而且把理论与实践联系在一起,提高了自己的实践能力,也从中找到了乐趣。而且我认识到同学之间的相互合作的重要性,还有学到了自己通过各种途径搜集的资料应该具有把它们如何联系运用起来的能力。我们想要把所学的内容融会贯通,只是学习课本好不够,要把所学习的知识加以利用,这次的课程设计就给了我们很好的机会。让我们在学习基本知识后,不仅能加以巩固,还能从理论上升到实践中去。
13
数字信号处理课程设计报告 致 谢
经过一周的课程设计,我渐渐对数字信号处理和MATLAB得应用更加的了解。我的课程设计能够成功完成,这要感谢xx计算机工程学院为我们提供一周的机房条件,感谢指导老师的悉心指导,感谢组员的诚挚帮助。让我对数字信号处理有了更进一步的熟悉,实际操作和课本上的知识有很大联系,但又高于课本,一个看似很简单的程序,要动手把它设计出来就比较困难了,因为是设计要求我们在以后的学习中注意这一点,要把课本上所学到的知识和实际联系起来,同时通过本次课程