HMM
输入为语音 ,希望预测文本,即为
其中,为 Language Model, 为 Acoustic Model (HMM)
HMM 引入隐状态 , 语音对应的音素 (语音最小单位) 由隐状态决定, 隐状态状态转移由之前隐状态决定(上一时刻). 基于此, 音素序列可以看作是由于隐状态转移产生的.
- 转移概率: 状态转移的概率分布
- Emission Probability: 由状态产生输出的概率分布 (GMM: 多个高斯分布, 即所以隐状态对应的分布)
上面的架构是 HMM-GMM (后面也有将 DNN 引入, 采用 DNN-HMM 架构)
Alignment: 如何将状态和 acoustic feature 对应起来 (状态数量和 feature 数量是不对应的, 通常来说 feature 数量是多余状态数量的)
CTC(Connectionist Temporal Classification)
decoder 是 liner 映射的 seq2seq
CTC 只有 encoder,选择单向的 encoder 便于做 on-line 语音识别。encoder 的结果直接经过线性层映射之后得到 token 预测。
模型训练:
- 每一个 acoustic feature 都必须对应一个 token(只知道 token 如何于 acoustic feature 对应呢?)
- 自行构造对应关系(并非严格对应),遍历得到所有的 acoustic feature 和 token 的对应关系,所有的都拿来训练
- 显然 acoustic features 的量是大于真实 token 的,所以需要在 label 插入 unknown 之类的 token
后处理:
- 输出的 token 经过后处理,去除重复 token 和未知 token(未知 token:1、可能是无法识别的;2、可能无有效语音)
- 往往需要后面再加一个模型才能得到较好的结果。
不足之处:分类器产生每个输出只考虑了当前的隐状态信息(很容易产生重复的 token)。
RNN transducer
RNA (Recurrent Neural Aligner)
输入和输出一样长(与 CTC 一样)
将 CTC 中的 linear classifier 输出采用 LSTM 这类结构。
RNN-T
输入一个 hidden state 可以输出多个 token
一个 hidden state 可以对应到多个 token 的输出,当输出为指定标志 token 之后才会采用下一时刻的 hidden state 作为输入。
- 训练的样本构造和 CTC 类似,文本如何和 acoustic features 对应上很难;
- 输出采用 LSTM 类似结构,上一时刻输出会影响到下一时刻的结果;
LAS (listen, attention and spell)
采用的是 seq2seq 架构(经典的 seq2seq 架构)
Listen:其中为 acoustic feature
encoder 可以采用 CNN 也可以采用 RNN,当然也可以 CNN + RNN 以及 self-attention layer
语音采样率很高,所以语音信息时间维度很长,对其进行时域的 down sample 是有必要的
Down Sample methods:
- CNN:Time-delay DNN(Dialated CNN)
- RNN:Pyramid RNN,Pooling over time
- self-attention:分段 self-attention
Attention:self-attention 利用特征向量 与 encoder 的输出 h 进行相似度计算,然后相似度通过 softmax 得到权值,得到的权值对 h 进行加权得到attention 结果
Spell:作为 decoder 的输入,是 decoder 的隐状态(RNN),,以及上一时刻的输出结果共同产生下一个隐状态,隐状态通过映射之后得到输出的分布。每次用当前时刻的隐状态去和 encoder 输出 h 计算 self-attention 得到
- 如何得到?任意的吗?
- Spell 输出为字符,字符组合形成单词
- 字符需要进行(束搜索)Beam Search:找到最大概率的输出结果
- 很像前缀树,训练得到字符之间变化的概率分布
- 直接贪婪搜索很难得到最大的概率的路径
- Beam Search 每次保留 B 个最大概率的路径,增大搜寻到最大概率路径的概率
- 训练时,利用 GT 替代前一时刻的预测输出到后面(teacher forcing,二阶段的目标检测也是如此;很多网络都是采用这种方式,防止之前的结果是错误的影响训练)
Location-aware attention:首先计算得到一个初始的 attention 向量 ,然后之后的 attention 将由 h,z 和共同计算得到(采用 addictive attention,只考虑t 时刻之前的值)
不足之处:得到所有输入之后才进行语音转文字(attention 计算时编码了所有时刻的信息)
Neural Transducer
每次输入一个 window 的 RNN-T(一个窗口得到多个输出)
对 hidden state h 进行分窗,对窗内的特征进行 attention (local-aware attention)产生输出,attention 输出作为翻译的输入。
MoChA
window 可以自由移动的 Neural Transducer
与 Neural Transducer 类似,但其希望引入动态窗口,借助一个网络来确定 window 的位置。