基于matlab的语音信号处理,基于MATLAB语音信号处理的研究

摘 要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。本文基于MATLAB提出了语音处理系统的程序设计。

关键词:语音识别;信号发生器;MATLAB

中图分类号:U285.44文献标识码:A正弦交流信号与方波信号是两种应用极为广泛的信号,它们通常作振荡电路产生的,然后将得到的正弦波经过电压比较器或积分电路,则可输出一个方波信号。正弦波振荡电路是一。在MATLAB中,[y,fs,bits]=wavread(""Blip"",[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

1 图形用户界面设计

1.1 GUI设计模板

在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。MATLAB为GUI设计一共准备了4种模板,分别是Blank GUI(默认) 、GUI with Uicontrols(带控件对象的GUI模板) 、GUI with Axes and Menu(带坐标轴与菜单的GUI模板)与Modal Question Dialog(带模式问话对话框的GUI模板)。当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。

1.2 GUI设计窗口

在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组成。GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help 6个菜单项,使用其中的命令可以完成图形用户界面的设计操作。

1.3 GUI设计窗口的基本操作

在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。例如,创建一个Push Button对象,并设计该对象的属性值。下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的读入打开,以及绘出了语音信号的波形频谱图。

2 图形用户界面模块调试

下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的读入打开,以及绘出了语音信号的波形频谱图。

2.1 语音信号的读入与打开

[x,fs,bits]=wavread(""ding.wav"",[1024 5120]);

sound(x,fs,bits);

X=fft(x,4096);

magX=abs(X);

angX=angle(X);

subplot(221);plot(x);title(""原始信号波形"");

subplot(222);plot(X); title(""原始信号频谱"");

subplot(223);plot(magX);title(""原始信号幅值"");

subplot(224);plot(angX);title(""原始信号相位"");

2.2 语音信号的定点分析

已知一个语音信号,数据采样频率为100Hz,试分别绘制N=128点DFT的幅频图和N=1024点DFT幅频图。编程如下:

x=wavread(""ding.wav"");

sound(x);

fs=100;N=128;

y=fft(x,N);

magy=abs(y);

f=(0:length(y)-1)""*fs/length(y);

subplot(221);plot(f,magy);

xlabel(""频率(Hz)"");ylabel(""幅值"");

title(""N=128(a)"");grid

subplot(222);plot(f(1:N/2),magy(1:N/2));

xlabel(""频率(Hz)"");ylabel(""幅值"");

title(""N=128(b)"");grid

fs=100;N=1024;

y=fft(x,N);

magy=abs(y);

f=(0:length(y)-1)""*fs/length(y);

subplot(223);plot(f,magy);

xlabel(""频率(Hz)"");ylabel(""幅值"");

title(""N=1024(c)"");grid

subplot(224);plot(f(1:N/2),magy(1:N/2));

xlabel(""频率(Hz)"");ylabel(""幅值"");

title(""N=1024(d)"");grid

运行结果如图所示:

3 图形用户界面制作

MATLAB中图形用户界面的制作有两种方法:M文件和GUIDE,本设计采用GUIDE的方法制作GUI。

3.1 新建一个空白GUI模板:进入MATLAB程序界面以后执行File→New→GUI过程,即可进入

3.2 选择空白模板选项条,单击OK,一个空白GUI模板生成

3.3 拖拉白色框的右下角调整界面大小,现在就可以开始设计GUI功能界面了。从左边控件框选择所需要的控件放置在GUI面板中,然后对各个控件进行编辑,包括位置、大小、颜色、名称以及编写回调函数等。本设计主要用到下拉菜单、坐标系、框架和按钮,现分别介绍。

3.4 按钮设计:按钮键又称命令按钮或按钮,是小的长方形屏幕对象,常常在对象本身标有文本。将鼠标指针移至对象,单击鼠标按钮执行由回调字符串所定义的动作。单击空间框左侧的Push Button按钮,在图形编辑框中确定其位置后单击鼠标左键即可放置现在开始编写回调函数,确定按钮功能。在按钮上单击鼠标右键,选择view- callbacks→callback即可在M文件中找到该按钮的回调函数位置。然后编写功能函数,本设计中该按钮的功能是绘制原始波形,那么只需要读取语音信号并画出波形。

3.5 坐标系设计:坐标轴对象是许多图形对象的父对象,每一个可视化显示用户数据的图形窗口都包含一个或多个坐标轴对象。坐标轴对象确定了图形窗口的坐标系统,所有绘图函数都会使用当前坐标轴对象或创建一个新的坐标轴对象,用于确定其绘图数据点在图形中的位置。单击空间框左侧的Axes按钮,在图形编辑框中确定其位置后单击鼠标左键即可放置

3.6 框架设计:框架对象仅是带色彩的矩形区域,框架提供了视觉的分隔性,框架的style属性值是Frame。在其他对象放入框架之前,框架应事先定义,否则框架可能覆盖控制框使他们不可见。语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。我们可以像给一般信号做频谱分析一样,来给语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。利用MATLAB的gui界面设计。设计出了一个简易的用户应用界面,可以让人实现界面操作。更加方便的进行语音的频谱分析与滤波处理。

参考文献

[1]王备战.基于KM的电子政务技术的研究与实现[D]. 西北工业大学,2003.

[2]付中华.说话人识别系统鲁棒性研究[D]. 西北工业大学,2004.

[3]苏宏涛.基于统计特征的人脸识别技术研究[D]. 西北工业大学,2004.

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值