OpenAI Whisper 新一代语音技术(更新至v3-turbo)

介绍

更新(20241008):large-v3-turbo 来了,和之前 whisper 类似的模型架构,更少的 decoder 层(32 层减少到 4 层),更多的训练轮数(额外两个 epoch),在识别性能几乎不怎么降低的情况下(比 large-v3 略有小幅下降),实现了更快的识别速度(large-v2 的近 8 倍,接近 tiny 的速度)。

更新(20231107):Whisper-large-v3 也在首次 OpenAI 开发者大会之后,11 月 7 号 release 出来了,效果更加强劲。

Whisper 是 OpenAI 于 2022 年 12 月发布的语音处理系统。虽然论文名字是 Robust Speech Recognition via Large-Scale Weak Supervision,但不只是具有语音识别能力,还具备语音活性检测(VAD)、声纹识别、语音翻译(其他语种语音到英语的翻译)等能力。

Whisper 相关资源:

Whisper 是端到端的语音系统,相比于之前的端到端语音识别,其特点主要是:

  • 多语种:英语为主,支持 99 种语言,包括中文。
  • 多任务:语音识别为主,支持 VAD、语种识别、说话人日志、语音翻译、对齐等。
  • 数据量:68 万小时语音数据用于训练,从公开数据集或者网络上获取的多种语言语音数据,远超之前语音识别几百、几千、最多 1 万小时的数据量。
  • 鲁棒性:主要还是源于海量的训练数据,并在语音数据上进行了常见的增强操作,例如变速、加噪、谱增强等。
  • 多模型:提供了从 tiny 到 large,从小到大的五种规格模型,适合不同场景。

whisper 具备多个模型规格

whisper-large-v2

下图是在 Fleurs 数据集上的词错误率 WER(越低越好),可以看到 whisper-large-v2 在中文上的表现中规中矩。

Fleurs 数据集上各语言的 WER(%)

Whisper-large-v3

whisper-large-v3 采用了更多的数据,达到了惊人的 500 万小时(一年 = 8765.81277 小时),其中 100 万小时是弱标签,400 万小时是 v2 生成的。

whisper-large-v3 相比 whisper-large-v2 在各个语言上有 10%-20% 的效果提升。

large-v3 vs large-v2

Whisper-large-v3-turbo

与 whisper-large-v3 类似的模型架构,采用了更少的 decoder 层(32 层减少到 4 层),更多的训练轮数(额外两个 epoch),在识别性能几乎不怎么降低的情况下(比 large-v3 小幅下降),实现了更快的识别速度(large 的近 8 倍,接近 tiny 的速度)。

large-v3 vs large-v2 vs large-v3-turbo

识别效果对比

本文作者在中文 benchmark 上对比了 whisper-large-v2 和 whisper-large-v3 以及 whisper-large-v3-turbo 的效果(CER(%),字错误率,越小越好):

Model aishell_1_test aishell_2_test wenetspeech net wenetspeech meeting hkust dev
whisper-large-v2 8.818 6.183 12.343 26.413 31.917
whisper-large-v3 8.085 5.475 11.72 20.15 28.597
whisper-large-v3-turbo 8.639 6.014 13.507 20.313 37.324

可以看到,whisper-large-v3 在中文上相比 whisper-large-v2 有小幅提升,特别是在难度高、场景复杂的 wenetspeech meeting 上有 23% 的相对提升。whisper-large-v3-turbo 在速度提升约 8 倍的情况下,相比 whisper-large-v3 识别效果只是小幅下降,相比 whisper-large-v2 识别效果整体小幅提升。


模型

模型采用了经典的基于 Transformer 的 Encoder-Decoder 的结构。模型输入的特征是 80 维 Fbank 特征,输出的 label 是文本 ID,在文本 ID 之前是语种 ID、任务类型、时间戳三个特殊标记。

核心框架:Encoder-Decoder Transformer

