首页 教育资讯 入园入学 育儿知识 文化素养 幼儿园教育 语文教育 图片资源 儿童视频 幼儿园 机构

汉字词语句子

相关类别: 中小学教案课件 小学生作文 汉字词语句子 中小学试题精选
信阳儿童网

态的拼音(语音识别简介(AutomaticSpeech,,Recognition,ASR)重要角色)

来源:儿童教育网 人气: 发布时间:2022-08-26
目前的实际场景中的语音识别系统更多是基于HMM的传统语音识别框架,如:DNN-HMM,这种框架是由声学模型、发音词典、语言模型和解码器构成的pipeline结构,其中声学模型建模粒度为比音素还小的三音素状态,而语言模

简介

在语音识别系统中,加权有限状态传感器 (WFST) 发挥着重要作用。本文主要介绍发音词典、语言模型和WFST的原理,以及实践中的一些优化方法。

背景

目前实际场景中的语音识别系统更多是基于HMM的传统语音识别框架,如:DNN-HMM。该框架是由声学模型、发音词典、语言模型和解码器组成的流水线结构。其中,声学模型的建模粒度是比音素小的三音素态,语言模型和WFST在其中起着重要作用。

本文将主要关注三个问题:(1)如何实现HMM状态到句子的映射;(2)如何优化WFST的解码效率;(3)在实际应用中,如何使用 Lattice Rescore 等方法来适应不同的业务场景。

首先,我们将回顾语音识别的背景知识,介绍传统语音识别的架构和基本概念,以及发音词典和语言模型的原理。此外,还介绍了WFST的定义和基本操作,以及WFST在语音识别中的作用。最后,我们将以实际场景为例,从解码图的角度介绍一些语音识别的优化方法。

语音识别简介

自动语音识别 (ASR) 的目标是将人类语音内容转换为相应的文本。系统的输入通常是完整的长录音(或语音流)。录音需要通过语音活动检测(VAD)将人声片段切出,语音识别会将语音内容转录为文本。 ,其中会包含大量的口语化、重复、语法错误等,语音识别不会在句子中添加标点符号。

此时,系统需要一个后处理模块,该模块使用平滑技术将明显的口语问题“组织”成平滑的句子,并在句子中添加标点符号。同时,说话人分离、说话人识别、语音情感识别等模块会给每一个语音打上说话人、性别、情感等标签,并与转录的文本一起,作为下游NLP的输入模块,然后转化为意图和情感。 、插槽和其他可用信息。

语音识别系统通常分为传统的基于 HMM 的系统和端到端系统。传统系统分为声学模型、发音词典、语言模型和解码器,其结构由原来的GMM-HMM过渡到DNN/GMM-HMM混合系统。端到端系统的输入是声学特征序列,输出是对应的词/词序列,主要有CTC和Seq2Seq两种结构。语言模型在这两个系统中都发挥着重要作用,而 WFST 主要用于传统系统。本文的内容将介绍基于HMM的传统语音识别。

语音识别问题通常可以用下面的公式来描述,其中W是单词序列,X是声学特征序列。如公式所示,语音识别的目的是寻找在当前声学特征序列下条件概率最大的条件概率。词序。

根据贝叶斯定理,公式可以变形,变形后的公式包含两部分,即X的条件概率和W给定W的概率。对于p(X|W),我们使用Acoustic Model (AM) 来建模,而对于 P(W),我们使用语言模型 (LM) 来建模,这也是传统语音识别的建模基础。

语音识别的流程如下图所示。首先将声音信号分帧加窗后,计算每一帧的声学特征,如:MFCC、Fbank或PLP,序列为前述X。X作为HMM的观察序列,声学模型用于拟合发射概率,即p(X|S),其中S为HMM的状态。使用 GMM 建模时,每个状态都会对应一个模型。当使用 DNN 构建取模时,状态数就是 DNN 输出层的维度。在现实生活中,一个音节通常会持续一段时间,所以frame和HMM状态之间会存在多对一的关系,所以声学模型的另一个作用就是实现frame和状态的对齐。状态。此时HMM中的观测序列和模型参数是已知的,语音识别的过程就是在给定声学特征序列的情况下对HMM状态进行解码的过程。

另外,我们的识别目标是词序列(分句结果),每个词从预先构建的发音词典(词典)转换成对应的音素序列(汉语音素通常指拼音中的声母和韵母) ),它将单词序列转换为音素序列。人们说话时,某个音素的发音会受到前后音素的影响。这种现象称为同音。为了解决这种现象,将当前音素与其前后音素拼在一起,形成一个新的音素,称为三音素。 )。在传统的语音识别系统中,通常使用三个状态来表示一个三音素,分别代表一个音素发音的初始状态、稳定状态和结束状态。因此,一个音素可以表示为三种状态。

