技术

Whisper AI 的工作原理:完整指南

对OpenAI开源语音识别模型的技术深挖:从梅尔频谱图到Transformer解码。

OpenWhispr

OpenWhispr

工程

2026年2月3日
目录

Whisper是OpenAI开发的自动语音识别(ASR)模型。 它于2022年9月发布,是一个通用语音识别系统,使用从互联网收集的68万小时多语言音频数据训练而成。Whisper采用编码器-解码器Transformer架构,将音频转换为log-mel频谱图,通过神经网络编码器处理,并以自回归方式解码文本token。它支持99种语言的转写、翻译为英文、语言识别和时间戳预测,而且全部在一个统一模型中完成。与多数商业ASR服务不同,Whisper的权重在MIT许可证下完全开源,由此催生了繁荣的移植、优化和应用生态,包括whisper.cpp这个C/C++实现,让Whisper能够实际用于实时、设备端语音识别。

最后更新:2026年2月17日。本文中的定量主张均已与至少两个主要来源交叉核对。

事实核查快照(双来源)

  • Whisper发布时间、训练规模和许可证: OpenAI于2022年9月发布Whisper,使用68万小时数据训练,并采用MIT许可证。 arXiv论文 · OpenAI Whisper仓库
  • 任务范围和语言支持: Whisper支持99种语言的转写、翻译成英文、语言识别和时间戳token。 Whisper模型卡 · Whisper README
  • 英文基准背景: 约3% WER是在LibriSpeech test-clean上针对英文评估的基准数字,不是通用真实世界错误率。 large-v2模型卡 · 基准详情
  • 近期模型更新: large-v3在许多语言上报告的错误率低于large-v2,turbo则通过更小的解码器计算量专注于降低延迟。 large-v3模型卡 · turbo发布讨论
  • 与OpenWhispr的关系: OpenWhispr通过whisper.cpp使用Whisper,为桌面平台提供本地、离线优先的听写。 whisper.cpp · OpenWhispr

Whisper 如何处理音频

音频输入
Log-Mel 特性
编码器
解码器
文字

为什么它对 OpenWhispr: 很重要

通过 whisper.cpp 在本地运行 — 原始音频保留在设备上。

模型大小控制速度/准确性的权衡。

相同的管道支持 macOS、Windows 和 Linux 之间的听写。

Whisper是什么?

Whisper由OpenAI的Alec Radford、Jong Wook Kim、Tao Xu、Greg Brockman、Christine McLeavey和Ilya Sutskever在论文“Robust Speech Recognition via Large-Scale Weak Supervision”中提出。代码和模型权重于2022年9月以MIT许可证发布在GitHub上。

在Whisper之前,最先进的语音识别系统通常使用经过整理、人工标注的数据集训练,这些数据集往往局限于特定语言、口音或领域。Whisper打破了这一做法,使用从互联网抓取的音频与文字稿配对数据,规模达到68万小时,且数据非常多样。关键洞见在于,这种“弱监督”方式——使用不完美的机器生成或用户上传文字稿,而不是人工逐条标注的数据——可以产生一个在语言、口音、背景噪声和技术词汇上都非常稳健的模型。

结果是一个可以处理多种语音任务的单一模型:转写(同语种语音转文本)、翻译(任意语言语音转英文文本)、语言识别,以及带时间戳的语音活动检测。这种多任务能力通过一套特殊token系统嵌入到模型架构中,用这些token指定要执行的任务。

Whisper的开源发布意义重大。它让高质量ASR变得人人可用,开发者、研究人员和公司都能使用一个可与商业API竞争的模型,而且不需要按分钟付费、不需要把音频发送到云端,也没有供应商锁定。这推动了whisper.cppFaster Whisper等工具,以及建立在它们之上的几十个应用的发展,其中也包括OpenWhispr

架构深挖

Whisper使用编码器-解码器Transformer架构,这与原始Transformer(Vaswani et al., 2017)以及许多机器翻译系统背后的基本设计相同。编码器处理音频,解码器生成文本。下面是每个阶段的工作方式。

音频预处理