具体工作流程,可以参考下图。图中最下面 “Multitask training format” 展示了 label 的组成逻辑:SOT、Language Tag/No Speech、Transcribe/Translate、text tokens w/o timestamps。

系统框图:多任务、多语种流程


数据

数据来源

数据主要来源于网络,构建 audio 与 text 成对数据。

68 万小时组成比例可以看下图。占比最大的是英文语音识别数据,占比 65%。另外,18% 的数据是 X 到英文的语音翻译数据。17% 是除英文外的其他语言的语音识别数据,这里面汉语占比最高。

Whisper 数据分布

数据处理

数据过滤

  • 通过启发式方法,去掉其中 ASR 产生的数据。例如,纯大写、纯小写、没有标点等,去掉这类数据。
  • 语种是否匹配,语音和文本是否属于同一语种。基于语音语种检测模型来实现。
  • 数据去重,转写文本级别的去重。

数据格式化

  • 30 秒长度:最长 30 秒长度。所以在使用时,最好不要超过 30 秒,以获得最好的效果。
  • 语音、非语音均保留:非语音数据可以用来训练 VAD 任务。
  • 重采样至 16KHz:语音数据涉及到采样率问题,实际应用中 8KHz、16KHz 最为常见。Whisper 将所有数据均重采样到 16KHz,不再对不同采样率分别建模,一个模型即可完成,简化复杂度,模型性能也会有一定提升。

进阶话题

模型微调

Hugging Face 有一篇关于 whisper 微调的 blog,可以参考:Fine-Tune Whisper For Multilingual ASR with 🤗 Transformers

本文作者也基于 Whisper-Finetune 增加了全参数量微调的能力:

  • 基于 LORA 的模型微调:finetune.py
  • 基于全参数量的模型微调:finetune_all.py

在中文数据上微调之后,一般都会有一定的提升,特别是对应业务数据,提升会更大些。微调之后,通用能力可能有一定的损失。

Belle-whisper-large-v2-zh

本文作者基于中文开源数据(AISHELL1、AISHELL2、WENETSPEECH、HKUST),对 whisper-large-v2 进行了微调,得到中文识别提升的 Belle-whisper-large-v2-zh,在中文 benchmark 上有 30%-70% 的相对提升。

模型已经开源到 Hugging Face,欢迎下载:BELLE-2/Belle-whisper-large-v2-zh

Belle-whisper-large-v2-zh 模型配置

Belle-whisper-large-v2-zh CER(%)

Belle-whisper-large-v3-zh

此外,本文作者基于中文开源数据(AISHELL1、AISHELL2、WENETSPEECH、HKUST),对 whisper-large-v3 进行了微调,得到中文识别提升的 Belle-whisper-large-v3-zh,在中文 benchmark 上有 24%-65% 的相对提升。

模型已经开源到 Hugging Face,欢迎下载:BELLE-2/Belle-whisper-large-v3-zh

Belle-whisper-large-v3-zh CER(%)

Belle-whisper-large-v3-zh-punct

此外,本文作者利用 CT-Transformer 标点模型对中文开源数据(AISHELL1、AISHELL2、WENETSPEECH、HKUST)加标点,基于 Belle-whisper-large-v3-zh 进行了 LoRA 微调,得到标点能力提升的 Belle-whisper-large-v3-zh-punct,在复杂场景下(wenetspeech meeting)上有进一步提升。

模型已经开源到 Hugging Face,欢迎下载:BELLE-2/Belle-whisper-large-v3-zh-punct

Belle-whisper-large-v3-zh-punct CER(%)

Belle-whisper-large-v3-turbo-zh

whisper-large-v3-turbo 只是在识别精度轻微下降的同时,大幅提升了识别速度(7~8 倍提升),有很强的应用价值。本文作者基于中文开源数据(AISHELL1、AISHELL2、WENETSPEECH、HKUST),对 whisper-large-v3-turbo 进行了微调,得到中文识别提升的 Belle-whisper-large-v3-turbo-zh,在中文 benchmark 上有 24%-64% 的相对提升。

