首页> 中国专利> 基于子词隐含马尔可夫模型的嵌入式语音识别方法

基于子词隐含马尔可夫模型的嵌入式语音识别方法

摘要

本发明属于语音识别技术领域,其特征在于,它是一种基于子词隐含马尔可夫模型的嵌入式语音识别方法,包括端点检测、帧同步声学特征提取、计算识别网络解码时用的声学特征矢量序列,以及识别网络解码共四个部分。其中,端点检测采用滑动平均滤波器和有限状态机实现;解码时采用基于滑动窗束搜索的两阶段识别方法,采用基于置信度的方法为第二阶段选取候选词条。本发明在保证识别正确率的条件下,提高识别所需内存占有和运算量的占用效率。同时本发明采用以数字信号处理器为核心的嵌入式实现,具有体积小、重量轻、功耗低、成本低的优点。

著录项

  • 公开/公告号CN101030369A

    专利类型发明专利

  • 公开/公告日2007-09-05

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200710064951.5

  • 发明设计人 梁维谦;董明;丁玉国;刘润生;

    申请日2007-03-30

  • 分类号G10L15/14(20060101);

  • 代理机构

  • 代理人

  • 地址 100084 北京市100084信箱82分箱清华大学专利办公室

  • 入库时间 2023-12-17 19:03:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-17

    未缴年费专利权终止 IPC(主分类):G10L15/14 授权公告日:20110629 终止日期:20170330 申请日:20070330

    专利权的终止

  • 2011-06-29

    授权

    授权

  • 2007-10-31

    实质审查的生效

    实质审查的生效

  • 2007-09-05

    公开

    公开

说明书

技术领域

本发明属于语音技术领域,尤其涉及在嵌入式平台上实现的基于子词隐含马尔可夫模型(Hidden Markov Models,HMM)的语音识别方法。

背景技术

嵌入式语音识别系统的研究一直是语音识别技术应用的重要的发展方向。它为移动式、小型化产品提供了良好的人机语音交互,如电话的语音拨号、mp3等娱乐产品的语音检索、车载的语音控制系统、智能玩具和家电语音遥控等。其硬件系统的核心为MCU(微控制器)、DSP(数字信号处理器)或语音识别专用芯片。嵌入式语音识别方法可分为特定人和非特定人两类。特定人语音识别需要用户在使用前生成训练模板,一般采用动态时间规整(DTW)作为识别算法,如专利(CN200410066796.7)“嵌入式语音识别系统的自动语音识别处理方法”、专利(CN200410066794.8)“用于嵌入式自动语音识别系统的训练方法”以及专利(CN200510033765.6)“一种语音识别装置及其集成电路实现方法”。这一类识别方法与语种无关,在安静环境下对特定人识别正确率较高。但由于需要用户预先训练模板,因此给应用带来了不便。而非特定人语音识别一般预先训练声学模型存于系统的存储器,用户不需要在线训练,而直接进行识别。声学模型的基元可以是整词或子词。整词基元与语种无关,但与识别任务有关,当识别词表更新后,需要重新采集语音数据进行声学模型的训练。基于子词的语音识别系统以语言的基本组成单元(如英语的音素、汉语的半音节)作为模型基元,因此其与语种相关,当给定语种后,声学模型无需再根据不同的识别任务重新进行训练,应用比较方便。例如,日本索尼公司的AIBO机器狗采用专用的SOC芯片,能够实时完成470词的识别任务(Menendez P X,Duan L,Lu J W,et al.Efficient phone based recognitionengines for Chinese and English isolated command applications.In:Proc.ISCSLP’02,2002,83-86),美国TI公司开发的以TMS32054X系列DSP的英语数码和命令词识别系统(GongY F,Kao Y H.Implementing a high accuracy speaker-independent continuous speechrecognizer on a fixed-point DSP.In:Proc.ICASSP’00 2000 3686-3689)等。以上这些非特定人的嵌入式语音识别方法虽然取得了不错的识别效果,但系统开销仍然较大,从而限制了识别词条数量和词条长度。

基于HMM的统计语音识别方法是目前最常用也最有效的非特定人语音识别系统框架。隐含马尔可夫模型是一种随机过程模型。图1右侧给出了一种最常用的表示单向无回跳的HMM拓扑结构,其中第一和最后一个状态为起始和结束状态,并不产生语音特征,其它状态则以概率形式产生语音特征。系统只能处于给定状态中的某一种,即对于t,状态st∈{S0,...,SI-1},其中I为状态总数,t表示第t帧。如果系统初始在第t=0帧,那么在以后每一帧t它所处的状态以概率方式取决于初始状态概率列矢量π和状态转移概率矩阵A。在任意帧t(t>0),假设系统处于状态st的概率只取决于前一帧所处的状态,而与更前帧的情况无关,由此产生的状态序列s0,s1,...,sT-1为一阶马尔可夫过程,其中T表示语音特征的总帧数。状态st隐含在系统内部,外界只能得到系统在该状态下随机输出的语音特征ot,隐含马尔可夫模型由此得名。语音信号具有短时平稳特性,因此可以将语音划分为相连的短时段,每段对应HMM的一个状态。每个状态具有特定的模型参数,描述每帧语音特征的统计特性。HMM状态之间的转移则表示语音统计特性发生的改变。图1给出了HMM状态和一段语音特征的各个短时段是如何对应的。HMM的各状态对应于说话时发音器官所经历的每个相对稳定的过程,比较准确的描述了语音信号的时变性和准平稳性。