但是这里会有问题。汉语有200多个音素。按照目前的方法,最终的状态类别数是200*200*200*3 = 24000,也就是说我们需要使用24000个GMM或者输出层对于一个24000维度的DNN来建模,很难正常的训练数据来支持这么大的模型,很容易过拟合。实际上,并不是所有的三音素都会出现,有些三音素的发音会相似。因此,在传统的语音识别系统中,所有的三音素都会聚集在一起,发音相近的三个音素就会被聚集在一起。音素将使用相同的模型。这种方法称为状态绑定。这里的聚类通常使用决策树来实现。

至此,我们知道可以使用声学模型将HMM状态拟合到声学特征序列的发射概率上,同时我们也知道了状态与单词的逐层对应关系。接下来,我们需要一个模型来输入状态序列。 ,可以高效的输出对应的词序列,并给出对应的分数进行解码,这就是WFST解决的问题。在介绍WFST之前,让我们先熟悉一下语言模型和发音词典的概念。

发音词典和语音模型

1、语言模型

语言模型表示一个句子出现的概率。对于下图中的四个句子,第四句“Ham eats cats likes”显然是一个不流畅的句子。因此,我们希望语言模型能给出前三个句子。一句话得分越高,最后一句话得分越低。

语言模型的公式是P(W)。因为句子是千变万化的,所以对句子进行分段然后建模。分词后,一个句子的出现概率表示为当前上下文中每个词出现概率的乘积。使用马尔科夫假设,每个词的概率只和前N个词有关,基于这个思想构建的语言模型就是ngram。

例如,假设训练集是上面给出的前三个句子,那么“cats like to eat ham”的概率计算过程出现如下图所示,表示句子的开头和符号在句末。

2、语言模型的平滑

和上一节的例子一样,尝试计算“mouse like to eat ham”的概率,因为“mouse”从不作为句首,“mouse”从不出现在“like”之后,所以P(mouse| )和P(like|mouse)都是0,这会导致整个句子的得分都是0,但这显然是一个平滑的句子,只是因为语料库中没有出现这样的组合,整个句子的概率为 0 是不合理的。为了解决这个问题,提出了一种平滑算法(Smoothing)[1][6]。

平滑算法主要有两种类型,插值法和退避法。以上面的句子为例,插值法是将高阶词(like mouse)与对应的低阶词(like)进行比较进行插值,而fallback法是利用高阶词出现时的概率高位词存在,当高位词不存在时,用对应低位词的概率乘以回退概率。

态的拼音(语音识别简介(AutomaticSpeech,,Recognition,ASR)重要角色)

常用的平滑算法是Kneser Ney Smoothing [1]。此方法有插值版本和回退版本。在计算高阶原始概率的时候态的拼音,会加入一个折扣因子来保证所有单词的概率。总和为1,其折扣因子和回退概率是从当前词的上下文统计中得到的。以下是对应的计算公式。

3、混乱

语言模型的评估方法是perplexity(ppl),表示为每个单词的倒数概率的几何平均值。对数变换后与交叉熵的形式相同,其大小代表当前句子的“流畅”程度,通常相对值更有意义。

4、语言建模工具

在使用kaldi[10]语音识别框架时,语言模型需要用ARPA格式表示,如下图,主要分为head和各阶ngrams的单词和分数,包括三列,即当前单词。 log10、words的出现概率和log10的fallback概率。

进一步,使用kaldi中的arpa2fst工具将语言模型转换为WFST图的形式。

基于Ngram的语言模型工具通常有SRILM[11]、IRSTLM[12],另外也可以使用深度学习语言模型进行建模,常用工具有rnnlm[2],可以重新评分,等。该方法应用于语音识别系统。注意这里语言模型的本质和NLP中的概念是一样的,但是在NLP中,更关心的是语言模型的输出语义向量,而在语音识别中,更关心的是词之间的转移概率。

5、发音词典

读音词典给出了每个单词对应的音素序列,如下图所示。目前常用的开源中文词典是thchs30和CC-CEDICT,英文词典是CMU-dict。字典中的单词决定了解码时单词出现的概率,所以通常需要根据业务需求对字典进行挖掘,生成音素序列。此功能称为 g2p(Grapheme-to-Phoneme)。目前有Sequitur G2P、g2p-seq2seq等工具可用于训练发音词典生成模型。

