1、 语音识别(78),关于HMM训练的几点考虑 克服训练数据的不足 HMM的模型含有很多待估计的参数,为得到满意的模型,必须要有很多训练数据,这在实际中很难办到。在训练数据少时,一些出现次数很少的观察值没有包含在整个训练数据中,这样训练出的HMM参数中就会有不少为零的概率值。需要对训练好的模型进行相应的处理。, 语音识别(79),常用的方法是将一个训练较充分,但细节较差的模型与一个训练虽不充分,但含有细节的模型进行混合。前一个模型可在HMM模型结构中将有些状态转移概率及观察输出概率相近的进行“捆绑” ,从而减少模型参数。使用相同的训练数据就可以对这种“捆绑”后的模型进行较充分的训练。, 语音识别
2、(80),合并两个HMM的问题可以表示为,其中 为结果模型, 和 为待合并的两个模型,分别代表前面提到的两种类型的模型。,为合并比例系数。关键是合并权值的估计。,一种方法是人工选择权值,这种方法的局限很明显:过分依赖于人的经验判断,且工作量大。, 语音识别(81),删插(Deleted Interpolation)平滑法,设 和 为 和 模型中状态j对应的观察值概率, 为 中状态j对应的观察值概率,那么有,状态j被三个状态所取代,没有输出观察值概率,输出观察值概率,输出观察值概率,空转移,估计权值的问题转化为一个HMM训练问题,可相应估计出来。, 语音识别(82),4.4 大词汇量连续语音识别
3、技术 语音识别研究中意义最重大、应用成果最丰富,同时最具有挑战性的研究课题。 大词汇量非特定人的连续语音识别系统的词误识率大体为小词汇量、特定人的孤立词识别系统词误识率的50倍左右。 特有的问题: 无法切分,无法确定单词间的边界位置。 发音变化:连续语音的发音比孤立词发音更随便,受协同发音的影响也更为严重。, 语音识别(83),上个世纪90年代初期已经取得了若干突破性的进展。 这一进展依赖于在识别系统中采用HMM算法的统一框架,以及非常细致的将声学、语音学和语言学的知识引入,并改善这个框架。,在大词汇量语音识别系统中,一段语音信号的特征矢量序列为,该特征矢量序列可能包含一个词序列为, 语音识别
4、(84),按贝叶斯准则,,那么语音识别的任务为,找到对应观察序列O的最可能的词序列,要找到最可能的词序列,必须使上式右侧两项的乘积最大。第一项由语言模型决定,第二项由声学模型决定。, 语音识别(85),在实现时声学和语言学模型结合在一个框架中,训练时单独训练。现在的统一做法是将整个识别系统分为三层:声学语音层、词层和句法层。, 语音识别(86),是识别系统的底层,它接受输入语音,并以一种“子词”单位作为其识别输出,每个子词单位对应一套HMM结构和参数。,词层规定词汇表中每个词是由什么音素音子串接而成的。,句法层中规定词按照什么规则组合成句子。, 语音识别(87),这样,从状态出发逐层扩大到音子
5、、词、句子。,每一个句子包含许多状态的复杂的状态图,该句子就是用由所有状态形成的结构、状态之间的转移概率,以及每个转移弧产生某个特征输出的概率来描述的。,对于特定的词表和句法,所有可能出现的句子构成了一个更大的状态图。,在完成识别任务时,要根据一个输入语音特征矢量序列来确定一个最可能的句子。需要在这个大的状态图中搜索一条路经,该路径产生上述特征矢量的概率最大,由路径可以进一步确定句子中的每一个词。, 语音识别(88),基于子词单元的连续语音识别系统总体框图, 语音识别(89),4.4.1 声学模型 (1) 基本声学单元的选择 以词为基本单元建立模型不合理,造成大量不必要的冗余存储和计算。因此一
6、般采用比词小的子词识别基元,如音节、半音节、音素等 。 一般来说,声学单元越小,其数量也就越少,训练模型的工作量也就越小; 但单元越小,对上下文的敏感性越大,越容易受到前后相邻的影响而产生变异,因此其类型设计和训练样本的采集更困难。, 语音识别(90),(2) 如何由子词单元构成词 在词层中应有一部字典来规定词表中每一个词是用哪些子词单元以何种方式构筑而成的。最简单实用的方案是每个词用若干子词单元串接而成。 每个词的发音可能有多种变化方式,在子词串接时,必须有所体现。 替换:即词中的某个音子可能被用其它相似而略有差异的子词单元所替换 。 插入和删除:词中有时增加了一个不是本词成分的子词单元,有
7、时又将本词成分中的某个子词删除。, 语音识别(91),解决方案 方案1:每一个词建立多套子词单元串接规则。 方案2:将子词单元构成词的规则用一个网络图来描述。,可以相互替换的子词单元,可选择的子词单元, 语音识别(92),(3) 基于子词单元的HMM训练 子词单元的HMM一般采用从左到右的结构,状态数固定为2到4个。 在语音段中,子词太短,无法精确标出语音的边界。 训练时,用一种很粗糙的方法进行初始分段,例如等长分段,形成初始模型 。 已知句子内容,因此可将子词模型串接成句子,然后用分段K均值算法多次迭代,对各子词模型进行重估。最终会自动收敛于一个最佳模型估计,同时达到合理的子词分段。, 语音
8、识别(93),分段K均值算法 初始化:将每个训练语句线性分割成子词单元,将每个子词单元线性分割成状态,即假定在一个语句中,子词单元及其内部的状态驻留时间是均匀的; 聚类:对每个给定子词单元的每一个状态,其在所有训练语句段中特征矢量用K均值算法聚类; 参数估计:根据聚类的结果计算均值、各维方差和混合权值系数; 分段:根据上一步得到的新的子词单元模型,通过Viterbi算法对所有训练语句再分成子词单元和状态,重新迭代聚类和参数估计,直到收敛。, 语音识别(94),4.4.2 语言模型 众所周知,从一个词表中任意选择若干词所构成的序列不一定能构成自然语言中的句子,只有合乎句法者才能算是句子。这种约束
9、,在语音识别中可以利用语言模型来实现。 语言模型分为基于文法的语言模型和基于统计的语言模型。 在大词汇量的语音识别系统中,统计语言模型由于可以克服文法规则方法难以处理真实文本的局限性,因而获得了越来越广泛的应用。, 语音识别(95),统计语言模型的基本原理是,采用大量的文本资料,统计各个词的出现概率以及其相互关联的条件概率,并将这些知识与声学模型匹配相结合进行结果判决,以减小由于声学模型不够合理而产生的误识。,理想情况:对词串 ,, 语音识别(96),N元文法模型:条件概率计算时,只考虑与前N1个词相关 ,,F(W)是指词串W在训练数据中出现的次数。,通常系统中采用的也只有二元和三元文法。N元
10、文法统计语言模型的建立,一般是通过相对频率计数得到:,一般采用简化模型, 语音识别(97),其中 , 是训练语料的总词数。,解决这种训练数据稀疏的方法:为了避免出现 或接近于零的情况 ,可以用三元、二元和一元相对频率做插值 。, 语音识别(98),(2)词对模型 :二元文法模型的简化形式,(3)长距离文法模型:反映语言中较长距离的词之间的相关性,长距离二元文法模型中:,(4)N元词类文法模型 :每个词wt只与其所在类ct有关,而与前一时间的词所在类ct-1中的成员无关。, 语音识别(99),4.4.3 最优路径搜索从各种可能的子词序列形成的一个网络中,找出一个或多个最优的子词序列。这在本质上属
11、于搜索算法或解码算法的范畴。路径的搜索应从每个可能成为句子开始的子词单元开始 ,然后向各种可能的单元转移 ,直到当前子词的最大可能帧数位置。全搜索几乎是不可能的。因此常采用基于一定裁剪路径的算法。, 语音识别(100),裁剪路径即放弃不可能的,或者说得分低的路径。 例如:当该路径与最优路径得分的差值大于一定门限时,可以放弃该路径。 在搜索过程中,声学和语言学模型可以结合在一起。对于新的一帧数据,语言模型和字典层控制子词间如何扩展和转移。HMM模型控制词内的状态转移。, 语音识别(101),1、 Viterbi Beam搜索算法, 初始化初始化活动路径(最高层) 递推 For m=1 到 MFo
12、r 每一层次(指各个层次的语言和声学模型)For HMM的每个活动状态把每个活动路径向后扩展一帧至所有可以到 达的状态执行Viterbi计算裁剪路径End 活动状态End 每一层次End 观察矢量序列 终止:选择最可能的路径,Viterbi Beam算法是一个次优算法,最优路径有可能在开始时因得分过低而被裁剪掉。不过,在语音识别中次优算法也往往可以应用。, 语音识别(102),(2)基于前向搜索后向回溯的N-best算法 保证全局最优,而且能依次得到全局得分最高的N条候选路径。该算法是一个TWO-PASS的过程 第一部分是从初始帧到最末帧的帧同步前向格点搜索,采用Viterbi算法来记录所有局
13、部路径的得分值。 另一部分是从最末帧到初始帧异步后向树搜索,采用A*算法实现。, 语音识别(103),A*算法对词图中的每个词节点n,其估价函数f(n)估计了从搜索开始节点(句尾)经过节点n,到达目的节点(句首)的最优路径得分,f(n)=g(n)+h(n)g(n)是从句尾到词n之间最优路径的得分估计,启发函数h(n)是从句首到词n最优路径的得分估计,它由第一阶段的搜索给出。, 语音识别(104),通过一个堆栈将当前各f(n)从优到劣排序,使当前最先要进行扩展的路径处在栈顶。扩展栈顶路径,记录所扩展的路径到输出链表,计算扩展后各个新的f(n),直到句首,这样就完成了一条路径的搜索。 不断地按照栈
14、顶的内容扩展,就可确定出N条路径。, 语音识别(105), 语音识别(106),基于Viterbi的N-best算法前向搜索后向回溯的N-best算法是Two pass算法,后向回溯必须在一段语音结束后才能开始。获得的结果至少要延迟第二阶段搜索的时间。出现其他算法,如基于Viterbi的N-best算法:采用Viterbi搜索,在每个词层保留N个最优的前接路径,并分别向后扩展,在新的词层进行裁减后仍保留N个最优。全部搜索结束后,选出最优的N个结果,并分别逐次回溯出N条路径。, 语音识别(107),4.5 关键词检出采用语音识别技术把需要的词从包含它的连续语句中提取出来,这种技术称为关键词检出(
15、Keyword Spotting)或词检出技术。,应用领域 :, 电话接听, 监听, 口语识别系统, 信息查询系统, 语音识别(108),问题描述设已知一观察值序列 ,判断其是否存在一关键词M,其HMM模型所包含的状态为 ,可采用如下方法来计算在语音中存在关键词的评分,,其中 为关键词在语音中的最佳起始点, 为最佳结束点, 为与之相对应的关键词M的最佳状态序列。, 语音识别(109),可按下式求得,,穷举所有可能的起始点和结束点,能求出打分,但计算量太大。,采用如下方法:,通过引入垃圾状态 定义了关键词的扩充模型,在整个观察序列上用Viterbi算法进行搜索,可以得到对应的最佳状态序列:, 语
16、音识别(110),从词表的角度,关键词检出系统必须要有一种机制能处理词表外词。对词表外的词建立处理它们的声学模型。,通过引入垃圾模型来表示词表外词和背景语音。,垃圾模型可以使用大量的词表外词和背景语音,基于最大似然方法训练得到。,在识别时,L个关键词模型和V个垃圾模型就组成L+V个词汇的语音识别系统。,将待检语音标注为由关键词和非关键词组成的词串,根据每个关键词的评分来判断关键词是否存在。, 语音识别(111),还可以在关键词检出系统中引入反关键词(Anti-keyword)模型,训练时为每一个关键词都建立一个反关键词模型,可以增加关键词间的区分能力。,三种可能的错误情况:, 将不含有关键词的
17、语音段判定为含有某个关键词; 将一个关键词误判为另一个关键词; 没能检测出语句中的关键词。,前两种称为“虚警”(False Alarms),后一种称之为“错拒”(False Rejections)。, 语音识别(112),关键词检出系统的组成, 语音识别(113),语音解码器的设计大多数关键词检出系统都采用无限制的语法网络。, 语音识别(114),关键词确认过程,确认阶段必须使用有效的方法,去掉那些错误的候选,以降低系统的误警率。,一般是基于统计假设检验的。,统计假设检验的基本原理就是比较零假设和备择假设所得值的大小差异。 通常是概率比检验。, 语音识别(115),H0 表示语音识别输出串中存在关键词, H1表示这个语音识别输出串中不存在关键词。,如果零假设和备择假设都已经明确得到,则,大于事先设定的阈值,则接受零假设H0,否则接受备择假设H1 。,