在任何神经网络处理之前,原始音频会被转换成一种声音的可视化表示,称为log-mel频谱图。流程如下:

  1. 音频被重采样为16,000 Hz(16 kHz单声道)。
  2. 使用25毫秒窗口10毫秒步幅(hop length)计算短时傅里叶变换(STFT)。
  3. 频谱被投影到80个梅尔频率滤波器组(large-v3为128个)上,这些滤波器通过对数间隔近似人类听觉感知。
  4. 应用对数缩放,生成最终的log-mel频谱图。
  5. 频谱图被分成30秒块。短于30秒的音频会补零,长音频会按顺序分块处理。

结果是一个形状为(80, 3000)的二维表示——80个梅尔通道,3,000个时间步(30秒,10ms步幅)。它类似一张图像,编码器处理它的方式也很像视觉模型处理像素数据。

编码器

编码器把梅尔频谱图转换成一串学习到的音频表示。它包含:

  1. 两个1D卷积层 — 第一个卷积的kernel size为3、padding为1,后接GELU激活。第二个卷积的kernel size为3、stride为2、padding为1,会把时间维度减半,把3,000个时间步下采样到1,500个位置。
  2. 正弦位置嵌入 — 与解码器不同,编码器使用固定的正弦嵌入(不是学习得到的)来编码每个时间步的位置。
  3. Transformer块 — 一叠标准Transformer编码器层,每层包含多头自注意力和带GELU激活的前馈网络,并通过残差连接和层归一化连接。

输出是一串1,500个上下文化音频特征向量——输入音频每20毫秒对应一个向量——解码器在生成文本时会对这些向量进行注意力计算。

解码器

解码器以自回归方式生成文本token:一次生成一个token,每个token都依赖编码后的音频和之前生成的所有token。它包含:

  1. Token嵌入层 — 将token ID转换为稠密向量表示。
  2. 学习到的位置嵌入 — 与编码器的正弦嵌入不同,解码器使用随模型一起训练的位置嵌入。
  3. 带交叉注意力的Transformer块 — 每个解码器层有三个子层:masked self-attention(防止模型看到未来token)、对编码器输出的cross-attention(让模型“听”音频),以及前馈网络。

最终的解码器输出会被投影到词表上,生成token概率。解码策略包括贪心搜索、束搜索和基于温度的采样。

特殊Token与多任务训练

Whisper通过一套巧妙的特殊token系统,用单个模型执行多种任务。这些token充当指令。解码器输入遵循如下结构:

<|startoftranscript|> <|en|> <|transcribe|> <|notimestamps|> Hello, how are you today? <|endoftext|>
  • <|startoftranscript|> — 表示输出序列开始。
  • <|en|> — 指定语言(99个语言token之一)。可以自动检测,也可以手动设置。
  • <|transcribe|> <|translate|> — 指定是转写原语言,还是翻译成英文。
  • <|notimestamps|> — 控制是否生成时间戳token。启用时间戳时,模型会生成类似 <|0.00|> <|2.40|> 这样的时间偏移token,将文本与音频对齐。

这种统一token格式意味着,一个模型无需单独的模型头或微调,就能执行转写、翻译、语言检测和带时间戳转写。任务完全由提供给解码器的token序列决定。

训练数据

原始Whisper模型(tiny到large-v2)使用从互联网收集的音频和文字稿配对数据训练,总量为680,000小时。这个数据集并未公开。它的关键特征是弱监督:文字稿标签没有经过人工标注者逐条验证,而是来自字幕、闭合字幕以及其他用户生成的音频配套文本。

数据组成

根据官方模型卡,68万小时训练集组成如下:

片段小时占比说明
英语 ASR438,00065%带英文文字稿的英文音频
翻译(其他语言到英语)126,00018%带英文文字稿的非英文音频
多语言 ASR117,00017%带母语文字稿的非英文音频(覆盖98种语言)

训练数据中英文占比很高(65%),这解释了为什么Whisper在英文上的表现明显优于低资源语言。对于2023年11月发布的large-v3模型,OpenAI将训练集扩展到100万小时弱标注音频,并额外加入400万小时伪标注音频,这些伪标签是用Whisper large-v2在未标注数据上生成的,是一种自训练或知识蒸馏形式。

为什么“弱监督”很重要

