ASR之Conformer

ASR之Conformer

Conformer是Transformer的变种,在encoder里面加入了CNN模块。

跟Transformer比较,主要是加了Convolution Module,除此之外,feed forward变成了2个,残差层是1/2. 去掉了Transformer的Position Encoding层,Transformer中加入这一层主要是Self Attention的机制导致丢失了输… 更多... “ASR之Conformer”

ASR之BPE

ASR之BPE

BPE代表Byte Pairing Encoding,对于英文来说,就是一个或者几个字符的组合。在Kaldi中,word是被表示为,或者分解为phone,怎么做呢?就是根据对应语言的字典模型-lexicon。对于大多数语言,我们都可以采用CMU免费提供的Lexicon。但是对于小语种,那么可能就没有对应的lexicon可以用,那么可以采用BPE。

下面举个例子,假设我们要编码aaabdaa… 更多... “ASR之BPE”

ASR之语言模型

ASR之语言模型

N-gram语言模型

待补充…

Perlexity

如何评价一个语言模型的好坏,
– 实际测试
– 困惑度(perlexity)

实际测试就是把训练的好的语言直接使用ASR的解码中,查看准确率。这个方法准确度高,但是效率低,因为我们把一个语音模型的评测问题变成了ASR的解码问题。

除了实际测试,还可以直接计算困惑度。就是把几个句子连起来变成一个很长的句子,然后使用… 更多... “ASR之语言模型”

RNN LSTM GRU

RNN LSTM GRU


为什么要把三个列在一起,因为它们之间从左到右进阶的关系,最开始大家用RNN,发现问题,提出方案就有了LSTM,同样方式就有了GRU。

RNN在时间跨度够长,就会有一个梯度消失,或者梯度爆炸的问题,因此人们在加入了一个遗忘门的概念,目的是就是定期去删除以往的记录。在LSTM中由于输入门,输出门和遗忘门,太过复杂,复杂意味着计算量大,训练难度的增加,因此有人提出了新的模型GRU,把输… 更多... “RNN LSTM GRU”

Kaldi之Lattice

Kaldi之Lattice

在Decode时候,使用Viterbi算法可以得到最优的一条路径,但是往往它可能不是最好的,因此我们采用Beam Search得到一个几个路径,我们给定一个范围(Kaldi的命令参数使用的时候 –beam),距离最优路径一定范围的都留下来,于是会得到N best的结果

我们可以采用保存所有它走的路径,包括状态,ilabel,olabel,第几帧等信息。

那N best的时… 更多... “Kaldi之Lattice”

Kaldi之WFST

Kaldi之WFST

WFST是什么

WFST : Weighted Finite State Transducer

FSA : Finite State Acceptor
用来判断一个字符串能不能被接受。

WFSA : Weighted Finite State Acceptor
用来判断一个字符串能不能被接受,并且给出能接受的概率。

WFST : Weighted Finite State Transducer
用来把一个序列转换为另外一个序列,… 更多... “Kaldi之WFST”