什么是 Whisper?
Whisper 是 OpenAI 开源的一个通用的自动语音识别(ASR)模型。它在大量的多语言和多任务监督数据上进行了训练,能够以极高的准确率将音频转换为文本。

核心特性
Whisper 不仅仅是一个简单的听写工具,它具备多种强大的能力:
- 多语言识别:支持包括中文、英文、日文等在内的多种语言识别。
- 语音翻译:能够将任意支持的非英语语音直接翻译并转录为英语文本。
- 鲁棒性强:在嘈杂环境、不同口音和背景音乐下依然表现出色。
- 时间戳对齐:可以输出词级别的时间戳,方便制作字幕。
模型架构深度解析
Whisper 采用了标准的 Transformer 架构(类似于 seq2seq 模型)。
- 输入处理:音频被重采样为 16,000 Hz,然后分割成 30 秒的片段,并转换为对数梅尔声谱图(log-Mel spectrogram)。
- 编码器(Encoder):由两个卷积层开始,随后是正弦位置嵌入和一系列 Transformer 编码器层。
- 解码器(Decoder):根据编码器的输出和之前的 token,预测下一个文本 token。它使用特殊的 token 来指示任务(如
<|transcribe|>或<|translate|>)、语言(如<|zh|>)以及是否需要时间戳。
这种多任务训练方式使得 Whisper 能够在一个模型中同时处理各种语音识别任务。
模型规格
OpenAI 提供了多种不同大小的模型,以适应不同的需求场景:
| 模型 | 参数量 | 显存需求 (约为) | 速度 (相对) |
|---|---|---|---|
| tiny | 39 M | ~1 GB | ~32x |
| base | 74 M | ~1 GB | ~16x |
| small | 244 M | ~2 GB | ~6x |
| medium | 769 M | ~5 GB | ~2x |
| large | 1550 M | ~10 GB | 1x |
注:中文识别建议使用 small 或更大的模型以获得较好的准确率。
进阶使用指南
除了基本的转录,你还可以指定语言和任务。
命令行工具
安装 Whisper 后,你可以直接在命令行使用:
# 自动检测语言并转录
whisper audio.mp3
# 指定为中文
whisper audio.mp3 --language Chinese
# 将中文语音翻译成英文文本
whisper audio.mp3 --language Chinese --task translate
Python 高级调用
import whisper
model = whisper.load_model("medium")
# 配置解码选项
options = {
"language": "zh", # 强制指定中文
"task": "transcribe",
"beam_size": 5,
"best_of": 5
}
result = model.transcribe("audio.mp3", **options)
print(f"识别结果: {result['text']}")
# 打印分段带时间戳的结果
for segment in result['segments']:
print(f"[{segment['start']:.2f}s -> {segment['end']:.2f}s] {segment['text']}")
总结
Whisper 的出现极大地降低了高精度语音识别的使用门槛。它不仅开源免费,而且在准确率上能够媲美甚至超越商业收费的 API。无论是为视频生成字幕、会议记录转写,还是构建实时的语音交互应用,Whisper 都是一个极佳的选择。