OpenAI 开源的 Whisper 模型在语音识别领域表现惊艳——支持 99 种语言,在嘈杂环境下依然保持高准确率。更重要的是,它完全可以本地部署,不需要任何 API 调用。本文记录我在本地部署和微调 Whisper 的实践经验。

模型选择

Whisper 提供 5 个规模级别,显存需求和识别质量递增:

对于中文语音识别,我推荐 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 字