作者:忧郁的白衬衫

20121.07.06,GigaSpeech 重磅发布 GigaSpeech:10000小时多领域英语开源数据集发布。GigaSpeech 拥有10000小时的高质量标注音频数据和33000小时的总音频,是有史以来标注数据量最大、覆盖场景和主题最多的开源语音识别数据集。感谢果果、家宇和卫强老师的奠基性的工作,相信 GigaSpeech 一定能进一步推动语音识别技术在学术界和工业界的发展。


WeNet 在早期就和 GigaSpeech 进行合作并做了相关的实验,在 GigaSpeech 正式发布之后,本文也正式宣布 WeNet 支持 GigaSpeech 数据集,开放该数据集的recipe,并开放基于该数据的预训练模型。


余文将从 GigaSpeech 排行榜,WeNet GigaSpeech 流程以及进一步的工作三个方面介绍 WeNet 在 GigaSpeech 上的一些工作和思考。



GigaSpeech 排行榜

除了 WeNet 之外,目前 Athena、Espnet、Kaldi、Pika 也支持了 GigaSpeech, 性能如下表所示:



可以看到,WeNet 和 Espnet 结果基本相同,并且大幅度领先其他语音识别工具。


WeNet 详细结果和预训练模型请参考:

https://github.com/wenet-e2e/wenet/tree/main/examples/gigaspeech/s0


但与 Espnet 不同,WeNet 设计核心思想为 “Production First and Production Ready”,直面语音识别产品和应用,并提供云侧(x86)和端侧(android)的 runtime,为从业者、开发者和爱好者提供了一站式的解决方案。数据是 “Production” 最重要的支撑,借助 GigaSpeech 1万小时的规模数据,加以 WeNet 提供的预训练模型和 runtime,用户和企业可以零成本的快速构建一个工业级的英文语音识别服务和能力。WeNet 也直接拥有了提供 “Production Model” 的能力,此时 WeNet + GigaSpeech = Production System + Production Model。



WeNet Gigaspeech Recipe

数据准备 (stage 0)

WeNet 支持 Gigaspeech 不同的数据子集,可以根据自己的需求进行选择,包括XS、S、M、L以及全量有标注的10000小时XL。通过 local/gigaspeech_data_prep.sh 脚本进行数据的准备工作,该脚本可以将 GigaSpeech 数据集整理成 WeNet 支持的目录格式。


数据处理 (stage 1)

GigaSpeech 原始音频数据是一些完整的音频,标注使用了 segment 的方式记录。为了节省磁盘空间,WeNet 不再对完整的 wav 进行切分,而是直接使用 torchaudio 支持的 offset API IO 方式。为此,WeNet 需要将wav.scp 与 segments 文件进行合并,将segments 中记录的各音频片段的起始位置(单位:秒)加入到wav.scp中来(通过“,”隔开),前后对比如下所示:

  • AUD0000000003_S0000001 /GigaSpeech/AUD0000000003.opus

  • AUD0000000003_S0000001 /GigaSpeech/AUD0000000003.opus,31.54,37.3


此外 WeNet 拿到的是原始文件是48k采样率,为此在数据处理中也将直接使用torchaudio 进行在线的降采样操作,将其采样到16k。


字典以及模型输入准备 (stage 2 & stage3)

这部分的过程与 librispeech recipe 完全一致。


模型 & 网络结构 (stage4)

模型上 WeNet 使用了 U2++ 模型如下图所示:

主要的网络结构参数如下:



考虑到这是 WeNet 第一次做 GigaSpeech 任务,因此为了探测模型在数据集上识别结果的上限,暂时没有使用 dynamic chunk training 的方式(unified 支持流式的模型已经在路上),只保留了 U2++ 中的双向 decoder。主要的网络结构参数如下:


解码(stage 5)

解码部分仍然使用了 attention rescoring 的解码方式。评测时WeNet 也使用了 GigaSpeech 中提供的后处理脚本:local/gigaspeech_scoring.py 进行后处理,对识别结果进行了语气词平滑等操作。



进一步的工作

关于未来,基于 GigaSpeech,基于 WeNet,还有很多的工作要做,还有很长的路要走。我们暂时想到的有:

  1. 目前 WeNet 开放的 GigaSpeech 的模型还是一个非流式的识别模型,仅限非流式场景上使用,未来会进一步开放 Unified streaming and non-streaming的模型,流式和非流式场景均可以使用。

  2. 探索 GigaSpeech 中其余的 23000小时无监督无标注的数据的使用方式,进一步有效利用该数据集,并提升测试集识别率。


此外,众人拾柴火焰高,相信社区中的同学会有更多更专业更精彩的想法,欢迎大家各种形式的合作与贡献。