侧边栏壁纸
  • 累计撰写 37 篇文章
  • 累计收到 2 条评论

用Python本地跑Whisper转写音频的随手笔记

2026-9-22 / 0 评论 / 7 阅读

用Python本地跑Whisper转写音频的随手笔记

昨天整理上周的项目会录音,不想给在线转写工具充会员,又怕涉密内容传上网有风险,翻了翻之前存的Whisper仓库,没花多久搭了个本地转写的小脚本,用着还顺手,记下来免得下次忘。

装依赖的时候别踩ffmpeg的坑

之前第一次装的时候只装了whisper包,跑起来直接报找不到解码器,折腾半天才想起要装ffmpeg,对应系统的安装命令直接抄就行:

pip install openai-whisper
# Mac用户直接用brew装
brew install ffmpeg
# Windows用scoop的话更省事,没装scoop的去官网下个ffmpeg二进制加环境变量也成
scoop install ffmpeg

核心代码真的没几行

我这边没搞那些花里胡哨的界面,就几行核心逻辑,跑起来直接出文本:

import whisper

# 模型选small就够用,第一次运行会自动下载,不用手动找资源
model = whisper.load_model("small")
# 替换成你自己的音频路径,mp3、m4a、wav格式都支持
result = model.transcribe("work_meeting.m4a", language="zh")

# 把转写结果存成txt文件
with open("会议转写草稿.txt", "w", encoding="utf-8") as f:
    f.write(result["text"])
这里提一句,一定要加language="zh"这个参数,我之前没加的时候,模型自动识别语言偶尔会把普通话片段混进粤语或者英语的识别结果,转写速度也会慢不少。这个我还没细测更大参数的模型,反正small模型我这台不带独显的轻薄本跑一小时音频,速度大概能接受,也没卡到不能用,别上来就下large模型,占不少空间不说,没好显卡的话跑起来真的遭罪。

要是需要带时间轴的转写结果,也不用额外装东西,直接遍历segments字段就行:

# 需要时间轴的话直接跑这段就行
for segment in result["segments"]:
    start = round(segment["start"], 1)
    end = round(segment["end"], 1)
    print(f"[{start}s - {end}s] {segment['text']}")

我这边试了下,会议室录的带点空调背景音的音频,转写出来的内容大概顺一遍改改专有名词就能用,全程离线跑,完全不用担心录音内容漏出去。对了,音频要是太嘈杂的话可以先随便找个工具降噪下,转写效果会好不少。

反正这几行代码存着,下次再有转写需求直接掏出来用,省得找在线工具还要等广告、传文件。后面有空了整个拖拽就能跑的小GUI,到时候再补记录。

评论一下?

OωO
取消