whisper是一个支持多语种(高达99种)和多任务的音频大模型,相对于k2(zipformer)、funasr(paraformer)等流行的E2E单任务语音识别模型,whisper最大的两个特点是“大而全”:其中大是指68万小时的大数据量和1.5B大参数量模型两者来保证识别效果,全是指一个模型同时支持语音识别、语音翻译、语种检测和语音活动检测等多任务的通用音频模型。

本文,第一部分深入解读whisper论文的引言、数据集、方法、结论和总结;第二部分简单介绍,基于whisper做微调和推理的框架,以方便研究者和工程师研读和复现论文。


引言
论文首先肯定了无监督学习的技术价值,由于不需要昂贵的标签,可以轻而易举地将训练数据规模缩放到1000万小时的量级,并在基线数据集如librispeech上达到了最新技术水平;然后,也指出无监督学习的明显缺点是“缺少将音频embedding映射到文本空间的高质量解码器“,因此实际使用时候需要针对特定任务进行复杂的微调且容易过拟合;做足了铺垫后(拆解完现有技术方案优劣之后),就凸显了whisper的优势:通过使用相对容易收集的弱标签(论文特指标注质量不高的数据)并结合精心设计的清洗策略将有监督数据规模扩大到68万小时(现有学术上万小时规模的有监督数据,whisper在量级进步明显)并且结合多任务多语种训练,在多个评测集和zero-shot设定下取得了很好的效果,并且英语识别效果可以媲美优秀商用方案。


数据集

论文的数据收集来源于爬取了网络上具有音频和文本对的数据,然后进行清洗和加工。

精心设计的清洗策略和步骤
  1. 从网络爬取语音、文本对的数据(标注质量不高的弱标签数据);

  2. 通过启发式算法(机器生成数据格式较固定,例如全大写、全小写等)过滤机器生成的数据;

  3. 校验音频和文本的语种标签(语种分类模型使用VoxLingua107数据集训练得到);

  4. 所有音频统一对齐并分割成30秒;

  5. 使用初始模型对训练数据子集的错误率排序,并排查、过滤错误率较高子集,以保证标注质量;

  6. 基于标注文本进行模糊去重。

清洗后得到的68万小时高质量的有监督数据,具体数据分布如下

  1. 英文语音识别数据43.8万,占比65%

  2. 多语种语音识别数据11.7万,占比17%

  3. 目标语种为英文的翻译数据12.5万,占比18%


模型和方法

模型

为了证明大规模高质量有监督数据的有效性,论文直接使用标准的transfomer结构(包含提取音频隐状态的encoder和进行文本标签自回归学习的decoder两个主体结构)进行训练。计算方式包含几个主要的流程:首先,以25ms窗长、10ms步幅的参数提取fbank特征;然后,fbank特征过两个卷积层(为了降低特征复杂度第二层卷积使用步幅为2进行2倍降采样)并加入位置编码;接着,再过标准的transformer-encoder进行self-attention计算得到音频的encoder-hidden_state;最后,关键步骤是decoder的自回归学习方式:根据当前标签预测下一个标签过程同时条件于encoder-hidden_state,具体实现方式是encoder-hidden_state(音频隐状态)和decoder需要预测的token(文本标注)之间计算两个序列的cross-attention,最终得到logits并和label输入到交叉熵损失函数计算loss。


多任务格式设计

论文最大贡献是使用prompt技术解决多任务联合训练过程不同任务数据格式的兼容性,实现方式是在一个统一设计prompt的格式下通过special-token来指定训练数据实例所属的特定语种和任务。prompt的多任务格式如下图,为了简洁性我们忽略SOT之前的previous-text-tokens内容和绿色可选的时间戳,然后解析一下prompt格式设计协议。
  1. 第一种任务类型是语音活动检测:对应图中最后一条横向箭头所指的数据格式,数据格式包含代表任务起始的SOT、没有语音的NO-SPEECH和任务结束的EOT;
  2. 第二种任务类型是语音识别:包含代表任务起始的SOT、语种LANGUAGE-TAG、任务实例为识别的TRANSCRIBE、实际标签的text-tokens(蓝色部分)和任务结束的EOT;
  3. 第三种任务类型是语音翻译:包含代表起始的SOT、语种LANGUAGE-TAG、任务实例为翻译TRANSLATE、实际标签的text-tokens(蓝色部分)和任务结束的EOT。
  4. 第四种任务类型是语种检测:相对于前三种任务语种预测有些特殊,因为训练阶段是语种检测是作为语音识别和翻译的子任务进行训练,但推理时候是可以独立去预测语种分类标签的。

备注:prompt作为一种通用技术,可以灵活地添加和支持更多的音频任务,例如Qwen-audio就参考whisper-pompt格式并扩展支持更多的音频任务。


关键实验结论

单语种识别Whisper的英文识别鲁棒性非常好,具体效果如下图,紫色部分代表whisper、蓝色代表其它模型、纵坐标是几个英文测试集,可以看到:相比其它模型,whisper在不同英文测试集上效果都相对更好更稳定。


多语种识别多语种识别能力是音频大模型的核心价值之一,whisper在多语种测试集MLS和VoxPopuli进行评估,其中MLS取得了最好的结果;但在VoxPopuli上不理想,作者解释说其它模型可能用了同分布的训练数据(个人分析其它可能原因是whisper模型是占比高达65%的英文数据主导,在模型容量有限的情况下相对容易拟合英文或者和英文语系相近的语种,而多语种占比较少所以多语种泛化能力受限从而影响多语种的整体效果),具体效果如下图


语音翻译在语音翻译CoVoST2 测试集和zero-shot设定下,Whisper鲁棒性也很好,如果如下图。遗憾的是,由于whisper只有一个代表源语种的标签,所以它只能进行任意语种到英语的翻译(多到一);作为对比,最新提出的qwen-audio模型的prompt格式同时使用了源和目标两个语种标签,因此可以做任意语种之间互译。


语种识别如果只考虑Fleurs 多语种测试集和whisper训练数据有overlap的82个语种,则whisper语种分类准确率为80.3%,作为大模型的一个子功能这个语种分类准确率算中规中矩。
多语种多任务识别上文提到“whisper最大的贡献是prompt技术应用到多任务多语种学习中”,在论文中还有一个有意思的发现是“当模型规模scale到一定量级,多任务多语言模型好于单任务单语种模型”,这个其实也佐证了音频大模型的多任务学习的随着参数scale“能力涌现”现象,为大参数模型作为通用音频模型提供了很好的思路。具体实验结论如下图



总结和未来展望

总 结

大规模高质量有监督数据带来很好的泛化性能论文证实了在68万小时高质量数据加持下,即使直接使用标准transformer这种没有经过专门优化的模型,也不需要复杂的特定任务微调流程,whisper就可以在多个任务测试集上取得很好泛化能力并且它的英文识别效果可以媲美优秀的商用方案。

多任务多语种学习论文最大贡献在于使用prompt技术解决多任务联合训练过程不同任务数据格式的兼容性,实现方式是在一个统一设计的prompt格式下通过special-token来指定训练数据实例所属的特定语种和任务。

未来展望

  • 提高解码策略探索解码技巧来改善语音大模型幻觉问题

  • 增加低资源语种的数据低资源语种数据的扩充预估可以大幅改善多语种效果

  • 研究模型的鲁棒性引入CTC损失函数或者研究和LLM的结合

whisper论文链接 :http://arxiv.org/pdf/2212.04356