大多数早期ASR系统使用LibriSpeech(960小时)或Common Voice(每种语言几千小时)这样的数据集训练,这些数据集经过精心整理并由人类验证。Whisper选择用标签质量换规模:68万小时对比传统系统使用的几百到几千小时。论文证明这个取舍是值得的。来自互联网的数据多样性让Whisper在真实世界条件下非常稳健:背景噪声、重叠语音、口音、领域词汇,以及会让基于录音棚级朗读语音训练的模型感到困难的声学环境。

不过,弱监督也带来了一个已知限制:幻觉。因为训练文字稿并不完美,模型有时会生成听起来合理但实际并未被说出的文本,尤其是在静音或非常安静的片段中。这是该方法固有的取舍,也是仍在持续改进的方向。

模型尺寸

Whisper提供多个尺寸,从3900万到15.5亿参数不等。小模型更快但精度较低;大模型更准确但需要更多计算和内存。.en变体是英文专用模型,通常在英文上表现更好,尤其是较小尺寸。large模型没有英文专用版本。

模型参数量英文专用VRAM相对速度
tiny39 Mtiny.en~1 GB~10x
base74 Mbase.en~1 GB~7x
small244 Msmall.en~2 GB~4x
medium769 Mmedium.en~5 GB~2x
large (v1, v2, v3)1,550 M--~10 GB1x
turbo (large-v3-turbo)809 M--~6 GB~8x

速度以large模型为参照。VRAM要求指原始Python实现中通过fp16精度进行GPU推理。whisper.cpp使用的内存明显更少(例如large模型需要约3.9 GB RAM,而不是约10 GB VRAM)。

turbo模型(2024年10月发布)是large-v3的蒸馏版本,解码器显著更小。它保留了large-v3的大部分精度,同时速度约快8倍,因此在速度重要时是很强的选择。注意,turbo不支持翻译任务。

large模型经历了三次迭代:large-v1(2022年9月)、large-v2(2022年12月)和large-v3(2023年11月)。每个版本都提高了精度,其中large-v3引入了128个梅尔频率bin(从80个提升),并使用更大的数据集训练。关于每个尺寸以及如何选择的详细拆解,请参阅我们的Whisper模型尺寸指南

Whisper有多准确?

Whisper的精度通常用词错误率(WER)衡量,即被错误转写的词所占比例(插入、删除和替换合并计算)。WER越低越好。

英文基准

LibriSpeech test-clean上,Whisper large-v2的WER约为3.0%[1][2]。这是最常用的英文ASR基准之一,由有声书中的干净朗读语音组成。这个结果可与商业ASR系统和专门训练的模型竞争,尽管在LibriSpeech这个特定基准上,针对该数据集微调的专用模型可以达到更低WER。Whisper的强项不在于击败狭窄基准,而在于稳健性,即在广泛真实世界条件下保持稳定表现。

Large-v3的改进

根据OpenAI的评估,在Common Voice 15和Fleurs评估数据集上,对于模型错误率低于60%的语言,Whisper large-v3相较large-v2显示出10-20%的错误减少[2][3]。这些改进在非英文语言上尤其明显,因为扩大的训练数据(总计500万小时)在这些语言上带来的差异最大。

Whisper的对比表现(2026年2月)

自Whisper发布以来,更新的开源ASR模型已经在干净语音基准上超过它。NVIDIA的Parakeet TDT(0.6B参数)在LibriSpeech test-clean上达到1.69% WER,Canary模型达到1.6% WER,都明显低于Whisper large-v3的约2.7%。不过,由于生态成熟、语言覆盖广,以及whisper.cpp等优化运行时可用,Whisper仍是部署最广泛的开源ASR模型。

词错误率:Whisper 与开源竞争对手

LibriSpeech test-clean(英语朗读演讲)——越低越好

NVIDIA
其他开源
OpenAI Whisper

来源:Hugging Face 模型卡、NVIDIA 模型卡、Open ASR Leaderboard (Feb 2026)。仅限纯英语朗读语音 - 现实世界的准确性因音频质量、口音和领域而异。商业 API 被省略,因为它们不发布 LibriSpeech 基准。

注:商业云API(Deepgram Nova-3、Google Chirp、AssemblyAI Universal-2)不公布LibriSpeech WER数字,因此无法在这张图中直接比较。它们的基准使用专有真实世界测试集。OpenAI还在2025年3月发布了GPT-4o-transcribe,这是一个仅API可用的模型(不开源,也不基于Whisper),据称错误率更低,但它只能在云端使用,无法本地推理。

