录音转文字不想传云端?本地 Whisper 完整教程:CPU 就能跑,听写全免费(2026)

上个月整理播客录音,我差点把两小时的音频传到某个在线转写平台。手停在回车键上,忽然想到:这些内容里有公司项目名和同事的名字,凭什么给别人的服务器处理?

后来我在自己电脑上用 Whisper 跑完了全部转写。不花钱,不出门,断网也能跑。这篇文章把三条路线一次讲清,你照着做就能跑通。

Whisper 是什么来头

Whisper 是 OpenAI 在 2022 年开源的语音识别模型。代码和模型权重都用 MIT 协议,官方 README 写得明白,商用没有法律障碍。

它能做的事不止转写:多语言语音识别、语音翻译、语言识别,三样都行。中文识别是它的强项之一,普通话的准确率相当能打,带口音的也有不错的表现。

模型分好几个尺寸,最小 tiny 只有 39M 参数,手机都能跑;最大 large 有 1550M 参数,官方还提供了一个 turbo 版本,是 large-v3 的优化版,速度约 8 倍,精度损失很小,显存需求约 6 GB。

路线一:whisper.cpp,纯 CPU 也能跑

这是我个人最推荐的方案,尤其适合没有独显的机器。

whisper.cpp 是社区用纯 C/C++ 重写的 Whisper 推理实现,无依赖,编译完一个可执行文件就能跑。重点是它对量化支持很好,模型压到 4 bit 之后,普通笔记本 CPU 跑 medium 模型都不吃力。量化是什么,之前写过一篇讲 GGUF 文件名的入门文章,原理相通。

项目在 GitHub 上叫 ggml-org/whisper.cpp,我写这篇时看了一眼,54,000 多 star,最新版本 v1.9.5 是 2026 年 10 月 6 日发的,维护非常活跃。

跑起来就三步:

# 1. 拉代码并编译
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build
cmake --build build --config Release

# 2. 下载模型(bash 脚本自动下)
bash ./models/download-ggml-model.sh small

# 3. 转写
./build/bin/whisper-cli -m models/ggml-small.bin -f录音.wav -l zh

Mac 用户有额外福利:whisper.cpp 支持 Metal 加速,M 系芯片跑起来速度很可观。Linux 和 Windows 就靠 CPU 硬扛,small 模型的速度完全可接受。

它还有个内置的 HTTP server 示例(examples/server),起个本地服务,其他应用就能通过接口调它转写。

路线二:faster-whisper,Python 党首选

如果你日常写 Python,或者想批量处理一堆音频文件,faster-whisper 更顺手。

它是 SYSTRAN 用 CTranslate2 框架重做的实现,官方声称比 openai/whisper 原版快 4 倍,显存占用也更省。GitHub 上 25,900 多 star,最新版 v1.2.1。

安装就一行:

pip install faster-whisper

批量转写脚本的骨架长这样:

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cpu", compute_type="int8")

segments, info = model.transcribe("会议录音.mp3", language="zh")
for seg in segments:
    print(f"[{seg.start:.1f}s -> {seg.end:.1f}s] {seg.text}")

没有 GPU 就把 device 设成 cpu,compute_type 用 int8 量化,8GB 内存的机器跑 large 模型也没问题。有 N 卡的话把 device 换成 cuda,速度直接起飞。

它返回带时间戳的分段,做字幕、做会议纪要都方便。输出逐段打印,你可以边跑边看进度。

路线三:浏览器里直接跑,不装任何东西

whisper.cpp 的 examples 目录里有个 whisper.wasm,把模型编译成 WebAssembly,浏览器打开网页就能转写。音频不出你的浏览器,连本地服务器都不用过。

适合两种场景:一是想先试试效果再决定装不装,二是用公司电脑没权限装软件。缺点是浏览器里跑大模型慢,推荐用 tiny 或 base 模型先体验。

同一目录下还有 stream.wasm,做实时听写用,对着麦克风说话实时出字。

模型怎么选:一张表说清

官方 README 给的参数和资源对照(速度倍数是官方声明,以 large 为 1x 基准):

模型 参数量 显存需求 相对速度
tiny 39 M 约 1 GB 约 32x
base 74 M 约 1 GB 约 16x
small 244 M 约 2 GB 约 6x
medium 769 M 约 5 GB 约 2x
large 1550 M 约 10 GB 1x
turbo 809 M 约 6 GB 约 8x

我的建议:中文转写从 small 起步,不满意再上 medium 或 turbo。tiny 和 base 只适合英文或者先跑通流程。

实际用下来的几点体感

中文识别的整体准确率让我满意,日常对话和播客基本不用改。专有名词是重灾区,人名、产品名、行业黑话,错得比较多,转写完要通读一遍。

标点符号时有时无,whisper.cpp 的默认输出偶尔一整段没有一个逗号,建议搭配它的最大长度参数切分,或者转写后用文本处理补。

长音频记得先切段。超过半小时的录音,用 ffmpeg 按 5-10 分钟切片再喂进去,出错好排查,中断也不心疼。

什么情况还是该用云端

说句公道话,本地方案不是万能的。如果你的音频噪音大、说话人多的会议,或者需要说话人分离(谁在什么时候说了什么),云端的付费转写服务处理得更好,它们专门优化了这些场景。

本地跑的价值在于:隐私敏感的内容、高频大量的常规转写、以及没网的环境。三条路线按你的机器和习惯选就行,折腾一次,之后转写就是免费的。

本地跑模型这件事,之前写过本地和云端怎么选的分析,语音模型和语言模型的取舍逻辑是相通的。完全不想碰命令行的话,LM Studio 那类图形界面工具是另一个入口,不过它主要面向聊天模型,语音还是本文的方案更直接。

发表评论