whisper
OpenAI开源的通用语音识别模型,支持98种语言的高精度转写与翻译
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
OpenAI开源的通用语音识别模型,支持98种语言的高精度转写与翻译
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有过这样的经历——开会时忙着记笔记,却错过了最重要的讨论?录了一段采访音频,回头整理时发现环境嘈杂、多人交叉说话,转录软件频频报错?或者想翻译一段外语视频,却苦于找不到靠谱的字幕工具?这些困扰,在 OpenAI 开源的 Whisper 面前,正在成为历史。

图1:Whisper 采用 Transformer 序列到序列架构,将音频处理统一为单一模型
2022年9月,OpenAI 在一篇题为《Robust Speech Recognition via Large-Scale Weak Supervision》的论文中发布了 Whisper。这个项目的初衷并非商业化——而是为了研究一个核心问题:当用海量互联网音频数据进行弱监督训练时,语音识别系统能强大到什么程度?
研究团队使用了680,000小时的音频数据——这是一个惊人的体量。相比之下,传统的语音识别模型通常在1,000小时以下的标注数据上训练。这些数据来自互联网的各类视频,包含真实世界的口音、背景噪音、技术术语和多人对话,嘈杂但真实。
结果是:Whisper 在英语语音识别任务上接近人类水平,在多语言场景下也展现出了惊人的鲁棒性。OpenAI 将训练好的模型权重完全开源,任何人都可以免费下载使用,这一举动迅速引爆了开发者社区。至今,该仓库已在 GitHub 斩获超过10万颗星,成为语音识别领域最受关注的开源项目之一。
Whisper 不是一个普通的语音转文字工具。它的架构设计使其同时支持四大任务:
1. 多语言语音识别(ASR)
这是 Whisper 的核心能力。它原生支持98种语言的语音转文字,中文普通话、粤语、日语、韩语均能识别。用户只需在调用时指定语言即可,无需额外配置模型。识别结果会自动输出时间戳,方便制作字幕。
2. 语音翻译(Speech Translation)
将非英语音频直接翻译成英语。这不是两步走(先识别再翻译),而是模型端到端完成。在中译英、日译英等场景中表现优异,适合处理进口视频的外语旁白翻译。
3. 语言识别(Language Identification)
Whisper 能够自动检测音频中所说的语言。当你不确定一段录音的语言时,可以让模型先识别,再执行相应的转写或翻译任务。
4. 语音活动检测(VAD)
通过模型判断音频中哪些片段是有效语音,哪些是静音或噪声,可用于音频预处理。
Whisper 的技术核心是一个 Transformer 编码器-解码器架构。它将所有上述任务统一建模为"序列到序列"问题——输入是一段音频的声学特征(log-Mel spectrogram),输出是对应的文字 token。
这种设计的精妙之处在于:单一模型替代了传统语音识别 pipeline 中的多个独立模块(声学模型、语言模型、发音词典、对齐器等),大幅简化了系统复杂度。模型使用特殊的 token 作为任务指定符——告诉模型当前是要做"转写"还是"翻译"。
whisper 仓库的代码结构非常清晰:
model.py:Transformer 模型定义,包含编码器和解码器的实现audio.py:音频加载和预处理(重采样、分帧、Mel 频谱计算)decoding.py:解码策略实现(贪心解码、束搜索)transcribe.py:顶层 API,transcribe() 函数是用户最常调用的接口tokenizer.py:词表和文本归一化处理triton_ops.py:Triton 加速操作,针对 NVIDIA GPU 的推理优化依赖项非常精简:torch(PyTorch 深度学习框架)、tiktoken(OpenAI 自研的分词器)、numba(高性能数值计算)、tqdm(进度条)。没有引入复杂的 Web 框架或前端依赖——这是一个纯推理库。
Whisper 提供了9个规模的模型,从39M参数的 tiny 到1550M参数的 large-v3,用户可以根据硬件条件灵活选择:
| 模型 | 参数量 | 显存需求 | 推理速度 | 适用场景 |
|---|---|---|---|---|
| tiny | 39M | ~1GB | 10x(最快) | 测试、CPU 运行 |
| base | 74M | ~1GB | 7x | 轻度使用 |
| small | 244M | ~2GB | 4x | 推荐日常使用 |
| medium | 769M | ~5GB | 2x | 高质量需求 |
| large | 1550M | ~10GB | 1x(最慢) | 最高精度 |
| turbo | 798M | ~6GB | ~8x | large-v3 速度优化版 |
默认使用 turbo 模型(large-v3 的优化版),在精度和速度之间取得了良好平衡。英文学术数据集上的测试表明,large-v3 模型在多项基准上刷新了最佳纪录。
值得注意的是,Whisper 支持纯 CPU 运行——只是速度会非常慢(实时率的十分之一甚至更低),适合偶尔使用或仅用于测试。对于日常转写任务,NVIDIA GPU 是强烈推荐的配置。
Whisper 的安装和使用非常简单。安装方式二选一:
pip install -U openai-whisper # 安装稳定版
pip install git+https://github.com/openai/whisper.git # 安装最新版
安装完成后,使用 CLI 转写音频只需一条命令:
whisper audio.mp3 --model turbo
Python API 同样简洁:
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
返回结果包含:text(完整转写文本)、segments(带时间戳的段落列表)、language(检测到的语言)。如果要高级用法,还能逐段提取 log-Mel 频谱、自定义解码选项。
唯一需要额外安装的是 ffmpeg——几乎所有 Linux 发行版都能通过包管理器一键安装。ffmpeg 负责处理各种格式的音频文件(mp3、flac、wav、m4a 等),Whisper 本身不直接读写音频,依赖它作为预处理工具。
作为一个被广泛使用的开源项目,Whisper 的局限性同样值得了解:
幻觉问题(Hallucination):由于训练数据规模庞大且噪声较多,Whisper 有时会"编造"内容——即音频中实际没有说的话,尤其在低资源语言和长音频场景下更为明显。这是弱监督学习的固有问题。
语言性能不均:训练数据中英文占比约65%,因此英语识别效果最好;低资源语言(如某些非洲语言、少数民族语言)准确率明显较低。OpenAI 在论文中承认了这一问题。
重复生成:Transformer 的自回归解码机制可能导致输出重复文字,通过 beam search 和 temperature 调度可以缓解但无法根除。
实时性限制:Whisper 设计为批处理模式(非流式),不支持实时语音识别。官方明确指出,如果要构建实时语音交互应用,需要在 Whisper 之上额外构建流式 pipeline。
版权和隐私争议:OpenAI 坦承,Whisper 的训练数据来自互联网视频,其中可能包含受版权保护的内容。这一问题在发布时就引发了社区讨论。
Whisper 的发布对行业产生了深远影响。它证明了海量弱监督数据能够训练出高质量的通用语音识别模型,这一结论改变了学术界对数据规模和质量的传统认知。
在应用层面,Whisper 正在快速取代收费的云端语音识别 API。大量开发者基于 Whisper 构建了自己的转写工具、播客字幕生成器、会议记录助手、语言学习应用。与此同时,Hugging Face、Replicate、DeepInfra 等平台纷纷上线了 Whisper 的云端推理接口,进一步降低了使用门槛。
据社区不完全统计,Whisper 已被用于转写数亿分钟的音视频内容,其影响力远超 OpenAI 最初的研究预期。