0. 前言
Conformer是Google在2020年提出的语音识别模型,基于Transformer改进而来,主要的改进点在于Transformer在提取长序列依赖的时候更有效,而卷积则擅长提取局部特征,因此将卷积应用于Transformer的Encoder层,同时提升模型在长期序列和局部特征上的效果,实际证明,该方法确实有效,在当时的LibriSpeech测试集上取得了最好的效果。
Wenet是出门问问语音团队联合西工大语音实验室开源的一款面向工业落地应用的语音识别工具包,该工具用一套简洁的方案提供了语音识别从训练到部署的一条龙服务,Wenet目前在github上获得了上千个stars,其易用性深受用户好评。
本文将首先分析Conformer的原始论文,然后基于Wenet框架分析工程代码实现。
1. Conformer模型
Conformer模型在输入的时候,首先通过一个卷积网络进行下采样,然后接上一系列的conformer模块,基本结构如下:
Conformer encoder model architecture
其中,conformer模块包含以下几个部分:Feedforward module,Multi-head self attention Module和Convolution Module共三个模块组成,注意其中两个Feedforward输出都乘以了1/2。