MATLAB语音信号识别
摘要: 隐马尔可夫模型(HMM)作为描述语音信号的一种统计模型,在现代语音处理中获得了广泛应用。本文概述了基于HMM的语音识别技术,阐述了预处理,特征提取以及训练,识别的算法思想。最后利用MATLAB仿真设计了语音识别系统,实现了数字0—9的识别。
关键词:语音识别;特征提取;HMM;MATLAB;
1引言
语音识别技术为人们提供了一种更方便的人机交互,使人与计算机之间、人与人之间的通信更加方便、快捷。随着对语音识别技术的深入研究,它已经发展为一门跨越多个领域的综合学科,显示了巨大的应用前景。目前应用最为成功的语音识别系统大多是基于隐马尔可夫模型构造的。HMM在数学上是一个双重随机过程,一个是用具有有限状态数的马尔可夫链来模拟语音信号统计特性变化的隐含的随机过程,另一个是与马尔可夫链的每一个状态相关联的观测序列的随机过程,而人的言语过程实际上就是一个双重随机过程,语音信号本身是一个可观测的时变序列,它是由大脑根据语法知识和言语需要这些不可观测的状态发出的音素的参数流。因此HMM合理的模仿了这一过程,能够实现较高的语音识别能力。基于HMM进行语音识别的案例有:CMU的Kai-Fulee等研制的SPHINX语音识别系统成功的达到识别率96%,IBM构造的Tangora2000词语音识别系统得到95%的识别率。本文根据HMM的语音识别思想利用MATLAB编程对数字0—9进行识别。
2语音识别基础理论和算法
完整的语音识别系统可以大致分成3个部分:(1)语音信号的预处理和特征提取;(2)语音信号的建模;(3)语音信号的模式匹配。其系统结构框图如图1所示。从本质上讲,语音识别由训练和识别两个过程完成。将用作训练的语音信号预处理后提取语音特征、建立语音信号0—9的参考模型,此过程为训练过程;从待识别语音信号中提取语音特征,与参考模型进行匹配,通过比较和判决的过程称为识别过程。
图 1 语音识别系统结构框图
目前语音识别中的预处理主要是预加重、分帧和端点检测,常用的语音特征是基于Mel频率的倒谱系数(即MFCC参数),它能更好的提高系统的识别性能。语音的训练,识别均是基于HMM模型的3个基本问题求解展开的。
2.1语音预处理及特征提取
语音从嘴唇辐射会有6dB/oct的衰减,因此在对语音信号进行处理之前,希望能按6dB/oct的比例对信号加以提升(或加重),以使得输出的信号电平相近似。可采用公式(2.1)的差分方程所定义的数字滤波器进行预加重处理:
(2-1)
式中,系数
常选取为0.9375。预加重可以直接利用MATLAB中的filter函数实现。
语音信号是准稳态信号,在处理时常把信号进行分帧,每帧长度约20ms~30ms,在这一区间内把语音信号看作为稳态信号,其频谱特性和某些物理特征参量可以近似认为是不变的。分帧一般采用交叠分段的方法,即帧与帧之间有交叠,交叠的目的是使得帧与帧之间过渡平滑,保持其连续性。
同时语音信号起止点的判别是语音识别系统必不可缺少的一部分,只有准确的找出语音段的起止点,才能对真正有效的语音信号进行分析,这样不仅减小了运算量,运算时间,同时有利于提高系统的识别率。通常采用的端点检测是基于短时能量和过零率的。短时能量是对分帧的信号的平均幅度求和。过零