本地Whisper部署的三个大坑:模型格式、路径配置、模型选择
本地Whisper部署看起来简单,实际踩了三个坑:模型格式不兼容、路径找不到、不知道用哪个模型。花了两天才跑通,我把踩坑过程记录下来,希望能帮到其他人。
坑1:模型格式不兼容——“Invalid model size”
用faster-whisper加载ggml-base.bin,报错:
RuntimeError: Invalid model size
根本原因:
ggml-base.bin是whisper.cpp的模型格式,faster-whisper读不了。虽然都是Whisper,但不同实现用了不同的模型格式,不能混用。
解决方案:
用faster-whisper时,不要用本地文件路径,直接用模型名让它自动下载:
from faster_whisper import WhisperModel
# ✅ 正确:用模型名让faster-whisper自动下载
model = WhisperModel("base", device="cpu", compute_type="int8")
# ❌ 错误:ggml-base.bin是whisper.cpp的格式,faster-whisper读不了
# model = WhisperModel("ggml-base.bin", device="cpu")
坑2:模型文件路径错误——部署后找不到文件
本地开发时,用相对路径加载模型没问题。部署到ECS后,路径找不到,程序崩溃。
根本原因:
本地路径是./models/whisper/,但Docker容器里目录结构变了,相对路径失效。
解决方案:
改用绝对路径或环境变量:
import os
# 方案一:环境变量
model_path = os.getenv('WHISPER_MODEL_PATH', '/app/models/whisper')
# 方案二:基于当前文件路径计算
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
model_path = os.path.join(BASE_DIR, 'models', 'whisper')
# Docker部署时挂载模型目录
# docker run -v /host/models/whisper:/app/models/whisper ...
坑3:用哪个模型?——选型对比
| 模型 | 大小 | 准确率 | 速度 | 适用场景 |
|---|---|---|---|---|
| tiny | ~75MB | 一般 | 极快 | 实时流式 |
| base | ~150MB | 中等 | 快 | 日常测试 |
| small | ~500MB | 较好 | 中等 | 有清晰口音的录音 |
| medium | ~1.5GB | 好 | 慢 | 多人会议、嘈杂环境 |
| large | ~3GB | 最好 | 很慢 | 要求高准确率的场景 |
我的选择:base模型
理由:
-
个人项目服务器只有2核2G,large模型根本跑不动
-
base模型150MB,2G内存能跑,准确率够用
-
如果录音有口音或噪声,可以后续升级到small
踩坑总结:
-
不同Whisper实现的模型格式不互通,搞清楚再用。
-
路径问题在本地可能不出现,部署时一定会遇到,提前用环境变量配置。
-
模型选型要看服务器配置,不要盲目追求大模型。

浙公网安备 33010602011771号