适用人群:经常要整理会议录音、访谈录音,但对数据出本地有硬要求的人(法务、财务、涉密项目、医院/学校内部会议)。 本文给出一条实测可跑通的路线:不买独显、不租云 GPU、不调用任何在线转写 API,用一台普通办公本把 1 小时录音转成带标点的中文文稿,并把整条链路封装成 WorkBuddy 可复用技能。
在线转写服务便宜、准确率也高,但有两个绕不过去的坎:
本地转写的收益正好相反:一次装好,永久免费,数据不出机器。代价是要接受"慢一点"——而慢是可以靠流程消化的(后面讲)。
核心结论先给:
small 够用;对外正式纪要,上 medium 或更大。large 系列会让 1 小时录音跑到几小时,性价比崩掉。一个经验数字:1 小时中文录音,small int8 在中端 CPU 上大约 15~30 分钟出稿。所以正确姿势是"丢进后台,干别的活,回来取稿"。
不要把依赖装进系统 Python,装坏了很难收拾。建一个独立虚拟环境:
python -m venv .venv-stt
# 激活(Windows)
.venv-stt\Scripts\activate
# 激活(macOS / Linux)
source .venv-stt/bin/activatepip install faster-whisper首次运行会自动下载模型权重(几百 MB 到 1 GB 级,取决于档位)。模型缓存目录记得指到大容量盘,别塞满系统盘:
# 用环境变量指定缓存位置(示例目录,请替换成你自己的路径)
set HF_HOME=<你的模型缓存目录>新建 transcribe.py,核心就几行:
# transcribe.py —— 本地语音转写(CPU / int8)
import sys
from faster_whisper import WhisperModel
audio = sys.argv[1] # 输入音频路径
model_size = sys.argv[2] if len(sys.argv) > 2 else "small"
model = WhisperModel(model_size, device="cpu", compute_type="int8", cpu_threads=8)
segments, info = model.transcribe(
audio,
language="zh",
vad_filter=True, # 静音切分,长录音必开
vad_parameters=dict(min_silence_duration_ms=500),
beam_size=5,
initial_prompt="以下是普通话会议记录,请使用简体中文与正确标点。",
)
with open(audio + ".txt", "w", encoding="utf-8") as f:
for seg in segments:
f.write(f"[{seg.start:7.1f} → {seg.end:7.1f}] {seg.text.strip()}\n")
print("done ->", audio + ".txt")三个参数值得解释:
vad_filter=True:自动跳过静音段。会议录音里静音可能占到三四成,开了它等于白捡加速。initial_prompt:中文场景的准确率开关。它会让模型倾向输出简体中文和标点,显著减少"中英混排""全文无标点"的毛病。cpu_threads:设成物理核心数(不是超线程数)通常最快,设太大反而因调度开销变慢。一条命令批量跑完:
for f in ./audio/*.m4a; do python transcribe.py "$f" small; done如果是长会议,建议按录音文件并行度设为 1(一次跑一个),避免 CPU 抢占导致风扇狂转、单任务都变慢。
把上面的流程写成一个 skill(技能),约定触发短语,例如"本地转写""音频转文字"。之后只要把音频丢进指定目录、说一句话,WorkBuddy 就会:
这一步是整条链路的关键:脚本负责稳定,技能负责编排。脚本只管"给定音频出文本",技能负责排队、命名、异常上报,两者解耦,换项目不用重写。
initial_prompt,加上就行。vad_filter,并且不要一次性把整个音频读进内存自己切分,交给引擎分段处理。cpu_threads,并保证进风口不被遮挡;长时间批处理建议插电运行。initial_prompt 换成该领域的提示句(例如"以下是医疗病例讨论"),比换更大模型更划算。维度 | 在线转写 | 本地 CPU 转写 |
|---|---|---|
数据流向 | 上传第三方 | 全程不出本机 |
单次成本 | 按分钟计费 | 0 |
速度 | 快(分钟级) | 慢(约 1:0.3~0.5) |
长期可用性 | 依赖服务与配额 | 一次装好,长期可用 |
真正省的不是那点转写费,而是不用再为一段录音纠结"该不该上传"。
对数据敏感的团队,本地转写的正确姿势不是"追求最快",而是把慢的那部分丢进后台批处理:选 faster-whisper + int8 + vad_filter,把流程封装成 WorkBuddy 技能,一句话触发、结果自动归档。装一次,用很久。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。