浅论MATLAB的特定人语音识别软件开发与设计

(整期优先)网络出版时间:2018-06-16
/ 2

浅论MATLAB的特定人语音识别软件开发与设计

邹爱华

关键词:MATLAB;特定人语音识别软件;开发与设计

1、系统功能及子模块介绍

基于MATLAB进行语音识别软件的开发与设计,识别过程分为录入语音、预处理、端点检测(即提取语音)、提取语音特征参数、与模板库中的特征参数逐一进行比较,然后选取失真测度最小的作为识别结果输出。

1.1录入语音

MATLAB中录入语音可以通过wavrecord函数来录入语音。

1.2预处理

预处理包括预加重、分帧、对语音信号加窗。

1.2.1预加重

预加重就是把语音信号乘以一个高通滤波器,用来对语音信号进行高频率提升,高通滤波器用一阶FIR滤波器来实现,公式为:s`(n)=s(n)-as(n-1),其中a是一个常数。

预加重对于语音信号有两个作用:

①增加一个零点,用来去除声门脉冲的高频频谱下跌,使得语音信号频谱变得更加平滑,所提取的语音特征符合原始声道模型;

②由于是乘以一个高通滤波器,不但对高频提升外,还把低频部分也进行衰减,同时降低基频对共振峰的检测的干扰。

1.2.2分帧

由于语音信号是时变的,处理时变的信号计算非常复杂,也不容易观察到语音信号的特征。但是在很短的时间内,即10ms-30ms内,语音信号可以看成非时变的。这就用到了语音的分帧技术。如果两帧不重叠,可能有一个跳变。为了使其平稳过渡,在相邻两帧设置重叠部分。

1.2.3加窗

语音信号经过采样后为x(n),实际上是无限长的,需要处理的量将会很大。但进行分帧处理过后相当于乘以一个有限长的窗函数,这样就可以很好的进行运算。加窗函数的数学表达式为:

窗函数一般具有低通特性,窗函数的不同将会有不同的带宽和频谱泄漏。在语音分析中常用到的窗函数为矩形窗,汉明窗和海宁窗。本文采用的是汉明窗。

1.3端点检测

在说话人识别的技术中,端点检测的好坏不仅关系到计算量的大小,而且关系到识别的准确率。端点检测的方法有如下几种:短时能量法、短时过零率、短时自相关函数、双门限端点检测、能熵比端点检测。本文采用双门限检测法,该方法结合了短时过零率和短时能量法两种方法。

在开始进行端点检测前,首先为短时能量和过零率分别确定两个门限。一个是较低的门限,其数值较小,对信号的变化较敏感,很容易被超过。另一个是比较高的门限,数值较大,信号必须达到一定的强度,该门限才可能被超过。

1.4语音特征参数提取

语音信号的特征参数提取主要是提取每个人的发音特征,个性特征。这些特征经过语音处理所表现的就是共振峰,基音频率,频谱,平均基频,说同一句子时间长短的差异。而语音信号的特征提取就是要把这些参数提取出来,在训练阶段作为模板训练,形成模板库保存起来。在识别阶段,把测试语音的特征参数提取出来,与原来形成的模板库中的数据进行比较,最后识别说话人身份。选取特征参数的好坏直接影响到以后识别的准确率,因此如何准确完整的提取语音特征参数是当今说话人识别所面临的一个难题。

在众多的特征参数方法中,经过比较最后选定MFCC(Mel倒谱系数)做为特征提取的方法。它能很好的反应每个人的听觉特性,且它与频谱的非特性关系,决定了它是一种非常适合的特征参数。

1.5动态时间规整(DTW)

在实际生活中,语音信号具有相当大的随机性,即便是同一个人在不同时刻所讲的同一句话,发的同一个音,也不可能具有完全相同的时间长度。在进行模板匹配时,这些时间长度的变化会影响测度的估计,从而使识别率降低,因此时间规整处理就显得很有必要。DTW就是把时间规整和距离测度结合起来的一种非线性规整技术,动态时间规整就是要寻找一个时间规整函数,它将测试矢量的时间轴i非线性地映射到模板的时间轴j上,并使该函数满足

式中,d[T(i),R(ω(i))]是第i帧测试矢量T(i)和第j帧模板矢量R(j)的距离测度;D则是处于最优时间规整情况下两矢量的距离。由于DTW不断地计算两矢量的距离以寻找最优的匹配路径,所以得到的两矢量匹配是累计距离最小的规整函数,这就保证了它们之间存在最大的声学相似特性。

1.6GUI界面设计

在MATLAB界面下点击新建GUI,进入到创建GUI的界面,先放入按钮,波形显示器等控件,然后加入静态文本等必要说明。设计过程中的GUI,然后保存。保存后,打开由系统自动为本图形用户界面所产生的M文件,然后在M文件中的各个子程序中加入相应的函数实体,然后运行,这样GUI界面就创建完毕。

2、实验结果

先点击训练中的“录音”按钮,对每个人录音一次,建立语音库,说话内容内容为“广东”。保存完毕后,点击调试下的“录音”按钮,然后随机选取语音库中的人进行“录音”,录音结束后,点击波形,就会显示出语音库中的模板波形,以及测试波形,短时能量波形、过零率波形,最后点击识别结果就会显示出系统对说话人的识别结果。经验证,目前的识别效果是100%。其中以“蒲开放”为识别人进行软件测试识别结果:

2.1模板波形就是语音库中的波形,测试波形就是待测试人的语音波形,两个波形都是由电脑自带的拾音器将声音转化为电压电流信号后显示出来的;

2.2短时能量波形:浊音的能量高,清音的能量低,由于图中有一定的时延,所以并未完全对齐,但还是可以看出上述规律;

2.3过零率波形:浊音的过零率低,清音的过零率高,由于图中有一定时延,所以也并未对齐,但仍然符合上述客观规律。

结束语:

本文利用Mel频率倒谱系数和DTW技术提出了基于MATLAB实现特定人语音识别的方法,并通过MATLABGUI设计了操作界面,识别率较高。本软件仅建立了6个人的语音库,属于小容量的语音库,由于参与人数过少,识别率的可靠性不足,所以本软件仍有很大的改进空间,比如说:在有背景噪声的情况下如何提高识别的正确率。

参考文献

[1]赵力.语音信号处理[M].北京:机械工业出版社,2012.

[2]何英.MATLAB扩展编程[M].北京:清华大学出版社,2012.

[3]施晓红.精通GUI图形界面编程[M].北京:北京大学出版社,2013.