一、Whisper 把 ASR 变成带指令的文本生成
同一句声音可能需要原语言转写、翻译成英语、预测语言,或者输出带时间戳的字幕。Whisper 不为这些任务建立彼此独立的分类头,而是用特殊 Token 描述任务,再让同一个 Decoder 生成目标序列。
在 Whisper 之前,端到端 Attention Encoder-Decoder 已经是成熟的 ASR 路线;自监督语音预训练也能利用大量未标注音频。Whisper 的研究问题不同:如果直接扩展多样化的弱监督音频—文本配对,能否得到不依赖特定数据集微调、对口音、噪声和不同领域更稳健的模型?
OpenAI 报告原始 Whisper 在 680,000 小时多语、多任务监督数据上训练。论文强调其零样本跨数据集稳健性,同时也说明它并非在每个专门基准上都胜过针对该数据集优化的模型。Whisper 论文
Whisper 是一个以固定长度 Log-Mel 频谱为输入、以带任务和时间戳 Token 的文本序列为输出的 Encoder–Decoder Transformer。
二、整体结构:Encoder 听完整窗口,Decoder 逐字写
三、音频 Encoder:30 秒约压成 1500 个位置
输入统一采样率,并截取或填充到模型窗口。
25 ms 分析窗、10 ms 步长,约产生 3000 帧。
第二层 stride=2,将时间长度减半。
让 Encoder 知道音频帧的时间顺序。
每个位置可利用整个 30 秒窗口。
30 秒 ÷ 10 ms hop ≈ 3000 个 Mel 时间帧
第二层卷积 stride = 2 → 约 1500 个 Encoder 位置
每个位置对应约 20 ms 的输入时间
这是表示分辨率,不等于字幕时间戳精度或端到端延迟。Whisper 的卷积前端较轻,主体计算仍在 Transformer。Encoder 使用预归一化残差块和最终 LayerNorm。它不使用严格因果掩码,因此一个窗口末尾的信息可以影响窗口开头的表示,这有利于离线准确率,却意味着该 Encoder 不是原生低延迟流式结构。Whisper 官方实现
四、Decoder:文字历史与声音证据在 Cross-Attention 相遇
Decoder 的 Masked Self-Attention 只能读取当前 token 左边已经生成的 token;Cross-Attention 则读取全部 Encoder 音频表示。每一步输出一个词表分布,选择文字、时间戳或结束 token,再把结果追加到输入继续下一步。
回答“根据已经写出的文字,下一段语言上可能是什么”。它提供拼写、语法和长距离搭配能力。
回答“音频窗口里哪里支持这个候选”。它把文本生成约束在声音表示上,但不能从结构上保证绝不脱离声音。
Decoder 的输入 embedding 与输出词表投影共享权重,并使用学习式位置 embedding。训练采用 teacher forcing:真实前缀作为输入,预测下一个目标 token;推理时使用模型自己的历史输出,因此错误可能传播。
当声音清楚时,文本历史能修正同音词和领域表达;当输入是静音、音乐、噪声或截断语句时,同一 Decoder 仍能生成语言上流畅的内容。因此“读起来通顺”不能替代实体、数字、静音幻觉和删除错误评测。
五、特殊 Token 如何统一四类任务
Whisper 把任务配置编码进同一个输出序列。下面是一条中文、原语言转写、带时间戳输出的概念序列:
| Token 类别 | 作用 | 例子 |
|---|---|---|
| 语言 | 指定或预测音频语言 | <|zh|>、<|en|> |
| 任务 | 原语言转写或翻译为英语 | <|transcribe|>、<|translate|> |
| 时间戳控制 | 启用或关闭时间戳生成 | <|notimestamps|> |
| 时间戳 | 表示 30 秒窗口中的相对时间 | 以 20 ms 为粒度的时间 token |
| 文本 | Byte-level BPE 文字 token | 多语文本、标点和空格 |
时间戳不是独立回归头输出的浮点数,而是 Decoder 词表的一部分。原论文将 0–30 秒按 20 ms 量化成时间 token,使文本与分段边界可以交替生成。Whisper 论文 §2.2
六、长音频:顺序滑窗不是原生流式
如果把长录音预先用 VAD 切成多个片段并行处理,可以提高吞吐,却可能丢失跨段上下文;如果顺序带入前文,可以保持专名和语气,但错误文本也可能污染下一段。工程系统需要在吞吐、上下文和错误传播之间选择。
Whisper 可以一边说一边实时出字吗?
可以通过短块、重叠窗口和增量提交构建近实时体验,但原始 Whisper Encoder 看的是完整窗口,没有原生 cache-aware 状态协议。严格实时系统还要处理右看、重复计算、partial 回滚和端点检测,因此“能包装成流式接口”与“模型原生为流式训练”应分开描述。
七、模型尺寸、large-v3 与 Turbo
经典 Whisper 系列保持 Encoder 与 Decoder 等宽、等深,主要通过增加隐藏维度和 Transformer 层数扩展容量。下表中的层数写作“Encoder / Decoder”。
| 模型 | 隐藏维度 | 注意力头 | 层数 | 参数量 |
|---|---|---|---|---|
| tiny | 384 | 6 | 4 / 4 | 39M |
| base | 512 | 8 | 6 / 6 | 74M |
| small | 768 | 12 | 12 / 12 | 244M |
| medium | 1024 | 16 | 24 / 24 | 769M |
| large | 1280 | 20 | 32 / 32 | 1.55B |
这些数字描述模型容量,不直接等于某台机器上的速度。官方仓库给出的显存和相对速度也附带具体硬件与推理条件,部署时仍应在自己的音频长度、语言、beam、精度和批量设置下测量。Whisper 官方模型列表
| 版本 | 主要结构变化 | 没有改变的部分 |
|---|---|---|
| Whisper large-v2 | 原始 large 系列的 80-bin Log-Mel 与深 Encoder–Decoder | 30 秒窗口、AED、自回归输出 |
| Whisper large-v3 | 输入从 80 增至 128 Mel bins;新增粤语语言 Token,并使用扩展后的多语数据训练 | Encoder–Decoder Transformer 范式 |
| large-v3-turbo | 保留 large-v3 Encoder,将 Decoder 从 32 层裁到 4 层并继续训练;约 809M 参数 | 逐 token 自回归、30 秒窗口和特殊 Token 接口 |
Turbo 的思路很直接:既然每个音频窗口只运行一次 Encoder,而 Decoder 要为每个输出 token 运行一次,就优先缩短 Decoder。它减少逐 token 成本,但没有把 Whisper 变成 CTC 或 Paraformer 式并行输出。OpenAI Whisper Turbo 发布说明
不同实现可能使用 PyTorch、CTranslate2、TensorRT、量化、不同 beam 和 batch。只凭模型名比较“快几倍”容易把结构收益与推理引擎优化混在一起。
八、Whisper、CTC 与 Paraformer 的结构差异
| 比较轴 | Whisper | CTC | Paraformer |
|---|---|---|---|
| 输出方式 | 自回归逐 token | 帧级全并行,再合并 blank/重复 | 预测长度后 token 级整句并行 |
| 文本依赖 | 强左侧历史 | 给定 Encoder 后较弱 | 双向 Decoder 建模整句 |
| 任务控制 | 语言、翻译、时间戳 Token | 通常由独立头或外部流程完成 | 以 ASR 并行输出为主 |
| 长音频 | 30 秒顺序滑窗或第三方分段 | 由 Encoder 上下文与解码实现决定 | 通常配合 VAD 分段或专门在线模型 |
| 主要优势 | 多语、多任务、跨域稳健 | 简单、快速、易对齐 | 速度与输出上下文折中 |
| 主要风险 | 自回归延迟、重复和幻觉 | 语言建模弱 | 长度与候选错误传播 |
不存在仅凭架构名称就能宣布的全局赢家。离线多语与翻译重视 Decoder 的条件生成能力;端侧和高并发更重视并行输出;严格实时还需要有限右看和状态缓存,而这不是三列中任一 Decoder 名称单独决定的。
九、Whisper 的证据边界与失效模式
大规模弱监督带来的是稳健性,不是绝对无误
Whisper 论文的主要证据是跨多个数据集的零样本表现,而不是在单一干净基准上始终领先。网页字幕和弱监督数据覆盖广,也包含错位、缺失和机器生成字幕;团队通过过滤和去重降低问题,但训练目标仍会继承数据噪声。
时间戳是生成结果,不是精确声学对齐保证
时间 token 与文字一起由 Decoder 生成,适合片段级字幕。若业务需要稳定字级或词级时间戳,通常还需要 forced alignment、专门对齐模型或后处理验证。
语言先验可能覆盖声学证据
静音、音乐、被截断音频、极端噪声和错误前文提示都可能诱发重复或无依据文字。生产系统应设置 VAD、no-speech 阈值、重复检测、置信度门限与最大压缩比等保护,并在自己的失败集上调参。
除了 WER/CER,加入静音、噪声、重口音、数字专名、代码切换、长停顿、音乐、重复语句和截断音频;同时记录实体忠实度、无声段输出、时间戳偏差、RTF 与显存。
边界结论
Whisper 的结构优势来自一个统一、可扩展的条件生成接口和多样化训练数据,而不是特殊的声学层。它很适合离线多语转写、翻译与字幕,但逐 token Decoder、30 秒窗口和生成式错误决定了它并非端侧、高并发或严格实时场景的默认最优解。
十、一手资料
- A. Radford et al. Robust Speech Recognition via Large-Scale Weak Supervision.
- OpenAI. Introducing Whisper.
- OpenAI. Whisper 官方代码仓库.
- OpenAI. Encoder–Decoder 官方实现.
- OpenAI. Whisper large-v3-turbo 发布说明.
- OpenAI. Whisper large-v3-turbo 官方组织模型卡.
评论加载中...