OpenAI 开源的 Whisper 模型在语音识别领域表现惊艳——支持 99 种语言,在嘈杂环境下依然保持高准确率。更重要的是,它完全可以本地部署,不需要任何 API 调用。本文记录我在本地部署和微调 Whisper 的实践经验。
模型选择
Whisper 提供 5 个规模级别,显存需求和识别质量递增:
- tiny(39M 参数 / ~1GB 显存):适合实时流式场景,个人电脑上推理仅需几十毫秒。
- base(74M / ~1GB):比 tiny 略好,但差距不大。
- small(244M / ~2GB):性价比最高的选择,中文识别准确率显著提升。
- medium(769M / ~5GB):接近 large 的效果,推荐有 GPU 的部署场景。
- large-v3(1.55B / ~10GB):最佳效果,但部署门槛高。
对于中文语音识别,我推荐 medium 起步。small 在专业术语和方言场景下准确性下降明显。
faster-whisper:4 倍加速
原版 Whisper 的推理速度较慢。推荐使用 CTranslate2 后端重写的 faster-whisper:
from faster_whisper import WhisperModel
model = WhisperModel("medium", device="cuda", compute_type="float16")
segments, info = model.transcribe("meeting.mp3", beam_size=5)
for segment in segments:
print(f"[{segment.start:.2f}s] {segment.text}")实测 medium 模型在 RTX 3070 上处理 1 分钟音频约 4 秒——实时率的 15 倍。
微调实战
通用 Whisper 对特定领域的术语(如医学术语、技术缩写)识别不佳。微调可以解决这个问题。我用 HuggingFace 的 transformers 库做 LoRA 微调:只需训练约 0.1% 的参数量,在 200 条标注数据上跑 3 个 epoch 就能看到明显改善。
关键教训:数据预处理比模型调参重要。标注时确保标点符号一致、数字用阿拉伯数字而非中文、去除无意义的填充词("嗯""那个"),这些细节对最终效果的提升远超换个更大的模型。
--- 约 680 字