openai / whisper
openai/whisper
通过大规模弱监督实现稳健的语音识别
项目概览
项目概述
Whisper 是 OpenAI 开源的通用语音识别模型,基于大规模弱监督数据训练。它能够处理多语言语音识别、语音翻译和语言识别,并采用 Transformer 序列到序列架构,将多种语音任务统一为 token 预测过程。
核心功能
- 多语言语音识别
- 语音翻译(将非英语语音翻译成英语)
- 口语语言识别
- 语音活动检测(VAD)
- 提供
tiny、base、small、medium、large、turbo等模型尺寸,其中部分有英文专用版本 - 支持通过 CLI 输出 JSON、文本、字幕等多种格式(含词级时间戳)
适用与不适用场景
- 适用:语音转写、字幕生成、非英语语音的英语翻译、语言识别等。
- 不适用:
turbo模型未针对翻译任务训练,不适合用于语音翻译。 - 仓库资料未提供流式低延迟识别、生产级并发部署等场景的详细说明,需要自行验证。
技术架构与依赖
- 模型:Transformer sequence-to-sequence
- 训练框架:PyTorch
- 依赖:OpenAI tiktoken(快速 tokenizer)、ffmpeg(音频解码)、可选 Rust(用于 tiktoken 编译)
- Python 兼容性:3.8-3.11(开发环境使用 Python 3.9.9 / PyTorch 1.10.1)
安装与快速开始
安装命令:
pip install -U openai-whisper
需要安装 ffmpeg,例如 Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
如果 tiktoken 没有预编译 wheel,需要安装 Rust。若提示缺少 setuptools_rust,可执行:
pip install setuptools-rust
CLI 快速开始:
whisper audio.flac audio.mp3 audio.wav --model turbo
典型使用方法
CLI 示例:
# 指定语言转录
whisper japanese.wav --language Japanese
# 翻译成英语(使用 multilingual 模型,而非 turbo)
whisper japanese.wav --model medium --language Japanese --task translate
Python 示例:
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
低级 API 示例(语言检测与 decode):
import whisper
model = whisper.load_model("turbo")
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels).to(model.device)
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)
print(result.text)
配置与部署要点
- 模型选择需考虑 VRAM 和速度:
tiny/base约 1GB VRAM,large约 10GB VRAM,turbo约 6GB VRAM 且速度约为large的 8 倍(基于 A100 英语转写测试)。 turbo不适用于翻译任务;翻译请使用tiny、base、small、medium、large等多语言模型。transcribe()使用 30 秒滑动窗口进行自回归解码。- 可通过
--output_format选择输出格式,支持带词级时间戳的字幕生成。 - CHANGELOG 提到新增
initial_prompt随滑动窗口传递、支持 Python 3.13、迁移到 pyproject.toml、torch.load使用weights_only=True等配置与安全更新。
限制、风险与许可证
- 许可证:MIT License(代码和模型权重)。
turbo模型不能用于翻译任务。- Whisper 在不同语言上的表现差异较大,具体 WER/CER 数据见论文和模型卡。
- 已知的重复/幻觉问题在更新中持续修复;加载模型时也需注意安全更新(如
weights_only=True)。 - 仓库资料未提供关于偏见、隐私或伦理评估的详细说明。
官方链接
- GitHub 仓库:https://github.com/openai/whisper
- 博客:https://openai.com/blog/whisper
- 论文:https://arxiv.org/abs/2212.04356
- Model card:https://github.com/openai/whisper/blob/main/model-card.md
- Colab 示例:https://colab.research.google.com/github/openai/whisper/blob/master/notebooks/LibriSpeech.ipynb
信息来源和分析时间
- 来源:GitHub README、CHANGELOG.md、最新 Release v20250625。
- 分析时间:基于最新发布 v20250625(2025-06-26 发布)进行整理。