HMM由三组参数唯一确定,Φ=(π,A,B):状态初始概率分布列矢量π=(πi)0≤i≤(I-1),转移概率矩阵A=(aij)0≤i,j≤(I-1)和输出概率矩阵B=(bj(ot))0≤j≤(I-1),0≤t≤(T-1)。其中T为的语音特征的总帧数,I为状态总数。

状态初始概率πi表示在t=0帧,语音特征由状态i输出的概率:

>>>π>i>>=>P>>(>>s>t>>=>i>)>>,>>Σ>>i>=>0>>>I>->1>>>>π>i>>=>1>->->->>(>1>)>>>s>

转移概率aij为模型由状态i跳转到状态j的条件概率:

>>>a>ij>>=>P>>(>>s>>t>+>1>>>=>j>|>>s>t>>=>i>)>>,>∀>i>=>0,1>,>.>.>.>>(>I>->1>)>>,>>Σ>>j>=>0>>>I>->1>>>>a>ij>>=>1>->->->>(>2>)>>>s>

在HMM中,通常假设转移概率aij是不随t变化的常量。

输出概率bj(ot)描述了由状态j产生的语音特征列矢量ot的概率。其可以是离散概率函数,称之为离散HMM(Discrete HMM,DHMM),或是连续概率密度函数,称之为连续HMM(Continuous HMM,CHMM)。以CHMM为例,bj(ot)为:

>>>b>j>>>(>>o>t>>)>>=>p>>(>>o>t>>|>>s>t>>=>j>)>>,>∀>j>=>0,1>,>.>.>.>>(>I>->1>)>>,>>∫>0>>>b>j>>>(>o>)>>do>=>1>->->->>(>3>)>>>s>

通常采用多高斯混合概率密度函数作为CHMM的状态输出概率密度函数,即:

> >>>>b>j>>>(>>o>t>>)>>=>>Σ>>g>=>1>>G>>>c>jg>>N>>(>>o>t>>;>>μ>jg>>,>>Σ>jg>>)>>>>>>=>>Σ>>g>=>1>>G>>>>c>jg>>>>>(>2>π>)>>D>>|>>Σ>jg>>|>>>exp>[>->>1>2>>>>(>>o>t>>->>μ>jg>>)>>T>sup>>Σ>jg>>->1>sup>>>(>>o>t>>->>μ>jg>>)>>]>>> >->->->>(>4>)>>>s>

式中,D为语音特征列矢量的维数,cjg、μjg、∑jg分别为状态j的输出概率密度函数的第g个高斯混合分量的权重、均值列矢量和协方差矩阵,上标T表示矩阵转置运算;在嵌入式语音识别系统中,∑jg一般为对角阵。

以上参数是通过训练过程得到的。训练将通过训练语音数据来调整上述参数,也就获得了语音特征的统计信息。训练结束后,就可以进行识别了。

基于HMM的语音识别是将输入的语音特征矢量序列O=(o0,o1,...,oT-1),根据最大似然准则,搜索出最佳状态序列 >>>s>*>>=>>(sup>>s>0>*sup>>,sup>>s>0>*sup>>,>.>.>.>,sup>>s>>T>->1>>*sup>>)>>,>>s>从而揭开HMM的隐含部分,其中T是语音特征的总帧数。这个问题的解决通常采用维特比算法。定义:

>>>δ>t>>>(>j>)>>=>>max>>>s>0>>,>>s>1>>,>.>.>.>>s>>t>->1>>>>>{>P>[>>s>0>>,>>s>1>>,>.>.>.>,>>s>>t>->1>>>,>>s>t>>=>j>;>>o>0>>,>>o>1>>,>.>.>.>,>>o>t>>|>Φ>]>}>->->->>(>5>)>>>s>

其中,δt(j)表示在t时刻到达状态j的路径的最佳匹配分数,通过归纳可以得到:

>>>δ>t>>>(>j>)>>=>>max>i>>{>>δ>>t>->1>>>>(>i>)>>>a>ij>>}>>b>j>>>(>>o>t>>)>>->->->>(>6>)>>>s>

