- 人工智能
- 语音
- 音频
- 基础模型
【免费下载链接】whisper
Robust Speech Recognition via Large-Scale Weak Supervision
这篇技术指南以仓库中的 data/README.md 为骨架,系统讲解 Whisper 论文Robust Speech Recognition via Large-Scale Weak Supervision在评测环节所用的全部数据集,以及如何获取、切分与预处理它们以复现实验。读完本文,你将掌握短片段、长片段与多语言三类评测数据的完整构成、各数据集的来源与预处理要点,并能够结合仓库内 notebooks/LibriSpeech.ipynb 与 notebooks/Multilingual_ASR.ipynb 端到端跑通「加载数据 → 模型推理 → 文本归一化 → 计算 WER/BLEU」的评测流水线。
一、data 目录在仓库中的角色
Whisper 仓库除了核心的模型代码(whisper/ 包)与命令行工具外,还附带了一份论文补充材料——data目录。data/README.md 开篇即说明其定位:
This directory supplements the paper with more details on how we prepared the data for evaluation, to help replicate our experiments.
也就是说,这份文档不是功能手册,而是评测数据准备规范:它逐条列出论文中每项基准(benchmark)使用的语料来源、采用的分片(split)、以及关键的预处理步骤,目标读者是希望复现论文 WER/CER/BLEU 结果的研究者与工程师。
整个评测体系按三种形态组织,与 Whisper 模型"既能处理 30 秒短片段、也能处理任意长度音频"的能力相对应:
| 类别 | 数据集 | 主要用途 |
|---|---|---|
| 短片段纯英语(Short-form English-only) | LibriSpeech、TED-LIUM 3、Common Voice 5.1、Artie、CallHome & Switchboard、WSJ、CORAAL、CHiME-6、AMI-IHM/AMI-SDM1 | 逐句(utterance 级)识别准确率评测 |
| 长片段纯英语(Long-form English-only) | TED-LIUM 3(长)、Meanwhile、Rev16、Kincaid46、Earnings-21/22、CORAAL(长) | 整段演讲/播客级连续转写评测 |
| 多语言(Multilingual) | Multilingual LibriSpeech、Fleurs、VoxPopuli、Common Voice 9、CoVOST 2 | 跨语言 ASR 与「语音→英语」翻译评测 |
二、短片段纯英语评测数据集
短片段数据集对应 Whisper 的逐窗口解码模式:每个音频片段被 pad/trim 到 30 秒后独立转写,评测粒度为单条 utterance。原始文档为每一份语料都标注了精确的版本与分片,复现时务必按此选取。
2.1 LibriSpeech
采用 LibriSpeech ASR 语料库(OpenSLR 发布)中的test-clean与test-other两个官方测试分片。test-clean由发音清晰的朗读者录制,test-other则由口音、噪声条件更复杂的朗读者录制,二者共同覆盖了"清晰"与"困难"两档评测难度。
仓库中的 notebooks/LibriSpeech.ipynb 就是围绕test-clean写成的完整复现示例(详见第六节),其中通过torchaudio.datasets.LIBRISPEECH(url="test-clean", download=True)自动下载并加载分片,并断言采样率为 16000 Hz。
2.2 TED-LIUM 3
采用 TED-LIUM Release 3 的test 分片,并使用发行包内自带的分段人工转写文本(segmented manual transcripts)作为标注。注意区分:同一语料在长片段评测中会被重新切割(见 3.1 节),两处用途不同、数据形态也不同。
2.3 Common Voice 5.1
从 Mozilla Common Voice 官方站点下载Common Voice Corpus 5.1 的英文子集。Common Voice 是众包录音语料,说话人、口音与录制环境高度多样,适合评测模型的鲁棒性。
2.4 Artie
Artie bias corpus,用于评测偏置(bias)相关表现,它是 Common Voice 数据集的一个子集。之所以单独列出,是因为论文中需要针对特定群体/方言的口音表现做专门分析,而不是混在 Common Voice 全集中笼统计分。
2.5 CallHome & Switchboard
这是论文评测中唯一明确给出脚本化预处理的语料,完整命令如下。两份语料分别对应 LDC2002S09(CallHome 英文电话录音)与 LDC2002T43(Switchboard),预处理遵循 Kaldi 项目 fisher_swbd 示例中的eval2000_data_prep.sh脚本,产出wav.scp清单文件。将清单中的命令逐条展开为真实 WAV 文件的 bash 方法为:
mkdir -p wav while read name cmd; do echo $name echo ${cmd/\|/} wav/$name.wav | bash done < wav.scp这段脚本从 Kaldi 风格的两列wav.scp(第一列是说话人/文件 ID,第二列是管道命令)中读取每一行,把管道命令中的|去掉后拼接输出路径并交给 bash 执行,从而批量落盘为可被 Whisper 直接读取的 WAV 文件。这类电话语音语料是评测远场/信道退化场景的重要素材。
2.6 WSJ
使用华尔街日报语料 LDC93S6B 与 LDC94S13B,预处理遵循 Kaldi 的egs/wsj/s5recipe。WSJ 是语音识别领域历史最悠久的基准之一,其语音为朗读式新闻文本,词汇覆盖广,是检验模型在规范口语上表现的标准试金石。
2.7 CORAAL
使用CORAAL(v. 2021.07)的 231 段访谈,并采用斯坦福 FairSpeech 项目提供的切分结果(CORAAL transcripts)作为 utterance 边界与标注。CORAAL 聚焦非洲裔美国人英语(AAVE),用于评测模型在方言多样性上的表现;短片段评测用切分后的片段,长片段评测则用完整访谈(见 3.6 节)。
2.8 CHiME-6
CHiME-6 并非独立语料,而是由 CHiME-5 数据集加工而来:下载 CHiME-5 后,按 Kaldiegs/chime6/s5_track1recipe 的stage 0执行同步修正,得到修正同步问题的 CHiME-6 数据,再使用其中的双耳录音(文件名形如*_P??.wav)及对应转写。CHiME 系列以嘈杂、多说话人家庭聚会场景著称,是评测噪声鲁棒性与说话人重叠处理能力的关键基准。
2.9 AMI-IHM、AMI-SDM1
AMI 语料按 Kaldiegs/ami/s5brecipe 的stage 0 与 stage 2预处理,产出两种评测形态:IHM(Individual Headset Microphone,各说话人独立佩戴耳机麦克风)与SDM1(Single Distant Microphone 1,单路远场麦克风)。同一会议内容、两种拾音条件,正好用来对比模型在近场与远场输入下的性能差距。
三、长片段纯英语评测数据集
长片段数据集对应 Whisper 的滑动窗口连续转写模式——transcribe()内部会按 30 秒窗口滑动处理整段音频(详见 whisper/transcribe.py)。这些基准的标注形态也与短片段不同:不是逐句标注,而是整段演讲/节目的连续文本。
3.1 TED-LIUM 3(长片段版)
为了从 TED-LIUM3 构造长片段转写数据集,作者对每个 talk 的音频做了切片:取该 talk 第一个标注分段的起点到最后一个标注分段的终点,中间的音频整体作为一条长音频,标注则是所有分段文本的拼接。test 分片中 11 个 TED talk 的切割时间戳如下表:
| Filename | Begin time (s) | End time (s) |
|---|---|---|
| DanBarber_2010 | 16.09 | 1116.24 |
| JaneMcGonigal_2010 | 15.476 | 1187.61 |
| BillGates_2010 | 15.861 | 1656.94 |
| TomWujec_2010U | 16.26 | 402.17 |
| GaryFlake_2010 | 16.06 | 367.14 |
| EricMead_2009P | 18.434 | 536.44 |
| MichaelSpecter_2010 | 16.11 | 979.312 |
| DanielKahneman_2010 | 15.8 | 1199.44 |
| AimeeMullins_2009P | 17.82 | 1296.59 |
| JamesCameron_2010 | 16.75 | 1010.65 |
| RobertGupta_2010U | 16.8 | 387.03 |
注意各 talk 长度差异巨大(最短约 6 分钟,最长约 27 分钟),且 end 时间戳并不等于文件全长——这正是"切除首尾无语音区段"策略的直接体现。复现时只要按此表ffmpeg -ss begin -to end切出音频、拼接分段文本即可还原该基准。
3.2 Meanwhile
Meanwhile 数据集包含64 个片段,来自脱口秀《The Late Show with Stephen Colbert》的 "Meanwhile" 环节。每个片段的 YouTube 视频 ID、起止时间戳与标注都存放在 data/meanwhile.json 中;标注取自各视频的**闭路字幕(closed-caption)**数据,并经人工逐条校对修正。
从文件内容可以看到其 JSON 结构:外层以 YouTube 视频 ID 为键,内部含begin、end与text三个字段。例如:
{ "1YOmY-Vjy-o": { "begin": "1:04.0", "end": "2:11.0", "text": "FOLKS, IF YOU WATCH THE SHOW,\nYOU KNOW I SPEND A LOT OF TIME\nRIGHT OVER THERE, ...\nMEANWHILE!\n" }, ... }时间戳采用M:SS.s格式,转写文本为全大写,且保留了字幕原有的换行分段——这意味着评测前必须经过文本归一化(如 whisper/normalizers/english.py 的EnglishTextNormalizer)才能与模型输出公平对齐。该数据集的作用是评测带观众笑声、主持人插科打诨等娱乐节目场景的长片段转写,是检验模型抗环境干扰与自我纠正能力的好素材。
3.3 Rev16
Rev16 取自 Rev.AI 的播客转写基准(30 个播客剧集)。作者在检查中发现其中多个剧集存在音频与标注大面积不匹配的问题,主要集中在节目开场介绍赞助商的片段;于是筛选出 16 个无此类错误的剧集,其文件编号为:
3 4 9 10 11 14 17 18 20 21 23 24 26 27 29 32这个例子说明:公开基准并非拿来即用,评测数据准备阶段的质量核查(audio-label 对齐)是确保指标可信的前提,值得复现者借鉴。
3.4 Kincaid46
Kincaid46 由 Jason Kincaid 在 2018 年对多家自动转写服务做准确性对比的文章整理而成,包含46 个音频文件及对应参考转写,作者使用文章中 Airtable 表格提供的 46 份音频与参考文本。此外,论文中的人工转写基准(human transcription benchmark)从该数据中取25 个样本,其 "Ref ID" 为:
2 4 5 8 9 10 12 13 14 16 19 21 23 25 26 28 29 30 33 35 36 37 42 43 45也就是说,Kincaid46 同时承担两类角色:机器转写准确率对比(46 例)与人工 vs 机器上限对比(25 例),后者的子集划分必须严格按上述 ID 执行才能与论文数据对齐。
3.5 Earnings-21、Earnings-22
这两个数据集使用 speech-datasets 仓库提供的文件,版本对应其202206版本。内容为上市公司财报电话会议(earnings call)录音,特点是多位发言人交替、术语密集、语速快,是评测长片段转写在财经专业场景下表现的重要基准,对测试condition_on_previous_text等窗口衔接机制尤为有价值。
3.6 CORAAL(长片段版)
与短片段版使用同一批231 段访谈(v. 2021.07),但改用完整长度的访谈文件和完整转写。同一语料两种粒度,让研究者可以直接对比"逐句评测"与"整段评测"两种协议下模型表现的差异。
四、多语言评测数据集
多语言基准覆盖论文的两个核心能力:多语种语音识别(转写为原语言)与语音翻译(任意语言→英语)。原始文档为每个数据集标注了语种范围与收集方式。
4.1 Multilingual LibriSpeech(MLS)
使用 MLS 语料(OpenSLR 发布)中各语言的test 分片。MLS 基于 LibriVox 有声书构建,涵盖数十种语言,是论文中评估跨语言识别能力的主力基准之一。
4.2 Fleurs
Fleurs 的音频与转写通过 HuggingFace datasets 上的实现收集(google/fleurs的fleurs.py加载脚本)。作为翻译数据集使用时,作者通过数值 utterance ID 匹配找到对应的英文转写——因为 Fleurs 各语言版本共享同一套句子编号,语言 A 的第 N 句与英语的第 N 句语义对齐,这为评测翻译质量提供了天然的对齐标注。
notebooks/Multilingual_ASR.ipynb 完整演示了 Fleurs 的加载与评测:从 FLEURS102 归档中读取test.tsv标签表(含 id、文件名、原始转写、转写等字段)与test分片下全部 WAV 音频,并提供 80 余种语言的下拉选择(Afrikaans、Amharic、Arabic……直到 Yoruba),还支持subsample_rate参数按比例抽样以快速演示。
4.3 VoxPopuli
使用官方仓库提供的get_asr_data.py脚本收集14 种语言的 ASR 数据。VoxPopuli 源自欧洲议会(EU Parliament)的会议录音,覆盖语种广、政治演讲风格单一而清晰,适合评测模型在正式口语上的多语言表现。
4.4 Common Voice 9
下载 Common Voice Corpus 9(从 Mozilla 官方站点)。与短片段评测使用的 5.1 版本不同,多语言评测使用的是更新的第 9 版,覆盖语言更多。
4.5 CoVOST 2
收集 CoVOST 2 仓库提供的 "X into English" 数据。CoVOST 的亮点是非母语口音英语(non-native accented English)语音到英语转写/翻译,用于评测模型在面对真实世界非母语发音时的鲁棒性。
五、数据集覆盖总览:一张表看清全部评测语料
| 形态 | 数据集 | 关键版本/分片 | 预处理要点 |
|---|---|---|---|
| 短片段·纯英语 | LibriSpeech | test-clean / test-other | 直接使用官方分片 |
| 短片段·纯英语 | TED-LIUM 3 | test | 使用发行包内分段人工转写 |
| 短片段·纯英语 | Common Voice 5.1 | 英文子集 | 官方站点下载 |
| 短片段·纯英语 | Artie | Common Voice 子集 | 偏置评测专用 |
| 短片段·纯英语 | CallHome & Switchboard | LDC2002S09 / LDC2002T43 | eval2000 脚本 +wav.scp→WAV 转换 |
| 短片段·纯英语 | WSJ | LDC93S6B / LDC94S13B | Kaldi s5 recipe |
| 短片段·纯英语 | CORAAL | v.2021.07,231 访谈 | FairSpeech 切分 |
| 短片段·纯英语 | CHiME-6 | CHiME-5 加工 | s5_track1 stage 0;双耳*_P??.wav |
| 短片段·纯英语 | AMI-IHM / AMI-SDM1 | AMI 语料 | s5b stage 0/2 |
| 长片段·纯英语 | TED-LIUM 3(长) | test 中 11 个 talk | 按时间戳表切片、文本拼接 |
| 长片段·纯英语 | Meanwhile | 64 片段 | 闭路字幕人工校对;data/meanwhile.json |
| 长片段·纯英语 | Rev16 | 16 剧集 | 剔除 audio-label 不匹配剧集 |
| 长片段·纯英语 | Kincaid46 | 46 音频 | 人工基准取 25 例(按 Ref ID) |
| 长片段·纯英语 | Earnings-21/22 | 202206 版本 | 财报电话会议场景 |
| 长片段·纯英语 | CORAAL(长) | 231 访谈全量 | 完整访谈文件与转写 |
| 多语言 | MLS | 各语言 test | 直接使用官方分片 |
| 多语言 | Fleurs | test | 数值 utterance ID 对齐英文做翻译评测 |
| 多语言 | VoxPopuli | 14 语言 | get_asr_data.py收集 |
| 多语言 | Common Voice 9 | 多语言全集 | 官方站点下载 |
| 多语言 | CoVOST 2 | X into English | 非母语口音英语 |
六、端到端复现:LibriSpeech 短片段评测流水线
数据准备的最终目的是得到可信的指标。仓库用 notebooks/LibriSpeech.ipynb 给出了从安装到 WER 输出的最小可复现流水线,恰好对应文档中 LibriSpeech 数据在评测中的用法。
第 1 步:环境安装。与主仓库 README.md 的安装说明一致,安装 whisper 与指标计算库 jiwer:
pip install git+https://github.com/openai/whisper.git pip install jiwer第 2 步:数据集封装。notebook 定义了一个LibriSpeech数据集类,底层用torchaudio.datasets.LIBRISPEECH(url="test-clean", download=True)加载,并在__getitem__中完成 Whisper 推理前的标准信号处理:
audio, sample_rate, text, _, _, _ = self.dataset[item] assert sample_rate == 16000 audio = whisper.pad_or_trim(audio.flatten()).to(self.device) mel = whisper.log_mel_spectrogram(audio)这里的两步与 whisper/audio.py 的实现一一对应:pad_or_trim将任意长度波形对齐到 30 秒(对应文档"短片段"的评测形态),log_mel_spectrogram计算 log-Mel 谱图特征。加载后用DataLoader(batch_size=16)批量喂给模型。
第 3 步:模型推理。加载英文专用模型base.en,notebook 输出显示该模型为英文专用、参数量71,825,408;随后以无时间戳的短片段解码选项逐批解码:
options = whisper.DecodingOptions(language="en", without_timestamps=True) for mels, texts in tqdm(loader): results = model.decode(mels, options) hypotheses.extend([result.text for result in results]) references.extend(texts)without_timestamps=True正是短片段评测的关键——评测只关心文本内容,不需要时间戳 token,与长片段评测(需要<|start|>时间戳 token 驱动分段)形成鲜明对比。notebook 中test-clean共生成2620 行hypothesis/reference 对照数据。
第 4 步:归一化与 WER。直接用jiwer.wer计算会因大小写、标点、数字写法(如 "NUMBER TEN" vs "number 10")产生虚假错误,因此必须先做文本归一化:
import jiwer from whisper.normalizers import EnglishTextNormalizer normalizer = EnglishTextNormalizer() data["hypothesis_clean"] = [normalizer(text) for text in data["hypothesis"]] data["reference_clean"] = [normalizer(text) for text in data["reference"]] wer = jiwer.wer(list(data["reference_clean"]), list(data["hypothesis_clean"])) print(f"WER: {wer * 100:.2f} %")notebook 记录的实际输出为WER: 4.26 %(base.en在 LibriSpeech test-clean 上)。这个数字既验证了流水线的正确性,也说明了归一化的重要性:未归一化时,模型输出 "Stuffered into you" 与参考 "STUFF IT INTO YOU" 会被计为多处错误,而归一化后语义等价形式被正确对齐。EnglishTextNormalizer的实现见 whisper/normalizers/english.py,其对英文大小写、标点、数字展开、缩写等做了系统化处理。
七、多语言评测实操:Fleurs 转写与翻译
notebooks/Multilingual_ASR.ipynb 则对应文档中 Fleurs、VoxPopuli 等多语言基准的评测方式,展示同一模型如何同时做**转写(transcribe)与翻译(translate)**两项任务:
model = whisper.load_model("medium") # 多语言模型,参数量 762,321,920 options = dict(language=language, beam_size=5, best_of=5) transcribe_options = dict(task="transcribe", **options) translate_options = dict(task="translate", **options) for audio, text in tqdm(dataset): transcription = model.transcribe(audio, **transcribe_options)["text"] translation = model.transcribe(audio, **translate_options)["text"]几个值得注意的细节:
- 必须使用多语言模型(
medium、large等),英文专用.en模型无法翻译非英语语音——这与主 README.md 的命令行说明一致。 beam_size=5, best_of=5是论文评测采用的解码参数:beam search 宽度 5,同时每个窗口从 5 个候选里择优,保证评测指标可复现。- 输出同时包含韩语原文转写与英文翻译(notebook 示例以
ko_kr韩语演示),这正是文档所述 Fleurs "数值 utterance ID 匹配英文转写"评测协议的落地:reference列来自 Fleurs 韩语标注,翻译结果与英文版对齐。
此外,whisper/transcribe.py 的transcribe()函数签名揭示了评测时其他可控参数及其默认值:温度temperature默认(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)的退化采样策略、gzip 压缩比阈值compression_ratio_threshold=2.4、平均对数概率阈值logprob_threshold=-1.0、静音判定阈值no_speech_threshold=0.6、以及condition_on_previous_text=True的窗口间上下文衔接等。这些参数共同定义了模型在长音频上的"失败重试"与"静音跳过"机制,是复现长片段基准(Meanwhile、Earnings 等)时同样生效的底层行为。
八、仓库中的配套验证与测试
除 notebook 外,仓库的测试代码也印证了评测数据的可用性:tests/test_transcribe.py 使用tests/jfk.flac对每一种可用模型(whisper.available_models()参数化)执行transcribe(..., temperature=0.0, word_timestamps=True),断言转写结果包含 "my fellow americans" 等关键短语,并校验start < end的逐词时间戳合理性。这相当于一个内置的"冒烟评测":任何一台新环境只要跑通该测试,就说明模型加载、音频解码、时间戳对齐全链路可用,可以作为正式评测前的环境自检。
tests/jfk.flac这类固定样本也提醒我们:评测数据形态可以是单条音频文件(对应短片段基准),也可以是长音频 + 时间戳/闭路字幕(对应 Meanwhile 等长片段基准),两种形态在 whisper/transcribe.py 中分别由without_timestamps与逐段时间戳解码两条路径处理。
九、复现注意事项与边界说明
基于以上内容,复现论文评测时请留意以下边界:
- 数据获取需遵守发行方条款:本文列出的语料分属不同机构发行(OpenSLR、LDC、Mozilla、各研究组),部分语料(如 CallHome/Switchboard、WSJ)需要从其发行渠道申请,请以各发行方发布时的获取方式与许可条款为准。
- 严格对齐版本与分片:评测指标对数据版本高度敏感,例如短片段用 Common Voice 5.1、多语言用 Common Voice 9;CORAAL 需固定 v. 2021.07;Earnings 需固定
202206版本。 - 子集划分必须与文档一致:Rev16 的 16 个文件编号、Kincaid46 人工基准的 25 个 Ref ID 都是论文指标的组成部分,换用其他子集会得到不可比的结果。
- 长片段需正确切割与拼接:TED-LIUM 3 长片段版必须使用本文第三节的时间戳表切割,Meanwhile 需按 data/meanwhile.json 的起止时间截取视频片段。
- 评测前务必归一化:大小写、标点、数字写法差异会显著扭曲 WER,短片段英文评测应使用 whisper/normalizers/english.py 的
EnglishTextNormalizer;多语言评测则需按论文附录约定选择 WER(拉丁字母语言)或 CER(非拉丁字母语言)口径。
总体而言,data/README.md 是一份"可执行"的数据准备契约:它精确到语料版本、分片名称、预处理脚本乃至切割时间戳。配合仓库中的 notebooks/LibriSpeech.ipynb、notebooks/Multilingual_ASR.ipynb 与 data/meanwhile.json,研究者完全可以按图索骥,在本地复现论文中的 WER/CER/BLEU 评测,并用同样的流水线验证自定义数据上的模型表现。
- 人工智能
- 语音
- 音频
- 基础模型
【免费下载链接】whisper
Robust Speech Recognition via Large-Scale Weak Supervision
相关推荐
MMagic 数据集准备全指南:下载、预处理与数据集类详解
MMagic 数据集准备全指南:下载、预处理与数据集类详解 本指南面向在 MMagic(OpenMMLab 多模态生成式 AI 工具箱)中训练与测试各类生成/复
媒体生成计算机视觉深度学习人工智能大模型BEVFusion数据准备完全指南:nuScenes数据集预处理与配置
BEVFusion数据准备完全指南:nuScenes数据集预处理与配置 想要在自动驾驶领域快速上手BEVFusion多传感器融合模型?数据准备是关键第一步!本指
自动驾驶计算机视觉多模态深度学习为什么选择Bookworm作为你的Linux电子书阅读器?
为什么选择Bookworm作为你的Linux电子书阅读器? 在数字阅读成为日常的今天,Linux用户常常面临一个难题:如何找到一款既简洁易用又功能全面的电子书阅
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考