我每天用 WorkBuddy 产出十几条 60–90 秒口播脚本,每条都有现成的逐字稿。但到了剪映剪辑这一步,字幕还是得一句句手动敲——一条 90 秒视频,字幕大概 8–12 句,手敲 + 对齐时间轴,轻松耗掉 20 分钟。一天十几条就是好几个小时,纯机械劳动。
后来想通了:逐字稿里已经有全部文本,缺的只是时间轴。中文朗读语速相对稳定(约 4 字/秒),按字数估算每句时长,再叠加成时间轴,就能自动生成标准 SRT。剪映支持直接导入 SRT,导入后字幕块自动排好,我只需微调个别卡点。这一下把字幕环节从 20 分钟压到 1 分钟。
📸[截图位置:剪映里手动一句句敲字幕的时间轴界面,对比说明「为什么要用脚本」]
环节 | 输入 | 工具 | 输出 |
|---|---|---|---|
① 准备稿件 | 口播逐字稿 .md | 文本编辑器 | 规范格式稿 |
② 生成字幕 | 规范稿 | WorkBuddy 跑 Python | xxx.srt |
③ 导入剪映 | .srt 文件 | 剪映「导入字幕」 | 时间轴字幕块 |
④ 微调发布 | 字幕 + 视频 | 剪映 | 成片 |
核心思路:用「字数 × 语速」估时长,替代「人工逐句卡点」。估出来的时间是近似值,剪映里拖一下就能对齐,但骨架已经帮你搭好。
不需要复杂格式,只要保证每一句单独成行、用句末标点结尾即可。示例 脚本/今日口播.md:
脚本会跳过 # 开头的标题行和空行,只把正文句子抽出来做字幕。
📸[截图位置:WorkBuddy 文件区,展示口播稿 .md 与即将生成的 .srt 并列的界面]
纯标准库(re / sys / os / datetime),复制即用。脚本做三件事:抽正文句子 → 按字数估算时长 → 叠加成 SRT 时间轴。
关键点:用 utf-8-sig 读稿(兼容 Windows 记事本 BOM),用 re.split 的「后顾断言」按句末标点断句,保证一句字幕就是一句完整话。
📸[截图位置:在 WorkBuddy 终端运行 python md2srt.py 脚本/今日口播.md 后的输出「已生成 脚本/今日口播.srt,共 N 条字幕」]
把脚本存成 md2srt.py,放好口播稿,运行:
生成的 今日口播.srt 用记事本打开,是标准的「序号 → 时间轴 → 文本」三段式:
剪映里点「文本 → 识别字幕 → 导入文件」,选中这个 .srt,字幕块就按时间轴排好了。我一般只花 1 分钟把某几句拖到口语停顿处对齐,比从头敲快了一个数量级。
📸[截图位置:.srt 文件用记事本打开,展示「序号/时间轴/文本」三段式结构] 📸[截图位置:剪映导入字幕后的时间轨预览,字幕块与口播对齐]
坑 1:时间轴进位错乱。 一开始用字符串拼时分秒,累计超过 60 秒时分钟没进位,字幕时间全乱。 → 解法:放弃手算,统一用 timedelta 累加,最后用一个 fmt() 函数集中做「毫秒→时:分:秒,毫秒」格式化,进位交给标准库,零出错。
坑 2:标题行和空行混进字幕。 稿子里 # 书名 和换行被当成字幕,剪映里蹦出奇怪的「书名」字幕。 → 解法:读取时 startswith('#') 直接跳过,空行 if not line 跳过,再用 re.sub(r'[*>#]','',line)` 剥掉 markdown 符号,只留纯文本。
坑 3:一句太长卡满屏幕。 有的口播稿一行写了 40 字,生成一条超长字幕,手机上看要换行两行、阅读吃力。 → 解法:在 sentences_from_md 里按 。!?; 切分,让每句字幕天然短小;如果某句仍超 25 字,可在稿子里主动加标点断句,脚本会跟着切。
坑 4:估算时长不准。 4 字/秒是均值,激情口播会更快、慢述会更慢,导入后部分句对不齐。 → 解法:把 CPS 和 PAUSE 提成脚本顶部常量,按你自己的语速实测调(录一段数字数算真实语速);且时间轴本就是「初版骨架」,剪映里拖拽微调 10 秒搞定,不影响省时大逻辑。
WorkBuddy 支持把任务设成定时自动化。我可以建一个「每日字幕生成」:每天脚本产出后自动跑 md2srt.py,把 .srt 推到对话里,我剪辑时直接拿去剪映导入。这样「脚本产出 → 字幕生成 → 剪辑微调」形成流水线,字幕环节彻底零手敲。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。