为了回溯出最佳状态序列,我们可以用一个矩阵(ψt(j))来记录在第t帧和状态j满足式(6)的路径节点信息,具体算法如下:

a.初始化(t=0):δ0(i)=πibi(o0),ψ0(i)=0,0≤i≤(I-1);

b.迭代: > >>>>δ>t>>>(>j>)>>=>>max>i>>{>>δ>>t>->1>>>>(>i>)>>>a>ij>>}>>b>j>>>(>>o>t>>)>>,>0>≤>i>,>j>≤>>(>I>->1>)>>,>1>≤>t>≤>>(>T>->1>)>>;>>>>>>ψ>t>>>(>j>)>>=>>>arg>>max>>i>>{>>δ>>t>->1>>>>(>i>)>>>a>ij>>}>,>0>≤>i>,>j>≤>>(>I>->1>)>>,>1>≤>t>≤>>(>T>->1>)>>;>>> >->->->>(>7>)>>>s>

c.终止: >>sup>>δ>>T>->1>>*sup>>=>>max>j>>{>>δ>>T>->1>>>>(>j>)>>}>,sup>>ψ>>T>->1>>*sup>>=>>>arg> >max>>j>>{>>>δ>>T>->1>>>>(>j>)>>}>,>0>≤>j>≤>>(>I>->1>)>>;>>s>

d.回溯路径: >sup>>ψ>>t>->1>>*sup>>=>>ψ>t>>>(sup>>ψ>t>*sup>>)>>,>1>≤>t>≤>>(>T>->1>)>>.>>s>

其中,δT-1*即为最佳的路径匹配分数,ψt-1*即为最佳的状态节点路径。

如果只关心最佳路径分数,而不需要具体的最佳路径,可以不要(ψt(j))。从而减少了存储矩阵(ψt(j))的内存空间,这对于资源受限的嵌入式语音识别系统是非常重要的。

由于本发明提出的方法涉及到子词HMM,因此有必要事先予以介绍。

在人类的有声语言里,连续语音流的发音单位从大到小可以分为:句子、节奏群、词(或节奏单元)、音节等。音节(Syllable)则是语言中最小的发音单位。对于发音的最小单位音节而言,可以根据语音学的知识,将其进一步划分为子词,例如,英语中的音素即是子词;汉语中子词则是半音节,也就是声母和韵母,《汉语拼音方案》规定了22个声母(包括1个零声母,即音节里没有声母),38个韵母以及4种声调。

构建上下文无关子词模型:以子词作为声学模型的基本单元,词表中每一个词条的模型可以按照其发音顺序,将相应的各子词模型级联起来,构成一个复合的词条模型。通常一种语言的基本子词模型数量很少,例如汉语仅仅包括22个声母和38个韵母,总计60个半音节。因此,针对这些基本半音节建立起来的HMM模型参数的数量也很少。由于基本半音节不由识别词表确定,因此,声学模型参数数量不会因为词表规模的增加而增多。而且声学模型的参数可以采用通用语料库进行训练,无需为了特定任务而专门采集训练语料。这种根据基本子词建立的声学模型,即为上下文无关子词模型,称为Monophone(单音子)模型。对于汉语这类有调语言,考虑到声调,Monophone模型可以是无调Monophone模型或是有调Monophone模型。

根据各个子词的发音特点,对子词的发音过程作进一步的分解,确定每个子词模型的HMM状态数量和状态连接关系。以汉语为例,通常声母对应2个状态,韵母对应4个状态,停顿对应1个可跨越的状态,静音对应1状态,如图2所示。

构建上下文相关子词模型:在连续语流中,子词的上下文相关性很强。当同一子词和不同子词结合时,发音是有差异的。为了在声学模型参数中体现这种发音差异,可以根据子词受上下文影响的强弱程度,将子词模型细分为Biphone(双音子,即当前子词的发音与其前一个或后一个子词相关,例如zh+ong表示与ong后相关的zh)、Triphone(三音子)、Quinphone(五音子)等等。当然,随着音素模型的细分,声学模型的参数也会急剧增长,相应地,需要更多的训练数据、识别时间和硬件资源,来获取稳健的识别系统。

构建子词后,就可以通过训练过程得到子词HMM模型,用于识别过程了。

构造基于子词模型的识别网络:从以上对子词的描述,我们知道子词模型对应着构成语言的最小发音单元“音素”。而用于识别的词条都是由音素构成的,例如“zhong guo”,用音素表示为“zh ong g uo”,因此可以把任意词条看成是由子词模型构成的线性网络,这就是我们所说的识别网络。

发明内容

本发明的目的是为克服已有技术的不足之处,提出一种基于子词HMM的嵌入式语音识别方法。可在嵌入式平台上的实现高性能的文本和说话人无关的准实时语音识别处理方法。

