whisper.cpp:在本地把音轨转成SRT或VTT,再交给剪辑软件

为什么值得关注
提供从本地录音到标准字幕文件的明确出口,并说明翻译、人物与时间戳的功能边界。
适合谁:能使用命令行,希望在本地批处理录音字幕的作者与开发者。
这次有哪些亮点
- whisper-cli可明确输出SRT、VTT与文本文件
- 中文应选多语言权重并指定中文或自动检测
- 编译、下载权重与实际本地推理是不同阶段
使用前需要知道
识别与时间边界需人工听校;translate目标是英语,diarize并非通用人物识别;模型大小与后端决定实际速度,不能保证任意设备实时。
剪辑软件需要SRT或VTT,而你手上只有一条录音,whisper.cpp提供一个明确的本地出口:加载Whisper权重,转写音轨,再按参数导出字幕文件。它是ggml社区维护的C/C++推理实现,不是OpenAI云端API,也不需要把基础推理请求发送给远程服务。
官方CLI说明列出output-srt、output-vtt和output-txt等导出参数。标准字幕文件才是这里关注的交付物;终端里能看到一段文字,和剪辑软件已经能导入文件,是两个不同状态。
官方快速示例用base.en识别jfk.wav,适合展示权重下载、编译和转写的连续关系,但base.en是英语版本。中文任务应选择不带.en后缀的多语言模型,例如base或small,并按实际音频指定zh或自动检测。不能只把官方示例的输入文件换成中文,就认为默认英语权重和语言参数会自动变成多语言方案。
准备音频时,建议先转成单声道16kHz、16位PCM WAV。当前仓库快速开始与CLI格式提示在支持范围上有差异,不同构建还可能启用FFmpeg解码;统一成这类WAV可以减少容器和编码差异,不能把某个额外构建的MP3支持当作所有二进制的保证。视频则先抽取音轨,再处理字幕。
在已完成编译、准备好 models/ggml-base.bin 多语言权重的前提下,可按官方参数组织这条中文录音示例(未运行):
./build/bin/whisper-cli -m models/ggml-base.bin -f output.wav -l zh -osrt -of recording
-osrt 选择SRT,-of recording 指定不含扩展名的文件名;完成后应检查 recording.srt 是否实际生成,再导入剪辑软件。换成 -ovtt 则选择VTT。文件有了以后,还应听校专名、数字与起止位置,不能把命令无报错等同字幕可交付。
需要英文译文时也别误读参数。translate的目标是英语,不是任意语言互译;原中文转写和英文翻译应按不同任务保存。CLI里的diarize针对立体声音频,tinydiarize还需要对应tdrz模型,都不能概括成自动识别所有发言人的姓名。普通多语言Whisper权重也不会因为打开一个选项就拥有通用声纹识别。
时间戳方面,SRT段落边界不等于逐字字幕。官方另有词级与DTW相关参数,使用条件与准确性仍需验证。若为了字幕好读而合并、删除或改写文字,起止时间也应重新检查;尤其背景音乐、长静音或含糊口语,识别结果可能需要较多人工修订。
部署分为编译程序、准备权重和推理三步。仓库支持CPU及多种GPU后端,Apple Silicon有专门优化,但启用哪个后端取决于构建方式。小模型更易运行,也可能牺牲识别表现;较大模型增加资源需求。不要把某台设备的演示速度写成所有电脑的实时承诺。首次准备依赖与模型需联网,真正离线时应使用本地文件并做断网检查。
whisper.cpp采用MIT,所用官方Whisper上游也提供MIT许可;另加模型、VAD组件、解码库或封装程序仍应分别确认条款。音轨的处理和发布权限也不会由软件许可代替。
它适合愿意使用命令行、需要本地字幕文件并能保留听校步骤的流程。把输出文件接进剪辑软件只是制作中段,断句、阅读速度和关键内容仍由编辑最后把关。
资料:CLI导出参数、仓库快速开始、实现许可、Whisper上游许可。
以上为编辑整理,功能、许可与使用条件以官方说明为准。