Whisper擅长的地方

  • +对口音和方言的稳健性 — 使用多样化互联网音频训练,Whisper比只在朗读语音上训练的系统更能处理地区口音。
  • +背景噪声耐受性 — 即使有音乐、其他说话人或环境噪声,模型也能保持合理精度。
  • +专业词汇 — 由于训练数据覆盖广,Whisper比许多通用ASR系统更能处理特定领域术语(医疗、法律、技术)。
  • +多语言能力 — 单一模型支持99种语言,无需按语言单独微调。

Whisper吃力的地方

  • -幻觉 — 最常被提到的问题。在静音或非常安静的片段中,Whisper可能生成从未说出的文本。这是弱监督训练方式的后果。
  • -低资源语言 — 训练数据较少的语言(68万小时中大部分是英文)错误率明显更高。
  • -重复文本生成 — 自回归解码器可能会“卡住”,反复生成同一句话。带特定参数的束搜索可以缓解,但不能完全消除。
  • -默认并非实时 — Whisper处理30秒块,因此存在固有延迟。流式方案(如whisper.cpp的实时模式)可以绕过这一点,但会增加复杂度。

whisper.cpp与本地推理

原始Whisper实现需要Python、PyTorch和支持CUDA的GPU,才能获得合理性能。这使它不适合桌面应用、移动设备和边缘部署。Georgi Gerganov创建的whisper.cpp解决了这个问题。

whisper.cpp是一个用纯C/C++完整重新实现的Whisper推理引擎,没有依赖。它读取相同的模型权重,但运行时不需要Python、不需要PyTorch,也不需要GPU(虽然有GPU会大幅受益)。关键特性包括:

  • 零运行时内存分配 — 所有内存都预先分配,使性能可预测,并适合嵌入式系统。
  • Apple Silicon优化 — 在搭载M系列芯片的Mac上,编码器可以通过Core ML运行在Apple Neural Engine上,相比仅CPU执行快3倍以上。Metal GPU加速也支持完整GPU推理。
  • 量化支持 — 模型可量化为4位、5位或8位整数精度,在几乎不损失精度的情况下显著降低内存使用并提高速度。
  • GPU加速 — 支持NVIDIA CUDA(通过cuBLAS)、Vulkan(跨厂商)、OpenVINO(Intel)以及用于CPU加速的OpenBLAS。
  • 语音活动检测(VAD) — 内置VAD可跳过静音片段,同时提升速度和文字稿质量。

内存要求(whisper.cpp)

模型磁盘大小所需RAM
tiny75 MB~273 MB
base142 MB~388 MB
small466 MB~852 MB
medium1.5 GB~2.1 GB
large2.9 GB~3.9 GB

whisper.cpp可运行在macOS(Intel和Apple Silicon)、Linux、Windows、iOS、Android、FreeBSD、Raspberry Pi,甚至可通过WebAssembly在浏览器中运行。它能在普通消费级硬件上实现快于实时的转写,包括Raspberry Pi 4和iPhone 13这样的小设备。

正是这种可移植性,让本地、私密的语音识别变得可行。像OpenWhispr这样的应用在底层使用whisper.cpp,提供完全运行在用户设备上的实时按键说话听写,音频永远不会离开机器。

Whisper vs 其他ASR系统

Whisper处在更大的语音识别系统生态中。下面是它与常见替代方案的比较。

Google Cloud Speech-to-Text

Google的云端ASR服务。精度优秀,尤其是英文,支持实时流式处理和话者分离。主要区别在于:它是专有服务,需要把音频发送到Google服务器,并按处理的音频分钟计费。Whisper在通用场景下精度相近,可本地运行且免费,但缺少内置流式处理和话者分离。

仅云端专有按量付费

Amazon Transcribe (AWS)

Amazon的云端ASR,与AWS生态紧密集成。提供医疗转写、呼叫分析和自定义词汇。取舍与Google类似:依赖云端、按分钟计费、专有。对于需要离线运行、开源许可或避免供应商锁定的应用,Whisper更合适。

仅云端专有AWS集成

Mozilla DeepSpeech

