基于HMM的语音识别技术在嵌入式系统中的应用
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 基于HMM的语音识别系统
下面详细介绍基于HMM的语音识别系统。首先在UniSpeech芯片上实现了基于DHMM的识别系统,然后又在同一平台上实现了基于CHMM的识别系统。
3.1 前端处理
语音的前端处理主要包括对语音的采样、A/D变换、分帧、特片提取和端点检测。
模拟语音信号的数字化由A/D变换器实现。ADC集成在片内,它的采样频率固定为8kHz。
特征提取基于语音帧,即将语音信号分为有重叠的若干帧,对每一帧提取一次语音特片。由于语音特征的短时平稳性,帧长一般选取20ms左右。在分帧时,前一帧和后一帧的一部分是重叠的,用来体现相邻两帧数据之间的相关性,通常帧移为帧长的1/2。对于本片上系统,为了方便做FFT,采用的帧长为256点(32ms),帧移为128点(16ms)。
特征的选择需要综合考虑存储量的限制和识别性能的要求。在DHMM系统中,使用24维特征矢量,包括12维MFCC(Mel Frequency Cepstrum Coefficient)和12维一阶差分MFCC;在CHMM系统中,在DHMM系统的基础上增加了归一化能量、一阶差分能量和二阶差分能量3维特征,构成27维特征矢量。对MFCC和能量分别使用了倒谱均值减CMS(Cepstrum Mean Subtraction)和能量归一化ENM(Energy Normalization)的处理方法提高特征的稳健性。
3.2 声学模型
在HMM模型中,首先定义了一系列有限的状态S1…SN,系统在每一个离散时刻n只能处在这些状态当中的某一个Xn。在时间起点n=0时刻,系统依初始概率矢量π处在某一个状态中,即:
πi=P{X0=Si},i=1..N
以后的每一个时刻n,系统所处的状态Xn仅与前一时刻系统的状态有关,并且依转移概率矩阵A跳转,即:
javascript:window.open(this.src);" style="cursor:pointer;"/>
系统在任何时刻n所处的状态Xn隐藏在系统内部,并不为外界所见,外界只能得到系统在该状态下提供的一个Rq空间随机观察矢量On。On的分布B称为输出概率矩阵,只取决于Xn所处状态:
Pxn=Si{On}=P{OnSi}
因为该系统的状态不为外界所见,因此称之为“稳含马尔科夫模型”,简称HMM。
在识别中使用的随机观察矢量就是从信号中提取的特征矢量。按照随机矢量Qn的概率分布形时,其概率密度函数一般使用混合高斯分布拟合。
javascript:window.open(this.src);" style="cursor:pointer;"/>
其中,M为使用的混合高斯分布的阶数,Cm为各阶高期分布的加权系数。此时的HMM模型为连续HMM模型(Continuous density HMM),简称CHMM模型。在本识别系统中,采用整词模型,每个词条7个状态同,包括首尾各一个静音状态;每个状态使用7阶混合高斯分布拟合。CHMM识别流程如图1所示。
由于CHMM模型的复杂性,也可以假定On的分布是离散的。通常采用分裂式K-Mean算法得到码本,然后对提取的特征矢量根据码本做一次矢量量化VQ(Vector Quantization)。这样特征矢量的概率分布上就简化为一个离散的概率分布矩阵,此时的HMM模型称为离散HMM模型(Discrete density HMM),简称DHMM模型。本DHMM识别系统使用的码本大小为128。DHMM识别流程如图2所示。
DHMM虽然增加了矢量量化这一步骤,但是由于简化了模型的复杂度,从而减少了占用计算量最大的匹配计算。当然,这是以牺牲一定的识别性能为代价。
笔者先后自己的硬件平台上完成了基于DHMM和CHMM的识别系统。通过比较发现,对于嵌入式平台而言,实现CHMM识别系统的关键在于芯片有足够运算太多的增加。因为词条模型存储在ROM中,在匹配计算时是按条读取的。
3.3 识别性能
笔者使用自己的识别算法分别对11词的汉语数码和一个59词的命令词集作了实际识别测试,识别率非常令人满意,如表1所示。
表1 汉语数码识别率
DHMM | CHMM | |
特征矢量维数 | 24 | 27 |
识别率 | 93.40% | 98.28% |
识别速度(11词) | 10ms | 50ms |
模型大小(1个词条) | 1.5KB | <5.5KB |
码本 | 6KB | 无 |
对于59词命令词集的识别,还增加了静音模型。由于基线的识别率已经很高,所以静音模型的加入对于识别率的进一步提高作用不大,如表2所示。但静音模型的加入可以降低对端点判断的依赖。这在实际使用中对系统的稳健性有很大的提高。
表2 59词命令词集识别率
浮 点 | 定 点 | |
无静音模型 | 98.59% | 98.28% |
有静音模型 | 98.83% | 98.55% |
可以看到,在硬件能够支持的情况下,CHMM的识别率比DHMM有很大的提高,同时识别速度也完全可以满足使用要求。
目前嵌入式语音识别领域使用HMM模型的还比较少,使用通常限于DHMM。由于集成电路制造技术的发展,目前主流DSP都可以提供100MIPS以上的运算速度,完全可以满足CHMM对计算能力的要求。
笔者在使用SoC芯片的硬件平台上实现了DHMM和CHMM算法。其中定点CHMM语音识别算法在16位定点DSP硬件平台上达到很高的识别率,同时系统资源消耗也比较合理,安全可以替代DHMM算法。非常适合50词以内的命令词识别。以上算法已经在芯片上实现,该方案在家电语音遥控、玩具、PDA、智能仪器以及移动电话等领域内有非常好的应用前景。