Whisper 本地转写 2026

📘 教程 2026-08-13 · 更新于 2026-11-03 约 8 分钟阅读

云端转写按分钟计费,音频还得先上传。Whisper 系列模型本地跑完全免费,但选错分支、算力类型或参数,速度能差出一个数量级。这篇给能直接跑的配置和六个真实坑。

📜 目录

Whisper 本地转写 2026:不依赖云端的开源语音转文字

云端转写按分钟计费,音频还得先上传到别人的服务器。本地转写把这两件事都解决了:文件不出机器,跑多少小时都是电费。

Whisper 是这条路的事实标准,但直接用原版在 CPU 上慢到没法用。2026 年的现实是三个项目分工:原版做参考,faster-whisper 做生产,whisperX 做带时间戳和说话人分离的精细场景。

三个选择,别选错

项目 底层 优势 什么时候用
openai/whisper PyTorch 原版 文档最全,行为最接近论文 对照实验、复现结果
faster-whisper CTranslate2 重实现 同精度下快数倍,CPU 可用,内存占用低 默认选择,批量转写
whisperX faster-whisper + 对齐 词级时间戳、说话人分离 做字幕、多人会议记录

十分钟跑通 faster-whisper

pip install faster-whisper
# 需要 ffmpeg 解码音频,Windows 装完要把 bin 目录加进 PATH
from faster_whisper import WhisperModel

model = WhisperModel("small", device="cpu", compute_type="int8")

segments, info = model.transcribe(
    "meeting.mp3",
    language="zh",          # 明确指定,别让它猜
    vad_filter=True,        # 静音段直接跳过,防幻觉
    beam_size=5,
)

for s in segments:
    print(f"[{s.start:7.1f} → {s.end:7.1f}] {s.text}")

segments 是生成器,边解码边出结果,长音频不会一次性吃满内存。

要输出 SRT,自己写十几行就够:

def fmt(t):
    h, m, s = int(t // 3600), int(t % 3600 // 60), t % 60
    return f"{h:02d}:{m:02d}:{s:06.3f}".replace(".", ",")

with open("out.srt", "w", encoding="utf-8") as f:
    for i, s in enumerate(segments, 1):
        f.write(f"{i}\n{fmt(s.start)} --> {fmt(s.end)}\n{s.text.strip()}\n\n")

模型档位与算力类型

模型 参数量(约) 相对速度 质量 建议
tiny 39M 最快 只能听个大概 只用于草稿或关键词检索
base 74M 很快 一般 快速验证流程
small 244M 中等 中文可读 CPU 上的默认起点
medium 769M 慢 明显更好 GPU 或愿意等
large-v3 1.55B 最慢 最好 GPU,正式交付

compute_type 决定速度和显存的平衡:

取值 硬件 说明
float16 GPU 默认,速度快
int8_float16 GPU 省显存,质量损失很小
int8 CPU CPU 上的首选
float32 CPU 慢,一般不必

显存大致量级:medium 在 GPU 上占 2-4GB,large-v3 占 4-6GB,随 beam size 和并发变化。CPU 上内存主要被模型本身占用,int8 量化后 small 约 0.5GB。

六个真实会踩的坑

1. 中文输出繁体字。 Whisper 的中文输出常常是繁体,这是模型训练数据导致的,不是配置错。两个办法:转写时给 initial_prompt="以下是普通话的句子,请用简体中文输出。",或转完后用 OpenCC 统一转简体。后者更可靠。

2. 指定语言比自动检测好。 自动检测要额外解码一段音频,短片容易误判成粤语或日语。已知语种就写死 language="zh"。

3. 静音段产生幻觉。 没有语音的段落,模型有时会凭空输出"谢谢观看""字幕由某某提供"。开 vad_filter=True 基本能压住。

4. 长音频复读。 同一句话被反复输出,是解码上下文串了。设 condition_on_previous_text=False 断开跨段依赖,代价是段间连贯性略降。

5. 专有名词错。 人名、产品名、术语几乎必错。用 initial_prompt 把这些词写进去,等于给模型一个词表。

6. GPU 版报 cuDNN/cuBLAS 错。 CTranslate2 对 CUDA 和 cuDNN 版本敏感,装完 CUDA 还要单独装匹配的 cuDNN。图省事就先跑 device="cpu", compute_type="int8",速度未必不能接受。

速度与成本

一小时会议音频,在普通笔记本 CPU 上用 small + int8 大致接近实时或稍慢,跑完要一杯咖啡的时间;同一条音频在云端按分钟计费,还要上传几十到上百 MB。

真正的差别不在钱,在合规:法务、医疗、HR 的录音走云端要过数据协议,本地转写是"允许处理"和"不许出机器"的区别。

常见问题

Q:能不能做到比实时更快? A:GPU 上可以,large-v3 配 float16 通常快于实时;CPU 上很难,除非用小模型。

Q:多人会议怎么区分说话人? A:faster-whisper 本身不做分离,用 whisperX(带 diarization 流程),或额外接 pyannote 一类的说话人分离模型。

Q:能转写视频吗? A:能,ffmpeg 支持的容器都能解,直接传 mp4 即可,音频轨会被抽出来。

Q:中文标点准吗? A:Whisper 自带标点,整体可读,但长句断句和引号经常要人工过一遍。正式交付前留出校对时间。

Q:有没有不用 Python 的方案? A:有,whisper.cpp 是 C++ 实现,编译后单个二进制可跑,适合塞进桌面工具或嵌入式设备。

注:模型体积、显存与速度为量级参考,随硬件、量化方式和音频长度变化;安装依赖以 faster-whisper 官方文档为准。

相关文章

延伸阅读 · 含推广链接

跑通原型和长期挂着跑是两件事。按量计费起一台,用完释放,不用为闲置的机器付整月。

看按量计费价格 →

相关文章
2026-07-23
机器学习管道图:ML组件可视化指南
2026-07-23
机器学习流水线 GitHub:2026年顶级开源仓库
2026-07-26
本地大模型硬件要求
2026-07-21
LocalAI 安装指南 2026:在自己的硬件上运行开源AI模型
2026-08-01
免费在线AI编程助手:7款浏览器工具
2026-08-11
上下文学习详解2026:模型如何不训练就从示例学习

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论