有噪声的语音信号分析与处理设计 - 图文 联系客服

发布时间 : 星期五 文章有噪声的语音信号分析与处理设计 - 图文更新完毕开始阅读95c91ebf960590c69ec376e2

3) 高通滤波器z13=filter(num13,den13,s); 2.窗函数法

1)低通滤波器z21=fftfilt(b21,s);

2)带通滤波器z22=fftfilt(b22,s); 3)高通滤波器z23=fftfilt(b23,s);

回放语音信号

经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y,Fs),sound(y)和sound(y,Fs,bits)。可以察觉滤波前后的声音有明显的变化。

设计系统界面

系统界面设计工具—GUI概述

图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。

FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。 GUI创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)代码。

2.方案选择及设计

本设计主要是对语音信号的时频进行分析,并对语音信号加噪后设计滤波器对其进行滤波处理,对话音信号加噪声前后的频谱进行比较分析,对合成语音信号滤波前后进行频谱的分析比较。

首先用PC机WINDOWS下的录音机录制一段3S长的语音信号,并保存入MATLAB软件的根目录下文件名为“123”,再运行MATLAB仿真软件把录制好的语音信号用wavread函数加载入MATLAB仿真软件的工作环境中,输入命令对语音信号进行时域,频谱变换。再在MATLAB中用命令设计一段噪声信号,对噪声信号进行频谱变换。把设计的噪声信号加入到录制的语音信号中,用命令可以得到其频谱图。对该段合成的语音信号,用命令在MATLAB中设计一个恰当的滤波器对其进行滤波处理,此处用BW带阻滤波器对其进行滤波,滤波后用命令可以绘制出其频谱图,回放语音信号。对原始语音信号、合成的语音信号和经过滤波器处理的语音信号进行频谱的比较分析。 设计:

1、选录好的“123.wav”声音作为语音信号。 2、对语音信号加噪声。

3、分别设计IIR滤波器和FIR滤波器,对被污染的语音信号进行滤波,滤掉相应的噪音信号,得到符合要求的语音信号。

13

3.程序设计流程图

仿真开始 加噪声 语音信号 噪声信号 时域波形设计滤波器 幅频图 滤波后的信号 仿真结束

四、调试分析 遇到的问题:

1,、刚开始是准备用自己录的音作为需要的音频信号,可是在加噪声这一环节出现问题了,这一个环节花的时间比较多。在网上查找资料后才发现我录的音是单音道的,要用双音道的音频才能顺利完成加噪,改了之后才运行成功。

2、在做滤波器的时候也出现一些问题,明明是一样的代码却提示我输入的滤波的代码有几个字母没有定义,经过检查思考之后才发现我应该先写滤波器特性的代码,运行出来之后才能再写滤波的代码,问题解决了。

3、紧接着就是做GUI界面了,我个人认为是最难的部分。首先遇到的问题是,回调函数的代码不知道加在哪里。经过查找资料,加上反复的摸索和失败之后我才模模糊糊的知道每个回调函数要加在对应的按钮的功能函数下面。这是初步的成功。

4、初步的成功之后遇到了更大的困难,就是界面只能运行滤波器特性的代码,而真正滤波的代码却运行不出来,好像是滤波的代码与源代码有冲突。这个无论我怎么修改都不能成功,预备放弃了。可是有天晚上看教学视频的时候脑子里突然闪过一个念头,我的代码有问题。于是,我在滤波的代码前面加上了相应的滤波器特性的代码,运行成功了!这种喜悦的感觉无法形容。

5、最大的问题是我的图在axes里面不能完整运行,我没有办法了,决定放弃。 调试程序图:

14

15

16