openai/whisper
机器学习面向多语言语音识别、翻译和语种识别的通用语音模型,适合开发者与研究者在本地搭建转写流程。
项目介绍
Whisper 是一个基于 Transformer 的序列到序列语音模型,在大规模多样化音频上训练。它把多语言语音识别、语音翻译、语种识别和语音活动检测都表示为解码器需要预测的 token 序列,用单一模型替代传统语音流水线中的多个环节。它适合需要离线语音识别基线、或在 Python 与命令行里接入转写的开发者和研究者。
项目提供 tiny、base、small、medium、large、turbo 六种规模,前四种有仅英文的 .en 版本,large 和 turbo 只支持多语言。README 给出的显存需求大致从 tiny/base 的约 1 GB 到 large 的约 10 GB,turbo 约 6 GB;相对速度是在 A100 上测得的,实际会随语言、语速和硬件明显变化。
安装准备
需要 Python 3.8–3.11、较新的 PyTorch,以及 ffmpeg 命令行工具。安装包和 ffmpeg 的示例:
pip install -U openai-whisper
# Ubuntu / Debian
sudo apt update && sudo apt install ffmpeg
# macOS
brew install ffmpeg
# Windows(Chocolatey)
choco install ffmpeg
如果平台没有 tiktoken 的预编译 wheel,还需要 Rust 环境。若安装报 No module named 'setuptools_rust',可执行 pip install setuptools-rust。想直接跟踪仓库代码,可改用 pip install git+https://github.com/openai/whisper.git。
快速开始
用默认的 turbo 模型转写一个或多个音频文件:
whisper audio.flac audio.mp3 audio.wav --model turbo
在 Python 中完成同样的事:
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
transcribe() 会读取整个文件,按 30 秒滑动窗口逐段做自回归预测。若要做语种检测或单窗口解码,可按 README 的示例依次调用 load_audio()、pad_or_trim()、log_mel_spectrogram()、detect_language() 和 decode()。
翻译与语言选择
转写非英语语音时传入源语言,例如 whisper japanese.wav --language Japanese。要翻译成英语,需使用 turbo 之外的多语言模型:
whisper japanese.wav --model medium --language Japanese --task translate
README 说明 turbo 没有训练翻译任务,即使指定 --task translate 也只会输出原语言。完整语言列表见 whisper/tokenizer.py,全部命令行参数可用 whisper --help 查看。
使用约束
- 大模型需要较多显存;纯 CPU 运行会更慢,也不是 README 的测速场景。
- 不同语言的准确率差异明显,论文附录给出了 WER/CER 和翻译 BLEU 的分项数据。
- 静音或纯音乐片段可能被错误转写为字幕署名等无关文本。2025 年的一次讨论记录了阿拉伯语和中文中的此类现象,评论者多将其归因于训练数据中的非正规字幕 讨论 中文示例 捷克语示例。
- 代码和模型权重采用 MIT 许可证。
HotRepo 点评
在 2026-11-12 的 Python 日榜快照中,项目新增 118 颗 Star,位列该榜第二,说明它在 2022 年发布多年后仍持续被发现。HN 上的讨论对理解它的失效模式比理解热度更有价值:2025 年 7 月关于静音片段幻觉的帖子引来数百条评论和跨语言实例,对需要批处理长录音、且录音中含安静段落的用户是直接提醒。v2 和 v3 的发布帖主要记录版本演进,而非独立基准测试。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。