Mozilla基于Baidu Deep Speech研究的开源ASR引擎。它曾是最早的高质量开源ASR模型之一,但Mozilla在2021年停止了活跃开发。Whisper在精度、多语言支持和社区势能上已经实质性取代DeepSpeech。DeepSpeech仍可作为轻量、易理解的基线,但不再推荐用于新项目。

开源已停止维护偏重英文

Vosk

一个开源离线语音识别工具包,支持20多种语言,模型小而快。Vosk非常适合资源受限环境,它的模型只有Whisper的一小部分大小,并且能在低功耗硬件上良好运行。取舍是精度:Vosk明显不如Whisper,尤其在口音语音、噪声音频和专业词汇上。

开源轻量精度较低

Faster Whisper (CTranslate2)

使用SYSTRAN的CTranslate2推理引擎重新实现的Whisper。它运行相同的Whisper模型,精度相同,但速度最高可比原始OpenAI实现快4倍,内存使用也更低。Faster Whisper基于Python(不同于whisper.cpp的C/C++),是服务器端批量转写的强选择。它支持CUDA GPU和带INT8量化的CPU推理。

开源Python / CTranslate2相同Whisper精度

实际应用

Whisper结合了精度、多语言支持和开源可用性,已经成为大量应用的基础:

桌面听写

OpenWhispr等应用使用whisper.cpp,在macOS、Windows和Linux上提供系统级按键说话听写。音频在本地处理,不会发送到云端。

字幕生成

Whisper的时间戳预测非常适合生成字幕和闭合字幕。stable-tsauto-subtitle等工具会自动化这一工作流。

播客和会议转写

Whisper很擅长长音频转写,尤其是配合分块处理方式。许多播客编辑器和会议记录工具使用Whisper(或Faster Whisper)批量转写录音。

翻译和本地化

Whisper内置的翻译能力(任意语言转英文)用于跨语言内容访问、媒体本地化和实时翻译原型。

无障碍

面向聋人和听障用户的实时字幕、面向运动障碍用户的语音界面,以及音频描述转写,都是Whisper正在被部署的活跃领域。

数据标注和研究

研究人员使用Whisper创建伪标注数据集来训练其他模型,这与OpenAI创建large-v3训练数据的方法相同。它也被广泛用于语言学研究和语料库构建。

来源和延伸阅读

  1. [论文] Radford, A., Kim, J. W., Xu, T., Brockman, G., McLeavey, C., & Sutskever, I. (2022). Robust Speech Recognition via Large-Scale Weak Supervision. arXiv:2212.04356. arxiv.org/abs/2212.04356
  2. [代码] OpenAI Whisper GitHub仓库。 github.com/openai/whisper
  3. [代码] whisper.cpp — Georgi Gerganov的C/C++移植版。 github.com/ggml-org/whisper.cpp
  4. [模型卡] Hugging Face上的Whisper large-v2(LibriSpeech test-clean WER基准:约3.0%)。 huggingface.co/openai/whisper-large-v2
  5. [模型卡] Hugging Face上的Whisper large-v3(相较v2错误减少10-20%)。 huggingface.co/openai/whisper-large-v3
  6. [模型卡] Hugging Face上的Whisper large-v3-turbo(面向低延迟的蒸馏变体)。 huggingface.co/openai/whisper-large-v3-turbo
  7. [模型卡] OpenAI Whisper模型卡(训练数据组成拆解)。 github.com/openai/whisper/blob/main/model-card.md
  8. [发布说明] OpenAI large-v3发布公告和评估说明。 github.com/openai/whisper/discussions/1762
  9. [发布说明] OpenAI turbo发布讨论和速度取舍。 github.com/openai/whisper/discussions/2363
  10. [代码] Faster Whisper — SYSTRAN基于CTranslate2的重新实现。 github.com/SYSTRAN/faster-whisper
  11. [产品] OpenWhispr通过whisper.cpp使用Whisper进行本地听写工作流。 openwhispr.com

用OpenWhispr在本地试用Whisper

OpenWhispr使用Whisper(通过whisper.cpp)在macOS、Windows和Linux上提供本地、私密的听写。按键说话、支持99+种语言、无需云端。免费试用。

无需账户 · 可离线使用 · 永远开源