本发明提出的基于子词HMM的嵌入式语音识别方法,包括端点检测、帧同步语音特征提取、完成语音特征提取和识别网络解码四个部分组成。采用滑动平均滤波器和有限状态机技术进行语音端点检测;采用多级识别方法;采用滑动窗束搜索方法;采用基于置信度的选取候选词条的方法;在保证识别正确率的条件下,提高识别所需资源(内存占用和运算量)的占用效率。

以下对本发明进一步的说明:

1端点检测:

(1.1)模拟语音信号经过A/D变换,得到数字语音;

(1.2)对所说的数字语音进行分帧处理,得到分帧语音;

(1.3)对所说的分帧语音进行预加重处理;

(1.4)对所说的预加重处理后的分帧语音计算得到时域能量特征;

(1.5)采用滑动平均滤波(moving-average filter)的方法由所说的时域能量特征得到用于端点检测的特征(以下简称为端检特征);

(1.6)采用上限和下限双阈值和有限状态机的方法,对所说的端检特征进行端点检测,得到语音的起始和结束端点;

2帧同步的语音特征提取:

对步骤(1.3)所说的预加重后的分帧语音提取Mel频标倒谱系数((MFCC,Mel-FrequencyCepstrum Coefficients)特征矢量,具体过程包括:加窗,快速傅立叶变换,三角窗滤波器组,取对数,离散余弦变换,谱加权。

3完成语音特征提取:

(3.1)对步骤2所说的所有帧的MFCC特征矢量进行倒谱均值减(Cepstrum Mean Subtraction,CMS)处理;对步骤(1.4)所说的所有帧的时域能量特征进行能量归一化处理;

(3.2)对步骤(3.1)所说的倒谱均值减后的MFCC特征矢量和归一化后的时域能量特征进行一阶差分和二阶差分处理;得到步骤(4)识别所需的语音特征矢量序列。

4识别网络解码:

采用一种多级处理的识别算法:首先使用复杂度较低的声学模型得到多候选识别的结果,然后采用复杂度较高的声学模型对第一阶段输出的多候选词条进行第二次识别,再输出最终的识别结果。

(4.1)在第一阶段识别过程中,首先将步骤(3)得到的语音特征矢量序列对所有第一阶段的子词HMM模型的状态,计算输出概率,得到输出概率矩阵;然后对识别词表中的每一个词条按照式(7)进行维特比束搜索,得到语音特征矢量序列对每个词条的路径匹配分数;这里所说的维特比束搜索为滑动窗束搜索;最后根据基于归一化在线垃圾模型(NormalizedOnline Garbage Model,NOGM)的置信度,选取用于第二阶段识别的候选词条。

(4.2)在第二阶段识别过程中,首先将步骤(3)得到的语音特征矢量序列对步骤(4.1)所说的候选词条涉及到的第二阶段子词HMM模型的状态,计算输出概率,得到输出概率矩阵;然后对识别词表中的每一个词条按照式(7)进行维特比全搜索;最后,将对语音特征矢量序列的路径匹配分数最佳的词条作为识别结果输出。

实验证明,本发明具有如下优点:

(1)本发明具有识别准确性高、实时性好、稳健性好、系统资源开销小等优点;

(2)采用基于子词的声学模型,使得嵌入式语音系统与文本和说话人无关,方便用户使用;

(3)可用于基于以DSP为核心的嵌入式系统,具有体积小、重量轻、耗电省、成本低的突出优点;

(4)以DSP为硬件平台,工作频率为100MHz,在识别词表为600词的情况下,可以在内存消耗仅为52k字节,识别时间小于0.3倍实时的情况下,达到97.3%的识别正确率。

附图说明

图1给出了隐含马尔可夫模型描述语音的示意图;说明:HMM:隐含马尔可夫模型。

图2给出了汉语的子词HMM模型的网络拓扑结构示意图;说明:(a)、静音模型,(b)、声母模型,(c)、暂停模型,(d)、韵母模型。

图3给出了本发明方法的硬件平台的系统框图;包括用于语音输入/输出的音频编解码模块,用于存储声学模型的外部存储器,用于控制和计算的DSP(Digital Signal Processor),电源,以及键盘等外围设备;说明:DSP:数字信号处理器。

图4给出了本发明实施例的方法流程示意图;包括:端点检测、帧同步语音特征提取、完成语音特征提取和识别网络解码。

图5给出了本发明的帧同步语音特征提取模块的流程图;说明:FFT:快速傅立叶变换;DCT:离散余弦变换。

图6给出了本发明的识别网络搜索模块的流程图。

图7给出了本发明实施例的识别网络的生成过程示意图;说明:(a)、待识别的词表,(b)、子词模型的状态连接关系,(c)、由子词模型拼接成的各个词条的线性网络,(d)、整个词表的识别网络。

具体实施方式

本发明提出的一种基于子词的嵌入式语音识别方法实施例结合各图详细说明如下:

本发明实施例以DSP为硬件平台,工作频率为100MHz;识别词表为600汉字词。

本发明方法的实施例总体流程如图4所示,分为:1、端点检测;2、帧同步的语音特征提取;3、完成语音特征提取;4、识别网络解码。每个步骤的实施例详细说明如下。

1端点检测:

(1.1)A/D:先经过300-3400Hz的抗混叠模拟滤波器,然后进行A/D变换,其中采样频率为8kHz,线性量化精度可为12位,采样量化后的数据以16位方式保存。

(1.2)分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,本实施例的语音帧长为32ms,帧叠为16ms。以下步骤均是对每一帧语音数据进行处理。

(1.3)预加重:将步骤(1.2)所说的分帧语音通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响。滤波器的传递函数可为:

                    x(n)=x0(n)-βx0(n-1),0.9≤β<1.0    (8)

其中,x0(n)表示预加重前的原始语音的第n个采样点,x(n)表示预加重后的语音的第n个采样点。

(1.4)对步骤(1.3)所说的预加重后的分帧语音计算时域能量特征e(t):

>>e>>(>t>)>>=>ln>>(>>Σ>>n>=>0>>>N>->1>>>>>(>x>>(>n>)>>->>(>>1>N>>>Σ>>n>=>0>>>N>->1>>>x>>(>n>)>>)>>)>>2>>)>>,>0>≤>n>≤>>(>N>->1>)>>->->->>(>9>)>>>s>

其中,t为当前帧数,N为一帧语音所包含的采样点的点数。

(1.5)采用滑动平均滤波的方法对步骤(1.4)所说的时域能量特征e(t)进行滤波得到端检特征emef(t),如式(11)所示:端点检测是实时进行的,实时端点检测方法需满足以下要求:a、对不同的背景噪声电平有一致的输出;b、能够检测到起始点和终止点;c、较短的延时;d、有限的响应区间;e、在端点处最大化信噪比;f、准确定位检测的端点;g、最大限度地抑制检测错误;综合考虑以上要求定义的目标函数,和图像处理用于图形边界检测的滑动平均滤波器非常相似。所说的滑动平均滤波器为:

>>hh>>(>i>)>>=> >>>->>hh>0>>>(>->i>)>>>>->W>≤>i><>0>>>>>>hh>0>>>(>i>)>>>>0>≤>i>≤>W>>> >->->->>(>10>)>>>s>

>>>hh>0>>>(>i>)>>=>>e>>>K>7>>i>>>[>>K>1>>sin>>(>>K>7>>i>)>>+>>K>2>>cos>>(>>K>7>>i>)>>]>+>>e>>->>K>7>>i>>>[>>K>3>>sin>>(>>K>7>>i>)>>+>>K>4>>cos>>(>>K>7>>i>)>>]>+>>K>5>>+>>K>6>>>e>>>K>8>>i>>>->->->>(>11>)>>>s>

其参数可为:[K1,...,K6]=[1.583,1.468,-0.078,-0.036,-0.872,-0.56],K7=0.2208,K8=0.5383。

>>>e>mef>>>(>t>)>>=>>Σ>>i>=>->W>>W>>hh>>(>i>)>>e>>(>t>+>i>)>>->->->>(>12>)>>>s>

其中,emef(·)为经过滑动平均滤波器输出的端检特征,e(·)为时域能量特征,hh(·)为滑动平均滤波器,W为滤波器长度,在本实施例中W=13。

(1.6)采用上限/下限的双阈值和有限状态机相结合的方法,对步骤(1.5)所说的端检特征进行语音端点判决,得到语音的起始和结束端点:所说的端检特征emef(t)在语音的起始端为正值,在结束端为负值,在静音段则接近于零。根据预先设定的端检特征的上限、下限阈值以及语音离开的持续时间,控制每一帧语音在语音、静音和离开语音态之间进行跳转。初始设定为静音态,当emef(t)大于/等于上限阈值时输出语音的起始端点,进入语音态。处于语音态,当emef(t)小于下限阈值时就进入了离开语音态。处于离开语音态,当emef(t)大于/等于上限阈值时返回语音态;当在离开语音态持续时间达到预先设定的语音离开的持续时间时输出语音的结束端点,关闭录音通道,端点检测结束。

2帧同步的语音特征提取:

(2.1)加窗:对步骤(1.3)所说的预加重后的分帧语音进行加窗处理,以减小吉布斯效应的影响。本实施例采用了汉明窗,窗函数为:

其中,N为一帧语音所包含的采样点的点数。

(2.2)FFT(Fast Fourier Transformation,快速傅立叶变换):将一帧的时域语音信号变换成为信号的功率谱。

>>>>|>X>>(>k>)>>|>>2>>=>>>|>>Σ>>n>=>0>>>N>->1>>>x>>(>n>)>>>e>>->j>2>πnk>/>N>>>|>>2>>,>0>≤>k>≤>>(>N>->1>)>>->->->>(>14>)>>>s>

(2.3)三角窗滤波器组:用一组Mel频标上均匀分布的三角窗滤波器,对一帧信号的功率谱滤波。Mel频标频率fmel与线性频率fHz之间的关系如式(15)所示:

>>>f>mel>>=>1127>ln>>(>1>+>>>f>Hz>>700>>)>>->->->>(>15>)>>>s>

利用式(15)将FFT变换后的线性频率映射到Mel频率上,并在Mel频率上进行均匀分段:M表示滤波器的个数,则第m个Mel分段频率fmelm的表达式为

>sup>>f>mel>msup>>=>>>1127>·>>(>m>+>1>)>>·>ln>>(>1>+>>sup>>f>Hz>FSsup>>/>2>>700>>)>>>M>>,>0>≤>m>≤>>(>M>->1>)>>->->->>(>16>)>>>s>

其中fHzFS是语音信号的采样频率。再将Mel分段频率映射fmelm到线性频率fHzm

>sup>>f>Hz>msup>>=>700>·>>(>exp>>(>sup>>f>mel>msup>>1127>>)>>->1>)>>->->->>(>17>)>>>s>

其中fHzm表示第m个Mel分段频率对应的线性频率,计算Mel滤波器组在各线性频点上的抽头系数:

其中Hm(k)表示第m个Mel滤波器在第k个线性频点上的抽头系数,fHzk表示第k个频点的频率值。

则第m个Mel滤波器输出的子带能量A(m)为:

>>A>>(>m>)>>=>>Σ>>k>=>1>>>N>/>2>>>>H>m>>>(>k>)>>·>>>|>X>>(>k>)>>|>>2>>->->->>(>19>)>>>s>

(2.4)取对数:对步骤(2.3)的三角窗滤波器组的输出求取自然对数得到对数功率谱特征ln(A(m))。

(2.5)DCT(Discrete Cosine Transformation,离散余弦变换):去除各维信号之间的相关性,将信号映射到低维空间。DCT的表达式为:

>ver>>c>~>>>(>r>)>>=>α>>(>r>)>>>Σ>>m>=>0>>>M>->1>>>ln>>(>A>>(>m>)>>)>>cos>>(>>>>(>2>m>+>1>)>>rπ>>>2>M>>>)>>,>0>≤>r>≤>>(>M>->1>)>>->->->>(>20>)>>>s>

>>α>>(>0>)>>=>>>1>M>>>,>α>>(>r>)>>=>>>2>M>>>,>1>≤>r>≤>>(>M>->1>)>>->->->>(>21>)>>>s>

其中,表示DCT变换后得到的第r维倒谱系数。

(2.6)谱加权:由于倒谱的低阶参数易受说话人特性、信道特性等的影响,而高阶参数的分辨能力比较低,所以需要进行谱加权,抑制其低维和高维参数。本实施例采用的加权函数的表达式为:

>>>w>r>>=>1>+>>M>2>>sin>>(>>>π>>(>r>+>1>)>>>M>>)>>->->->>(>22>)>>>s>

则第r维谱加权倒谱系数为:

>ver>>c>^>>>(>r>)>>=>>w>r>>·ver>>c>~>>>(>r>)>>->->->>(>23>)>>>s>

3完成语音特征提取:

(3.1)倒谱均值减(Cepstrum Mean Subtraction,CMS):CMS可以有效地减小语音输入信道对特征参数的影响;当端点检测步骤1检测到语音结束后,对步骤(2.6)所说的所有帧的谱加权倒谱系数进行CMS处理:

>>c>>(>r>,>t>)>>=ver>>c>^>>>(>r>,>t>)>>->>1>T>>>Σ>>t>=>0>>>T>->1>>ver>>c>^>>>(>r>,>t>)>>,>0>≤>t>≤>>(>T>->1>)>>->->->>(>24>)>>>s>

其中,T为步骤(1)得到的端点检测后的语音总帧数,将步骤(1)得到的语音起始端点置为0,为第t帧的第r维谱加权倒谱系数,c(r,t)为倒谱均值减以后的第t帧的第r维的特征。

(3.2)对步骤(1.4)得到的所有帧的时域能量特征e(t)按下式进行能量归一化处理:

>>g>>(>t>)>>=>e>>(>t>)>>->>1>T>>>Σ>>t>=>0>>>T>->1>>>e>>(>t>)>>,>0>≤>t>≤>>(>T>->1>)>>->->->>(>25>)>>>s>

(3.3)计算差分特征:对步骤(3.1)所说的c(r,t)和g(t)进行一阶差分处理:

>>Δc>>(>r>,>t>)>>=>[>>Σ>>k>=>->2>>2>>k>·>c>>(>r>,>t>+>k>)>>]>/>[>>Σ>>k>=>->2>>2>>>k>2>>]>->->->>(>26>)>>>s>

>>Δg>>(>t>)>>=>[>>Σ>>k>=>->2>>2>>k>·>g>>(>t>+>k>)>>]>/>[>>Σ>>k>=>->2>>2>>>k>2>>]>->->->>(>27>)>>>s>

对Δg(t)进行二阶差分处理:

                Δ2g(t)=(Δg(t+1)-Δg(t-1))/2                    (28)

对对所有的T帧语音,分别取前12维的c(r,t)和Δc(r,t),再分别取1维的g(t),Δg(t)和Δ2g(t),组合得到T帧27维的计算识别网络解码所需的语音特征矢量序列。

4识别网络解码:

采用一种多级处理的识别算法:首先使用粗糙声学模型得到多候选识别的结果,然后采用复杂的声学模型作第二次识别,就可以得到和直接采用复杂声学模型的系统相似的识别性能。在进行第二次识别时,识别词表规模可以从原来的数百甚至上千词条,减少为数个或者十数个词条,因此其搜索时间也远小于传统的维特比解码算法。对于每一级的搜索都在上一级搜索的结果之上进行,每一级搜索都比上一级采用更复杂,同时效果更好的声学模型。在每一级搜索时,上一级搜索所使用的系统资源都可以释放掉。这样,既可以达到较高的识别正确率,又可以占用最小的系统资源。而本实施例采用了两级搜索的算法,其算法流程如图6所示。下文将详细介绍这种两级搜索算法的具体实现过程。

(4.1)第一阶段识别:

(4.1.1)计算输出概率矩阵:

输出概率矩阵的计算量和存储量同三个参数是密切相关的,一是待识别的语音特征矢量序列的帧数,二是声学模型中状态总数量,三是输出概率密度函数的复杂度。

按照第一阶段声学模型的状态总数量为计数总数进行循环,依次读入每一个第一阶段声学模型的状态参数;然后按照步骤(3)所说的语音特征矢量序列的帧数进行循环,按照式(4)计算每一个语音特征矢量对每一个状态的输出概率,得到输出概率矩阵,保留在内存中。

这里所说的第一阶段声学模型是Monophone模型。对于汉语,采用无调Monophone模型,共有208个状态,其输出概率密度函数的高斯分量数为1,协方差矩阵为对角阵。语音特征矢量的维数为27维。这样,第一阶段的内存占用量可以控制到52k字节。声学模型的输出概率密度函数非常简单,为对角的单高斯分布,第一阶段输出概率矩阵的计算时间仅为0.05倍实时。

(4.1.2)维特比搜索:

待识别词表中的每一个词条是由第一阶段的子词模型拼接成的线性网络,如图(6)所示,对每一个词条按照式(7)进行维特比束搜索,得到语音特征矢量序列对每个词条的路径匹配分数。

束搜索方法是维特比解码中常用的一种快速算法,该算法假设:维特比解码过程中的最佳路径在任何时刻都能够保证较高分数。束搜索算法根据t时刻的路径分数设置了一定的束宽,如果路径分数落在束宽以外,则该路径会被剪枝,不能继续向后延伸。由于人类的语音信号随机性较强,束搜索的这种假设并不总是符合真实的情况,因此,过窄的束宽很容易导致最后识别结果的错误。为了保证系统的识别正确性,束搜索中的剪枝策略一直是语音识别算法中的主要研究的问题。在嵌入式系统中,由于硬件资源的限制,要求束宽设置和剪枝操作的计算量要很小,否则由束搜索所带来的计算量可能会过多地增加系统的运算负担。

本实施例采用滑动窗束搜索的方法。假设:对于每一个词条网络而言,在维特比解码过程中,真实路径总是当前匹配分数最佳的路径的近邻路径。因此,我们设置了一个固定宽度的窗,对任意的语音帧t,窗中的路径总包含了该时刻分数最高的路径及其相邻路径,而那些落在窗以外的路径则将被剪枝。由于分数最高的路径一般是渐变的,因此这个窗也是在搜索空间中缓慢变化的,就像是在滑动一样,所以称之为滑动窗。由于本实施例的识别网络为线性网络。因此对于每一个词条,在每一帧,只可能多发展出一条路径,因此,滑动窗的停留位置只有两种可能性,通过比较路径分数即可决定滑动窗是停留在原处,还是滑动一格。对于第l个词条,滑动窗束搜索的具体步骤如下:

d.初始化(t=0):

设定窗宽为CK,0<CK<Il

δ0(i)=πibi(o0),0≤i≤(CK-1),                        (29)

滑动窗的下沿BT0=0;

e.迭代(1≤t≤(T-1)):

>>>δ>t>>>(>j>)>>=>>max>i>>{>>δ>>t>->1>>>>(>i>)>>>a>ij>>}>>b>j>>>(>>o>t>>)>>,>>BT>>t>->1>>>≤>i>≤>>(>>BT>>t>->1>>>+>CK>)>>,>>BT>>t>->1>>>≤>j>≤>>(>>BT>>t>->1>>>+>C>K>)>>;>>s>

如果δt(BTt-1+CK)>δt(BTt-1+CK-1):BTt=BTt-1+1,否则BTt=BTt-1

f.终止: >sup>>δ>>T>->1>>*sup>>=>>max>j>>{>>δ>>T>->1>>>>(>j>)>>}>,>>BT>>T>->2>>>≤>j>≤>>(>>BT>>T>->2>>>+>CK>)>>.>>s>

则第l个词条的路径匹配分数 >>>LV>l>>=sup>>δ>>T>->1>>*sup>>,>>s>其中,Il为第l个词条网络的状态节点总数,其他未说明的符号表示与式(7)相同。可见,滑动窗束搜索算法几乎不增加新的计算量,就可以达到路径剪枝的目的。

通过实验,本实施例采用束宽为10的滑动窗束搜索,网络搜索时间为0.08倍实时;一候选识别正确率为92.2%,六候选识别正确率即可达到99.0%。

(4.1.3)选取候选词条:

选取候选词条时,一方面,为了保证系统的识别正确率较之传统维特比算法没有明显降低,应该选取充分多的第二阶段候选词条;另一方面,为了减少第二阶段的运算复杂度,又应该选取尽量少的候选词条。

本发明采用了根据第一阶段所得到的路径匹配分数求取识别词表中各词条置信度(Confidence Measure,CM)的方法,作为选取第二阶段候选词条的依据。置信度准则采用了归一化在线垃圾模型(Normalized Online Garbage Model,NOGM)测度,对于第l个词条的NOGM测度的具体计算公式为:

>>CM>>(>l>)>>=>>1>T>>ln>>(>>>LV>l>>>>Σ>>k>=>1>>L>>>LV>k>>>>)>>->->->>(>30>)>>>s>

其中,LVl为第l个词条的路径匹配分数,L为识别词表的词条总数,T为待识别的语音特征矢量序列的帧数。当且仅当CM(l)≥Th时,词条l为第二阶段识别的候选词条。

阈值Th是一个常数,它在不同应用中的稳健性会影响到两阶段搜索算法的整体性能。由于每一个词条的路径匹配分数LVl,是该词条在最佳路径上的各帧的输出概率和转移概率的累乘得到的,因此,做帧数归一化能够在待识别语音帧数发生变化的情况下,保证系统仍然能够高效而稳健地进行识别。

由于第二阶段候选词条的选择依靠的是设定阈值的方式得到的,我们无法预知其最终的候选词条数量。因此,为了保证第二阶段的识别时间不要过长,还需要对第二阶段候选词条的数量设置一个上限。

在本实施例中,通过实验,在对数域,阈值Th的设置为1.00;候选词条的数量的上限设置为8。

(4.2)第二阶段识别:

(4.2.1)计算输出概率矩阵:

根据第一阶段输出的候选词条,选取涉及到的第二阶段子词模型的状态;按照选取的第二阶段子词模型的状态数量为计数总数进行循环,依次读入每一个选取的第二阶段声学模型的状态参数;然后按照步骤(3)所说的语音特征矢量序列的帧数进行循环,按照式(4)计算每一个语音特征矢量对每一个状态的输出概率,得到输出概率矩阵,保留在内存中。

这里所说的第二阶段声学模型是声母后相关、韵母上下文无关的无调Biphone模型。模型总共包括了358个状态,输出概率密度函数为3高斯混合概率密度函数,每一个高斯分布的协方差矩阵均为对角阵。

第一阶段子词模型有208个状态,当第二阶段候选词条数量的上限可设定为8时,保证了第二阶段中可能出现的有效状态数量将不会超过208个状态。因此可以直接复用第一阶段输出概率矩阵占用的内存空间,提高了内存使用的效率。

(4.2.2)维特比搜索

待识别词表中的每一个词条是由第二阶段的子词模型拼接成的线性网络,如图(6)所示,对每一个词条按照式(7)进行维特比全搜索,即不进行滑动窗剪枝,得到语音特征矢量序列对每个词条的路径匹配分数。

(4.2.3)把路径匹配分数最佳的词条作为识别结果输出。

当然,本发明还可有其他实施例,在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号