subplot(326);plot(Z);title('FIR滤波后信号的频谱');
得到结果如图:
(6)小结:以上几种滤波,我们都可以从信号滤波前后的波形图以及频谱图上看出变化。当然,也可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳听力的限制,有些情况下我们是很难听出异同的。
同样,通过函数的调用,也可以将信号的频谱进行“分离观察”,如显出信号的幅值或相位。下面,通过改变系统函数的分子与分母系数比,来观察信号滤波前后的幅值与相位。并且使结果更加明显,使人耳得以很容易的辨听。
x=wavread('ding.wav');
sound(x);
b=100;a=5;
y=filter(b,a,x);
X=fft(x,4096);
subplot(221);plot(x);title('滤波前信号的波形');
subplot(222);plot(abs(X));title('滤波前信号的幅值');
Y=fft(y,4096);
subplot(223);plot(y);title('滤波后信号的波形');
subplot(224);plot(abs(Y));title('滤波后信号的幅值');
结果如图:
>> sound(y);
可以听到声音明显变得高亢了。从上面的波形与幅值(即幅频)图,也可看出,滤波后的幅值变成了滤波前的20倍。
>> figure,
subplot(211);plot(angle(X));title('滤波前信号相位');
subplot(212);plot(angle(Y));title('滤波后信号相位');
得图:
可以看到相位谱没什么变化。 (四)、界面设计:
直接用M文件编写GUI程序很繁琐,而使用GUIDE设计工具可以大大提高工作效率。GUIDE相当于一个控制面板,从中可以调用各种设计工具以辅助完成界面设计任务,例如控件的创建和布局、控件属性的编辑和菜单设计等。
使用GUIDE设计GUI程序的一般步骤如下:
1. 将所需控件从控件面板拖拽到GUIDE的设计区域;
2. 利用工具条中的工具(或相应的菜单和现场菜单),快速完成界面布局;
3. 设置控件的属性。尤其是tag属性,它是控件在程序内部的唯一标识;
4. 如果需要,打开菜单编辑器为界面添加菜单或现场菜单;
5. 保存设计。GUIDE默认把GUI程序保存为两个同名文件:一个是.fig文件,用来保存窗体布局和所有控件的界面信息;一个是.m文件,该文件的初始内容是GUIDE自动产生的程序框架,其中包括了各个控件回调函数的定义。该M文件与
一般的M文件没有本质区别,但是鉴于它的特殊性,MATALAB把这类文件统称为GUI-M文件。保存完后GUI-M文件自动在编辑调试器中打开以供编辑。
6. 为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编辑调试过程相同。
设计过程及内容:
在MATLAB版面上,通过键入GUIDE弹出一个菜单栏进入gui制作界面(或者在File到new来进入gui),从而开始应用界面的制作。
该界面主要实现了以下几个功能:
①打开wav格式的音频文件,并将该音频信号的值读取并赋予某一向量;
②播放音频文件,可以选择性的显示该音频信号的波形、频谱、幅值以及相位;
③对音频信号进行IIR与FIR的5阶固定滤波处理,可以选择性的显示滤波前后信号的波形、频谱、幅值以及相位,以及播放滤波后的声音。
界面如图所示:
通过该界面,可以方便用户进行语音信号的处理。
界面主程序见附件。
(五)、校验:
1、本设计圆满的完成了对语音信号的读取与打开,与课题的要求十分相符;
2、本设计也较好的完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;
3、在滤波这一块,课题主要是从巴特沃斯滤波器入手来设计滤波器,也从一方面基本实现了滤波;
4、初略的完成了界面的设计,但也存在相当的不足,只是很勉强的达到了打开语音文件、显示已定滤波前后的波形等图。
四、 结论:
语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。
从课题的中心来看,课题是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。
在这里,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。
课题的特色在于它将语音看作了一个向量,于是语音数字化了,则可以完全利用数字信号处理的知识来解决。我们可以像给一般信号做频谱分析一样,来给语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。
最后,还利用了MATLAB的另一强大功能——gui界面设计。设计出了一个简易的用户应用界面,可以让人实现界面操作。更加方便的进行语音的频谱分析与滤波处理。