针对 Transoformer 模型自回归生成文字的低计算效率的缺陷,学术界提出了非自回归模型来并行地输出目标文字(如图1所示)。根据生成目标文字时的迭代轮数,非自回归模型分为:多轮迭代式与单轮非自回归模型。

图1 自回归模型与非自回归模型生成文字过程 [1]
相比于多轮迭代模型,单轮非自回归模型有着更加广阔的应用前景,可以通过单次解码获取全部目标文字,计算复杂度与目标文字个数无关,进而极大的提高了解码效率。然而,由于条件独立假设,单轮非自回归模型识别效果与自回归模型有着巨大的差距,特别是在工业大数据上。
对于单轮非自回归模型,现有工作往往聚焦于如何更加准确的预测目标文字个数,如较为典型的 Mask CTC[3],采用 CTC 预测输出文字个数,尽管如此,考虑到现实应用中,语速、口音、静音以及噪声等因素的影响,如何准确的预测目标文字个数以及抽取目标文字对应的声学隐变量仍然是一个比较大的挑战。
通过对比自回归模型与单轮非自回归模型在工业大数据上的错误类型(如图2所示,AR 与 vanilla NAR),发现相比于自回归模型,非自回归模型在预测目标文字个数(插入错误+删除错误)方面差距较小,但是替换错误显著的增加,我们认为这是由于单轮非自回归模型中条件独立假设导致的语义信息丢失。

图2 在2万小时工业数据上自回归与非自回归模型错误类型统计
为了解决上述问题,我们设计了一种具有高识别率与计算效率的单轮非自回归模型Paraformer。
针对第一个问题,采用一个预测器(Predictor)来预测文字个数并通过 Continuous integrate-and-fire (CIF) [4]机制来抽取文字对应的声学隐变量。
针对第二个问题,受启发于机器翻译领域中的 Glancing language model(GLM)[5],设计了一个基于 GLM 的 Sampler 模块来增强模型对上下文语义的建模。除此之外,我们还设计了一种生成负样本策略来引入 MWER[6] 区分性训练。
具体模型结构如图3所示,由 Encoder、Predictor、Sampler、Decoder 与 Loss function 几部分组成。Encoder 与自回归模型保持一致,可以为 Self-attention、SAN-M 或者 Conformer 结构。Predictor 为2层 DNN 模型,预测目标文字个数以及抽取目标文字对应的声学向量。Sampler 为无可学习参数模块,依据输入的声学向量和目标向量,生产含有语义的特征向量。Decoder 结构与自回归模型类似,为双向建模(自回归为单向建模)。Loss function 部分,除了交叉熵(CE)与 MWER 区分性优化目标,还包括了 Predictor 优化目标 MAE。

图3 Paraformer模型结构图
核心点主要有:
- Predictor 模块:基于 CIF 的 Predictor 来预测语音中目标文字个数以及抽取目标文字对应的声学特征向量
- Sampler:通过采样,将声学特征向量与目标文字向量变换成含有语义信息的特征向量,配合双向的 Decoder 来增强模型对于上下文的建模能力
- 基于负样本采样的 MWER 训练准则
Predictor模块
非自回归模型核心问题是如何预测模型中 Decoder 需要输出的文字数目,以及如何为 Decoder 提供输入特征向量。之前关于非自回归的工作主要是采用 CTC 来进行预测字符数目以及输入向量。Paraformer 里我们采用基于2层 DNN 的 Predictor 网络。输出为0~1之间的浮点数,输出值累加来预测目标文字个数,通过 CIF 机制抽取声学特征向量(图4为CIF过程示例)。训练过程中采用 MAE 来监督 Predictor 模块学习。
图4 CIF过程示例
Sampler模块
非自回归模型的另一个核心问题是如何增强模型对上下文建模能力,现有的通用的单轮自回归模型 (vanilla-NAR) 为了高效计算效率,模型中 decoder 去除了显式的 Dependency 建模,从而在处理同音替换错误的能力会弱很多。从图2也可以看出 vanilla-NAR 相比于自回归(AR)的端到端语音识别系统在替换错误(substitution)上会明显增多。针对这个问题,Paraformer 借鉴来机器翻译里 GLM 工作,通过 Samper 模块来增强 Decoder 对于预测目标文字内在的 Dependency 的建模。Sampler 模块在解码时不工作,因此不会影响模型推理效率。数学模型如下:

在学术公开数据集 AISHELL-1 与 AISHELL-2,以及2万小时工业大数据上验证了模型效果。在 AISHELL-1 与 AISHELL-2 上分别取得了 5.2% 与 6.19% 的 CER.
附录:
Paraformer模型
| 模型名字 | 备注 |
|---|---|
| Paraformer-large | 输入wav文件持续时间不超过20秒 |
| Paraformer-large长音频版本 | 能够处理任意长度的输入wav文件 |
| Paraformer-large-en长音频版本 | 能够处理任意长度的输入wav文件 |
| Paraformer-large-Spk | 在长音频功能的基础上添加说话人识别功能 |
| Paraformer-large热词 | 基于激励增强的热词定制支持,可以提高热词的召回率和准确率,输入wav文件持续时间不超过20秒 |
| Paraformer | 输入wav文件持续时间不超过20秒 |
| Paraformer实时 | 能够处理流式输入 |
| Paraformer-large实时 | 能够处理流式输入 |
| Paraformer-tiny | 轻量级Paraformer模型,支持普通话命令词识别 |
| Paraformer-aishell | 学术模型 |
| ParaformerBert-aishell | 学术模型 |
| Paraformer-aishell2 | 学术模型 |
| ParaformerBert-aishell2 | 学术模型 |