多模态 OCR(Vision Language Model OCR)
用视觉语言大模型直接"看图识字",不只提取字符,还能理解文档结构和语义。
OpenAI 开源的自动语音识别系统,支持 99 种语言,本地运行无需联网。
内容摘要
Whisper 是 OpenAI 于 2022 年开源的**自动语音识别(ASR, Automatic Speech Recognition)**模型。用一句话概括:给它一段音频,它还你一段文字。支持 99 种语言,能自动判断你说的是什么语言,还能把任意语言的语音翻译成英文文本。
Whisper 是 OpenAI 于 2022 年开源的**自动语音识别(ASR, Automatic Speech Recognition)**模型。用一句话概括:给它一段音频,它还你一段文字。支持 99 种语言,能自动判断你说的是什么语言,还能把任意语言的语音翻译成英文文本。
与调用云端 API 不同,Whisper 可以完全在本地运行——音频不出你的电脑,隐私有保障。它基于 68 万小时的多语言音频数据训练,开箱即用,不需要针对特定场景做微调就能达到不错的准确率。
| 要素 | 作用 |
|---|---|
| 模型规模(Model Size) | 提供 tiny 到 large 共 5 档,小模型快但准确率低,大模型慢但准确率高 |
| Mel 频谱图(Mel Spectrogram) | 把原始音频转换成模型能理解的"图片"格式,是编码器的输入 |
| 任务标记(Task Token) | 通过特殊标记切换"转录"和"翻译"两种模式,一个模型干两件事 |
Whisper 提供 5 种预训练模型,参数量从 3900 万到 15.5 亿不等。选哪个取决于你的硬件条件和对速度/准确率的要求:
| 模型 | 参数量 | 英文 WER | 显存需求 | 适用场景 |
|---|---|---|---|---|
| tiny | 39M | ~12% | ~1 GB | 快速测试、实时场景 |
| base | 74M | ~8% | ~1 GB | 日常使用、入门推荐 |
| small | 244M | ~6% | ~2 GB | 准确率和速度的平衡点 |
| medium | 769M | ~5% | ~5 GB | 对准确率有要求的生产环境 |
| large-v3 | 1550M | ~3% | ~10 GB | 最高准确率,多语言表现最佳 |
WER(Word Error Rate,词错误率):数值越低越好。large-v3 是 2023 年底发布的最新版本,相比 large-v2 错误率降低了 10%~20%。2024 年 10 月还推出了 large-v3-turbo 变体,把解码器从 32 层压缩到 4 层,速度提升 5.4 倍,准确率接近 large-v2。
人耳对声音频率的感知是非线性的——对低频敏感,对高频不敏感。Mel 频谱图就是按照人耳的这种特性,把音频从"声波"转换成一张"热力图"。Whisper 的编码器读取的就是这张图,而不是原始音频数据。
转换过程:原始音频 → 重采样到 16kHz 单声道 → 切成 30 秒片段 → 计算 Mel 频谱图(80 个频率通道)→ 送入编码器。
Whisper 用一个模型同时支持"转录"和"翻译"两个任务,靠的是在解码器输入前插入特殊标记:
<|transcribe|>:把语音转成原语言文字(比如中文语音 → 中文文字)<|translate|>:把语音翻译成英文文字(比如中文语音 → 英文文字)这种设计避免了为每个任务训练单独的模型。
音频先变成 Mel 频谱图,编码器从中提取语音特征,解码器根据任务标记(转录/翻译)逐词生成最终文本。
安装:
# 安装 Whisper(Python 包名是 openai-whisper)
pip install openai-whisper
# 必须安装 FFmpeg(音频解码依赖)
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# Windows(用 Chocolatey)
choco install ffmpeg
最小可运行示例(基于 openai-whisper==20240930 验证,截至 2026-03):
import whisper
# 1. 加载模型(首次运行会自动下载,base 约 140MB)
model = whisper.load_model("base")
# 2. 转录音频文件(支持 mp3、wav、m4a、flac 等格式)
result = model.transcribe("your_audio.mp3")
# 3. 获取结果
print(f"识别语言: {result['language']}")
print(f"识别文本: {result['text']}")
# 4. 查看带时间戳的片段
for seg in result["segments"][:3]:
print(f"[{seg['start']:.1f}s - {seg['end']:.1f}s] {seg['text']}")
预期输出:
识别语言: zh
识别文本: 大家好,今天我们来聊一聊人工智能的基础知识。
[0.0s - 2.8s] 大家好,
[2.8s - 5.2s] 今天我们来聊一聊
[5.2s - 8.0s] 人工智能的基础知识。
指定语言和任务模式:
import whisper
model = whisper.load_model("base")
# 转录模式:中文语音 → 中文文字
result = model.transcribe("chinese_audio.mp3", language="zh", task="transcribe")
print(result["text"]) # 输出中文
# 翻译模式:中文语音 → 英文文字
result = model.transcribe("chinese_audio.mp3", task="translate")
print(result["text"]) # 输出英文
命令行方式(不写代码也能用):
# 基本转录
whisper your_audio.mp3 --model base
# 指定语言 + 输出 SRT 字幕文件
whisper your_audio.mp3 --model base --language zh --output_format srt
| 维度 | Whisper | Google Speech-to-Text | faster-whisper | Vosk |
|---|---|---|---|---|
| 核心定位 | 开源本地 ASR 模型 | 云端商业 ASR 服务 | Whisper 的 CTranslate2 加速版 | 轻量级离线 ASR |
| 部署方式 | 本地运行 | 云端 API | 本地运行 | 本地运行 |
| 语言支持 | 99 种 | 125+ 种 | 与 Whisper 相同 | 20+ 种 |
| 速度 | 一般 | 快(云端算力) | 比 Whisper 快 4 倍 | 快(模型小) |
| 准确率 | 高(large-v3 WER ~3%) | 很高(WER ~1%) | 与 Whisper 相同 | 中等 |
| 隐私保护 | 音频不出本地 | 需上传云端 | 音频不出本地 | 音频不出本地 |
| 费用 | 免费(自备硬件) | $0.006/分钟起 | 免费 | 免费 |
核心区别:
补充:OpenAI 于 2025 年 3 月推出了基于 GPT-4o 的 gpt-4o-transcribe 和 gpt-4o-mini-transcribe 转录模型,准确率超过 Whisper,但属于付费云端 API 服务,不开源。
| 误区 | 准确理解 |
|---|---|
| Whisper 能做实时语音识别 | Whisper 的设计是接收完整音频后一次性处理,不支持原生流式输入。社区方案(如 faster-whisper 的分块处理)可以实现低延迟转录,但不是真正的流式 ASR |
| 模型越大越好,直接上 large | base 或 small 模型已能满足大多数场景。large-v3 需要 10GB 显存且速度慢很多,性价比不一定高 |
| Whisper 转录结果完全可信 | 研究发现 Whisper 存在"幻觉"问题——在静音或噪声段可能生成不存在的文字内容。关键场景(法律、医疗)需人工复核 |
| 优势 | 劣势 |
|---|---|
| 完全开源免费,本地运行保护隐私 | 不支持原生流式识别,实时场景需要额外工程 |
| 99 种语言开箱即用,无需微调 | 大模型(large)对硬件要求高,需要 GPU |
| 一个模型同时支持转录和翻译 | 存在幻觉问题,静音段可能生成虚假文本 |
| 社区生态丰富(faster-whisper、whisper.cpp 等) | 长音频处理需要分片,否则内存压力大 |
参考答案:
根据场景选择:
核心原则:先用 base 跑通流程,再根据实际准确率需求决定是否升级。大模型不等于最优选择,还要考虑推理速度和硬件成本。
参考答案:
生产环境推荐 faster-whisper。原因:
原版 Whisper 适合研究、实验和快速原型验证;faster-whisper 适合对吞吐量和成本有要求的生产部署。
参考答案:
幻觉(Hallucination)指 Whisper 在静音、噪声或非语音片段中生成不存在的文字内容。研究表明,约 80% 的转录结果中存在不同程度的幻觉。
缓解方法:
no_speech_threshold(默认 0.6)和 logprob_threshold(默认 -1.0),过滤低置信度片段优先展示同分类且标签更接近的内容,方便继续串联学习。
用视觉语言大模型直接"看图识字",不只提取字符,还能理解文档结构和语义。
用于系统化测量 LLM/Agent 系统输出质量与行为可靠性的指标体系和方法论
开源 AI 可观测性平台,基于 OpenTelemetry 提供 LLM 应用的 Tracing、评估和 Prompt 管理。