语言模型和发音词典只有与WFST结合后才能用于语音识别。下面将介绍WFST的定义和基本操作。

WFST

1、WFST的定义

加权有限状态传感器 (WFST) 是有限自动机 (FA) 系列的成员。 FA 由五个元素(A、Q、E、I、F)组成。其中Q是状态集,代表图中的节点,A是标签集,代表边上的符号,E是转移函数集,两个状态节点和它们之间的边以及边上的标签和权重构成一个转移(transition),I为初始状态,图中用较粗的圆圈表示,为搜索的起点,F为结束状态,用图中的双环圆圈表示图,是搜索的终点。

FA 家族有四个成员,如上图所示。 Finite-State Acceptor(FSA)端的标签只有输入,或者输入和输出相同,Finite-State Transducer(FST)端有输入和输出,加权有限状态Receiver(Weighted Finite-State Acceptor, WFSA) 在 FSA 的基础上拥有更多的边权重,Weighted Finite-State Transducer (WFST) 在 FST 的基础上拥有更多的边权重,如 a:z/1.2 表示在 0状态,输入为a,输出为z,可以得到1.2的权重。

WFST 结构常用于语音识别[3][4][5]。前面介绍的语言模型和发音词典都可以用WFST的形式来表达。下图中,(a)是语言模型的WFST表示,每条边上的输入是单词,输出也是单词,权重是单词出现在当前路径的概率(即ngram概率),这说明它的本质是一个WFSA。 (b) 是发音词典的 WFST 表示。每边的输入是phone,输出是word,权重是当前词的发音概率。因为一个词对应一个音素序列,所以词通常用作第一个音素。输出。

至此,我们已经知道了语言模型和发音词典的 WFST 表示。回到最初的问题,我们希望利用WFST建立HMM状态到词的映射,尽可能优化解码搜索效率,这取决于WFST的特性和操作。

2、半环

WFST中的运算是基于半环理论[4]构建的,它是抽象代数的概念,简单来说就是对集合、加法和乘法等概念的抽象。如下图所示,列出了四种常见的半环。 SET代表定义域,加法可以理解为并行运算,乘法可以理解为串行运算。单位0代表加法单位,单位1代表乘法单位。

这里主要介绍两个半环结构。左图是概率半环,其节点为状态,边上的权重为概率值。从状态0到状态3的分数可以理解为,

态的拼音(语音识别简介(AutomaticSpeech,,Recognition,ASR)重要角色)

两条路径的概率之和,即p1*p2+p3*p4。右图为Tropical Semiring,其节点为状态,边上的权重为概率的-log值。在Tropical Semiring中,我们关注的是最优路径问题,即最短路径搜索,从状态0到状态3的得分表示为

加权最短路径

。 WFST在语音识别中主要起到解码图的作用,所以在ASR中经常使用Tropical Semiring。

WFST的运算是基于当前Semiring中加法和乘法的定义。这些操作可以分为两类:组合和优化。优化操作可以进一步分为确定化、权重推送、Epsilon 去除、最小化。组合操作实现了不同级别WFST的组合,优化主要是优化解码效率。接下来主要介绍Composition和Determinization。

3、作曲

组合操作通过连接两个图的输入和输出将两个不同级别的WFST组合成一个WFST。通常,组合的符号用一个空心圆来表示,如下式所示,表示两个图形T1和T2的组合。

以下面两张图为例介绍组合的迭代过程,

首先,分别列出图a和图b的所有变迁,如:图a的初始状态表示为0A,图b的初始状态表示为0B。组合操作的本质是将图a中的输出与图b中相同的转移输入进行组合,如图a所示,转移a:b/0.1可以和b:b/<@组合在图 b0.1 中进行合并。

从图a的初始状态和图b的初始状态(0A,0B)开始迭代,如下图,其中QueueT代表当前正在处理的状态组合,QueueT+1代表下一个状态要处理的组合。首先列出0A和0B状态“out”的所有边沿,因为0A的transition输出为b,0B的transition输入为b,所以两个transition可以合并,合并transition的输入为在图 a。输入和输出是图b中的输出,权重是两次转换的权重的乘积(这里的权重代表概率),下一跳节点表示为(1A,1B),这样组合的新得到transition,下一次迭代将从(1A,1B)开始。

再次迭代到(1A,1B)时,由于该节点已经处理完毕,后续不会放入QueueT+1中。

迭代直到所有的transition处理完成,将组合的transition表示为一个图,则可以得到下图所示的组合WFST。这个WFST的输入是原图a的输入,输出是图b的输出。

