西北民族大学电气工程学院 730000
【文章摘要】
本文设计了一种基于MATLAB 的图形用户界面系统,通过对孤立词语音信号进行预处理,使用梅尔倒谱系数参数特征提取,最后运用动态时间调整(DTW)算法,实现了对0-9 十个孤立数字的识别,识别率正确率为100%,为复杂语音识别研究奠定了理论基础。
【关键词】
语音识别,孤立词,梅尔倒谱系数,动态时间调整
0 引言
语音识别( Speech Recognition) 是机器通过识别和理解的过程把人类的语音信号转变为相应的文本或命令的技术。其根本目的是研究出一种能直接或间接接收人的语音并能理解人的意图, 具有听觉功能的机器。
本文在MATLAB 环境中构建了孤立词语音识别GUI 平台,经过预处理之后选择了Mel 频率倒谱系数MFCC(Mel Frequency Cepstrum Coefficient)特征参数提取方法和动态时间调整算法DTW (Dynamic Time Warping) 等来对指定目录的孤立词进行识别。
1 孤立词语音系统的基本结构
孤立词语音识别以特定的不连续的词语作为处理单元。语音识别系统的基本组成一般可以分为采集模块、处理模块及识别模块三个模块。如图1 所示为语音识别系统结构框图:
2 原理与设计
2.1 预处理与特征提取
语音信号是一种十分特别的的非平稳信号,录制过程中很容易受到各种噪音的影响,所以语音信号要经过一系列的预处理过程后才可进行特征参数提取等工作。识别开始后,语音信号经过类似的通道生成模板,用相同的方法计算测试模板的各种特征参数后,将其与模板库模板的特征参数进行匹配,配分数最高的参考模板作为识别结果。预处理过程通常包括预加重、加窗、分帧、端点检测等部分。加窗分帧是将语音信号分段处理, 这时的信号连续并保持了一定的重叠率;而端点检测是通过一定处理, 将没有意义的信号去除,进而确定出有用信号命令的起始点和终止点,从而减少语音匹配识别的MATLAB 计算量,同时也可提高系统识别率。图2 为语音信号处理过程中预处理及特征参数提取的步骤。
计算过程:
①预加重: 为了便于信号的传输或记录,而对某些频谱分量的幅值相对于其他分量的幅值预先有意予以增强的措施。语音识别中最有用的是高频部分,而对于频谱来说,通常是频率越高幅值越低。因此,必须对语音高频加重处理。一般是将信号通过一个一阶高通滤波器,它不仅能滤除低频提升高频,还能很好的抑制50~60Hz 的工频干扰。在端点检测之前进行预加重过程不仅抑制了随机噪声、消除了直流漂移,还可以起到提升清音部分能量的效果。
(1)
②加汉明窗: 语音信号具有短时平稳特性,在较短的时间内可以忽略语音信号的时变特性,基于此特征,可以将截取的一段语音信号来进行分帧。分帧的具体过程就是将窗函数加入语音信号来实现,即,其中为加窗前的语音信号, 为窗函数, 为加窗后的信号,此处使用汉明窗。
(2)
③ FFT
(3)
④对频谱进行三角滤波: 程序采用归一化mel 滤波器组系数
⑤计算每个滤波器的输出能量
(4)
⑥离散余弦变换(DCT) 得到MFCC
(5)
通常协方差矩阵一般取对角阵,三角滤波器组的对数能量输出之间存在着很大的相关,采用 DCT 这种正交变换可以去除参数之间的相关性,从而使后端识别模型采用对角阵具有更高的识别率。
⑦归一化倒谱提升
(6)
⑧计算差分系数并合并MFCC 参数和一阶差分MFCC 参数将其作为一个整体,让参数更完备。
2.2 动态时间规整法
鉴于动态时间规整(DTW) 算法在训练中不需要额外的计算,故在识别部分采用DTW 算法。
在设计程序时,首先申请两个n×m 的矩阵D 和d,分别为累积距离和帧匹配距离。这里n 和m 为测试模板与参考模板的帧数。然后通过一个循环计算两个模板的帧匹配距离距阵d。接下来进行动态规划,为每个格点(i,j)都计算其三个可能的前续格点的累积距离D1、D2 和D3。考虑到边界问题,有些前续格点可能不存在,因此要加入一些判断条件。最后利用最小值函数min,找到三个前续格点的累积距离的最小值作为累积距离,与当前帧的匹配距离d(i,j)相加,作为当前格点的累积距离。该计算过程一直达到格点(n,m),并将D(n,m)输出,作为模板匹配的结果。
3 仿真分析
为了验证系统设计的正确性,在MATLAB 中进行了仿真实验,在无过多噪音的室内进行了录音,搭建了基于动态时间调整(DTW)的孤立词语音识别系
图3 用户界面
图1 语音识别系统结构框图
图2 预处理及特征参数提步骤008 存器是16 位的,最大只能计数到65535, 这就限定了比较/ 捕获的最小输入频率, 因此上述方法已经不能准确测量方波的频率。要想在频率较小时测量方波频率,我们可以对定时器时钟频率做分频处理, 将定时器时钟频率设置为1MHz,就可以测量频率较小的输入脉冲信号,当然也可以采用单片机的计数模式,将stm32 单片机的通用定时器设定为计数模式,测量在1S 内输入的脉冲个数即为输入信号的频率。本设计中为了测量较小频率的信号,我们对定时器时钟频率进行了分频处理, 最终测出的最小频率可达10Hz。
3 结论
本次所设计频率计的测量范围可达10Hz~1MHz,测量精度小于0.1%,可对幅值在0.05V~5V 之间的周期信号进行测量。由于STM32 单片机是一款高性能、低成本、低功耗的单片机,目前在许多有关单片机设计的问题中,得到了广泛的应用,本设计采用stm32 单片机作为主控芯片,在使用较少外围器件的情况下,主要靠软件控制,实现高精度频率的测量。
【参考文献】
[1] 田磊. 基于 AT89C2051 的智能频率计系统优化设计[J]. 电子测试, 2008(01).
[2] 钱进. 基于AT89C2051 的高精度数字频率计的设计[J]. 机电产品开发与创新,2007,20(1).
[3] 马忠梅, 籍顺心. 单片机的C 语言程序设计[M] 北京: 北京航空航天大学出版社,2003
[ 4 ] S T M 3 2 F 1 0 1 x x a n d S T M 3 2 F 1 0 3 x x a d v a n c e d A R M - b a s e d 3 2 - b i t M C U s R e f e r e n c e manual,STMieroeleetronies,2008.