我平时制作视频比较多。以前把 Screen Studio 导出的录屏导入剪映,用自带的 AI 字幕功能转写,每次处理完都会发现不少错别字。
遇到产品名称和技术名词时,识别错误尤其明显。比如我说 Grok 4.6,它经常被识别成 Grok 46;我说 Claude,会被识别成表示云朵的单词 Cloud。虽然剪映提供了搜索和批量替换功能,但识别出来的英文经常大小写混杂,我每次都要逐条去翻找、核对和确认,花掉大量时间手动修改。
为了解决字幕不准的问题,我尝试过很多语音识别模型,测试下来发现它们的基础准确度差别并不大。对于产品名称或者专有名词,单靠语音模型做单次转写,很难做到完全准确。既然单一模型的识别能力有上限,我就把它改成了一套系统性的纠错流程:先通过语音模型把基础文字识别出来,再通过多层机制进行二次纠错。
我把这套流程做成了开源 Skill oil-subtitle,把整个字幕处理分成了四层。
四层字幕生成与纠错流程
第一层是基础语音转写。这里调用阿里云百炼平台上的 FunAudio 模型,把视频里的音频转换成初始文字。
第二层是语义检查与错词库纠错。流程里维护着一个错词库,专门记录容易识别错误的固定词汇。AI 会对转写出的字幕做语义分析,一旦判断当前内容命中了错词库里的词,就会自动完成替换,在纯文本层面完成第一次纠错。
第三层是多模态画面检查。如果遇到错词库里没有收录的新名词,系统会调用多模态模型 Qwen3.7-Flash 辅助确认。它会按照时间轴,提取对应时间点附近的 3 到 4 帧视频画面,识别画面中出现的文字。
比如我在视频里介绍 oil-subtitle-skill-ppt 这个 Skill 时,视频画面顶部正好显示了这个名称。多模态模型抓取到画面上的文字后,就能确认当前正在讨论的具体术语,进而把语音识别错误的字幕修正过来。
第四层是字幕烧录与视频导出。所有纠错步骤执行完毕之后,系统把最终确认的字幕烧录进视频,导出完整的视频文件。
网页预览与错词库自动同步
字幕生成并完成自动纠错之后,Skill 会提供一个本地网页预览界面。
页面的左侧可以实时查看视频播放和字幕的实际显示效果,右侧展示完整的字幕列表。点击列表里的任意一行,播放器会快速跳转到对应的时间点;双击列表文本,就可以直接编辑内容。
如果 AI 纠错之后仍然有个别遗漏,或者想微调格式(比如在英文单词与中文之间补充空格),可以直接在网页里修改并保存。确认没有问题后,再让 AI 执行最终的视频烧录。
在保存的过程中,Skill 会根据我们的修改行为做进一步判断:如果只是调整了空格或标点,系统不会记录;但如果发现我们把一个识别错误的词改成了正确词汇,它会自动把这组映射关系收录进错词库。这样在下一次处理新视频时,系统就会自动应用这套词汇规则,避免同一个技术名词反复识别出错。
自动添加底部进度条
除了字幕识别与纠错之外,这个 Skill 还有一个辅助功能:自动为视频添加底部进度条。
针对时长超过 3 分钟的视频,Skill 会自动计算并在视频底部渲染进度条。如果某些视频不需要显示进度条,也可以在配置项里直接关闭这个选项。
安装与使用方式
如果想使用这套字幕流程,可以直接访问开源仓库 oil-subtitle,或者在我的个人网站 oiloil.org 的 Skill 页面「内容与创作」分类里找到它。把 GitHub 仓库链接提供给自己的 Agent,就可以让 Agent 完成安装。
后续需要为视频添加字幕时,只需要把视频文件或路径发给 Agent,对它说「帮我加字幕」,Agent 就会自动按照 FunAudio 语音转写、错词库纠错、Qwen3.7-Flash 画面多模态检查、生成网页预览以及最终烧录的完整流程来执行。