4、确定

如果一个图是确定性的,给定一个输入序列,在对应的图中只能找到一条路径。如下图,左图为未确定图,右图为确定图。当输入序列为“ab”时,左图有两条路径,而右图只有一条路径。

下面是一个例子来说明确定的作用。下图是语音识别后的一句话。我们使用 Lattice 中的束搜索(一种特殊的 WFST)来获得 top5 音素序列。在未定图中得到的top5音素序列是相同的,在确定图中搜索可以得到5个不同的序列,这意味着如果要在未定图和确定图中得到相同的效果,就必须增加束,因此,确定性提高了解码搜索效率。

确定性通常由以下符号表示:

对于前两个数字,确定过程如下。首先,找到输入相同的路径(0à1和0à2),因为两者的权重不同,将其中一个路径的权重表示为另一个路径的权重加上一个“差异”(a /1+1),合并两条路径,同时在目标节点的括号中表示“差异”,即(1,0),(2,1)@ >表示原节点1差为0,原节点2差为1,即完成了一个转移的判断。

语音识别中的WFST

1、HCLG解码图片

态的拼音(语音识别简介(AutomaticSpeech,,Recognition,ASR)重要角色)

回到文章最初的问题,我们希望利用WFST建立HMM状态到词的映射,尽可能优化解码搜索效率。根据组合操作的定义,当图 a 的输出与图 b 的输入相同时态的拼音,就可以进行组合。在传统的语音识别过程中,H用于表示HMM拓扑,输入为HMM状态(state),输出为三音素(triphone),权重为HMM的转移概率; C用来表示三音素到单音素的映射,输入是三音素,输出是单音素(context-free phoneme,CI音素); L表示发音词典,输入为音素,输出为单词,权重为发音概率; G代表一个语言模型,输入是一个词,输出是一个词,权重就是语言模型评分。根据WFST的组合操作,可以将以上四张图片组合起来。组合的图片称为 HCLG。输入是 HMM 状态序列,输出是单词序列。那么HCLG就是我们想要的模型,通常称为解码图。

实际上,优化和组合是交替进行的,如下式[4]所示。其中,空心圆圈代表组合,det代表确定,min代表最小化,rds代表去除消歧符号(为了使L具有确定性,在具有相同音素前缀的词中加入消歧符号)。

如前所述,语音识别的过程相当于HMM的解码过程。发射概率由声学模型表示,解码状态由在HMM状态空间上搜索变为在解码图上搜索,解码可以直接得到词序列,优化变换后的解码图也达到了优化搜索性能。

2、格子

为了保证解码效率,对解码图进行剪枝是必要的步骤,一般直接使用beam search。另外,在传统的语音识别系统中,声学模型的训练通常会占用较多的资源,因此声学模型的更新并不频繁,这使得语音识别系统难以针对特定场景进行快速优化。考虑到这两个问题导致了 Lattice 的概念。

在解码过程中,使用了一些剪枝方法,最终得到N-best path。重新确定N-best路径得到的WFST就是Lattice。因此,和 HCLG 一样,Lattice 的输入是 Lattice。是 HMM 状态,输出是一个单词序列。但是在Kaldi中,Lattice的生成和存储都进行了优化[8],使得输入和输出都是字序列,HMM状态等信息存储在transition中。因此,Lattice 通常被称为词图或词格。这样,语音识别的解码过程就分成了两个步骤(two-pass)。第一遍解码得到Lattice,第二遍在Lattice中进行最短路径搜索得到1-best解码结果。

使用Lattice的优势,一方面,在原模型上得到Lattice后,可以在新的语言模型和字典上重新评分(Rescore),重新评分时可以使用更大的语言模型,或者与业务相关性更强的模型,保证在声学模型不变的情况下优化解码效果。另一方面,在 DNN/GMM-HMM 混合模型中,经常使用判别训练。通常我们的训练目标是让1-best sentence和labeled sentence尽可能接近,但是discriminative training就是基于此。希望其他类似 1-best 的句子离标注的句子越远越好。为了降低计算复杂度,通常在 Lattice 上进行判别训练。

在实际场景中,Lattice 的使用更为广泛。比如序列标注任务中Seq2Seq模型解码器的输出和CRF的输出,可以看成是Lattice上的解码过程,re-scoring和fusion的思想同样适用于这些场景。

至此,很明显,传统的语音识别系统是在基于WFST构建的解码图上进行解码,并通过独立构建的语言模型、发音词典等完成组合,并通过a优化搜索空间WFST的一系列操作。接下来,我们关注如何在不移动声学模型的情况下优化真实场景中的识别性能。