模型已经开源到 Hugging Face,欢迎下载:BELLE-2/Belle-whisper-large-v3-turbo-zh

Belle-whisper-large-v3-turbo-zh 效果对比

小结

  • 基于 whisper-large-v2 增强中文语音识别能力,实现了 30%~70% 的相对提升,提升非常明显。
  • 基于 whisper-large-v3 增强中文语音识别能力,实现了 24%~65% 的相对提升,提升非常明显。
  • 基于 whisper-large-v3-turbo 增强中文语音识别能力,实现了 24%~64% 的相对提升,提升非常明显,识别速度的大幅提升(7~8 倍)将大幅降低应用成本。
  • Belle-whisper-large-v2-zh 和 Belle-whisper-large-v3-zh 整体精度差别不大,但是 Belle-whisper-large-v3 在复杂场景的识别精度有明显提升(wenetspeech meeting 上的 CER 相对提升 60%)。
  • Belle-whisper-large-v3-zh-punct 具备标点符号能力,同时在复杂场景下(wenetspeech meeting)达到 SOTA。

模型蒸馏

Hugging Face 推出了蒸馏版的 whisper — distil-whisper,模型大小是原来的 51%,速度是原来的 5-6 倍。

需要注意的是,蒸馏工作主要是针对英文任务做的,所以不支持中文,需要使用中文数据做微调才可以。

蒸馏模型与原始模型对比

本文作者基于中文开源数据(AISHELL1、AISHELL2、WENETSPEECH、HKUST),对 distil-whisper 进行了中文识别能力上的增强,得到具备中文识别能力的 Belle-distilwhisper-large-v2-zh,在中文 benchmark 上有 -3%~35% 的相对提升。

模型已经开源到 Hugging Face,欢迎下载:BELLE-2/Belle-distilwhisper-large-v2-zh

Belle-distilwhisper-large-v2-zh 模型配置

Belle-distilwhisper-large-v2-zh CER(%)

小结

  • 原始 distil-whisper-large-v2 由于只在英文数据上对 whisper-large-v2 做蒸馏,不具备中文语音识别能力。
  • 基于 distil-whisper-large-v2 做中文语音识别能力的构建,可以实现超过 whisper-large-v2 的效果,同时速度有 5~6 倍的提升。

任务扩展

笔者尝试将 whisper 原来的两个任务(transcribe、translate)扩展到三个任务(transcribe、translate、emotion),增加一个语音情绪识别的任务。经过简单尝试,发现 whisper 不仅可以扩展任务,而且新任务的效果还非常好。后面有机会,单独把相关做法总结下。

能力激发

我们知道 whisper 具备 X-to-English 的语音翻译能力,就是其他语言的语音可以直接转成英文文本。但是我在实际实验中发现(也可以当做一次失误),把英文语音定义为 Chinese 的 transcribe 任务,whisper 竟然可以转写出中文来。这也说明,X-to-Y 的语音翻译能力还是有可能的,也值得去继续探索——一个模型搞定所有的语音翻译,技术上很牛叉,使用价值也很大。


总结

  • Whisper 的推出对语音相关研究具有标志性的意义,将原来分散的任务统一起来,并且提升了任务的效果。
  • Whisper 将语音任务大一统,同时具备很强的鲁棒性,不用像之前那样需要考虑很多类似场景匹配、噪音、口音等问题。直接使用这样的一个模型、或者只需要简单微调即可具有很好的效果。
  • Whisper 将语音研究向前推进了一步,研究者们可以在此基础上研究更复杂、更具有挑战性的课题。

OpenAI Whisper 新一代语音技术(更新至v3-turbo)
http://zhaoshuaijiang.com/2023/10/20/asr-whisper/
作者
shuaijiang
发布于
2023年10月20日
许可协议