业务场景实践

语音识别系统在实施时往往会同时应用于多个场景和领域。演讲者也分布在全国各地,他们的对话内容、演讲环境、口音等都会大相径庭。当接入一个新场景时,往往需要快速优化其识别效果,可以从语言模型、读音词典和解码图的角度来实现。

1、语言模型适配

通常在数据充足的情况下,训练数据分布越接近真实数据,识别效果越好。但是,如果为每个场景构建一个语音识别系统,可能会因为数据量少而导致过拟合问题。对于传统的语音识别系统,可以在所有场景数据上训练声学模型,然后使用在不同场景数据上训练的语言模型进行解码。

下表使用相同的声学模型,声学模型未使用业务相关数据进行训练。我们使用不同的语言模型来验证对三种不同业务的识别效果(单词错误率,cer)。可以发现,在声学模型不变的情况下,语言模型的训练数据越接近原始场景,在相应场景中的识别效果就越好。此外,我们在三个测试数据文本上计算了语言模型的 ppl。可以发现,在声学模型不变的情况下,ppl在测试文本上的表现与对应的cer基本呈正相关。因此,在优化语言模型时,可以优先在测试集文本上计算ppl。与原来的 ppl 相比,如果有改进,则意味着新模型在测试集上的表现会更好。

另外,在训练声学模型时,发音字典和解码字典是独立的,解码图的输出顺序由字典和语言模型共同决定。与语言模型的适配类似,解码字典也可以根据场景重新设计,比如:裁剪或者新词挖掘。这里有个小技巧,分词语言模型和字典分词语言模型与原模型的融合会在一定程度上丰富输出内容,避免无法输出集合外的单词,从而提高识别度效果。

2、点阵重分

根据前面的介绍,更新语言模型通常需要更新整个解码图,然后在新的解码图上进行解码。这样的操作比较复杂,重新解码的效率比较低。另一种方法是只更新 Lattice 上的语言模型分数,然后在 Lattice 中重新寻找 1-best path,这样可以大大降低重新识别的复杂度。

Lattice Rescore[9]可以使用两种思路,一种是对图片进行重构,即使用新的语言模型G.fst和Lattice对图片进行重构,这种方法效率相对较低,识别效果为没有改善。最常用的方法是“先减后加”。我们先来看看kaldi中Lattice的存储格式。如下图,是使用Lattice计算TopN的一部分,包含四列(后三列本质上是逗号分隔的一列),其中前两列的序号代表状态,而第三列代表边上的词,最后一列有图成本、急性成本和transition-id序列三部分。

Acoustic cost 是声学分数,graph cost 是图形实体分数。图代价由三部分组成,lm代价是语言模型得分,发音代价是发音概率得分,转移代价是HMM转移概率得分。 “先减后加”的rescore方法首先加载原始语言模型,从对应的图代价中减去lm代价,再加上新语言模型的lm代价,得到更新后的Lattice。更新后通常需要重新确定。

我们比较了 Lattice Rescore(因为它主要是对语言模型进行重新评分,所以也可以称为 lmrescore)和使用新语言模型重新组合解码的结果(直接解码)。有1个点左右的误差,可能来自第一遍解码过程。因此,最好的办法是更新HCLG解码图,但是当在线环境不方便,或者为离线实验节省时间时,可以使用rescore的方法。

此外,在线识别过程中还可以加载热词词典。解码时,可以实时判断当前束中的单词是否在词典中,及时切断不符合要求的路径,还可以快速优化在线识别。但是这样会大大降低解码器的通用性,不恰当的字典选择可能会导致一些识别问题。

3、语言模型融合

类似于平滑的原理,可以融合多种语言模型[7]。融合方法是简单的插值,即给模型一个尺度(0

本文标签:语音识别自然语言处理lattice

内容编辑:萌理慧
育儿书籍

最新儿童教育信息推荐

儿童网首页 | 教育资讯 | 入园入学 | 育儿知识 | 文化素养 | 幼儿园教育 | 语文教育 | 图片资源 | 儿童视频 | 幼儿园 | 机构

Copyright © 2022 儿童教育学习网 版权所有- 湘ICP备2023001863号  专业的儿童教育网提供幼儿教育资源、中小学教育资源、亲子教育培训服务  商务合作:13503769300

儿童网、家庭教育网、小学教育网、幼儿教育网、儿童学习网、亲子育儿知识综合门户 幼教网 儿童网地图 儿童网信息列表