受够了竖屏字幕的“反人类断行”?这款开源神器Overtone,让你的视频字幕横竖屏都完美!缩略图
DISCOVER SOMETHING GOOD

Overtone Captions

Overtone 将每个口语词存储一次,包括其时间和说话者,并为每种画面形状单独剪切字幕:默认 16:9 和 9:16,或你指定的任何宽高比。一个 CLI 从你的字幕、音频或视频制作该文件。一个 video.js 插件显示适合播放器的剪切版本。

GitHub 仓库
支持平台
Windows, macOS, Linux

做视频分发的小伙伴,大概率都经历过这种“强迫症发作”的瞬间:

你精心做好了一个 16:9 的横屏视频,字幕排版漂漂亮亮。结果当你把它发到抖音、视频号或 YouTube Shorts(9:16 竖屏)时,字幕的断行彻底崩了——

一行字硬生生断在“the”或者“of”后面;两个不同说话人的台词被挤在了同一行;原本横屏两行能显示完的句子,在竖屏里变成了遮天蔽日的“四行大字”,直接挡住了画面主体。

为了解决这个问题,很多人只能苦哈哈地做两版字幕,或者在剪辑软件里手动一行行调。

今天,必须给你安利一款堪称 “字幕界降维打击” 的开源神器——Overtone。它不仅能帮你生成字幕,更能让你的字幕在任何屏幕比例下,都保持最优雅、最符合人类阅读习惯的排版。

受够了竖屏字幕的“反人类断行”?这款开源神器Overtone,让你的视频字幕横竖屏都完美!插图

1. 魔法断行:告别“按字数硬切”

传统的字幕工具(甚至很多 AI 字幕工具),断行逻辑非常简单粗暴:数够 20 个字符,或者到了屏幕边缘,直接“咔嚓”切断。这就导致了大量反人类的“弱词断行”。

Overtone 引入了一套版本化的语义断行规则集:

  • 绝不断在弱词上:行尾绝对不会出现“the”、“of”、“and”等悬空词。
  • 保持语义完整:人名、数字、专有名词会被死死绑在一起,绝不拆分。
  • 尊重说话人与停顿:每个说话人拥有独立的字幕行;哪怕是 0.5 秒的微小停顿,也会被识别为换行点,让观众有喘息的空间。

看看这组来自 NASA 采访的对比,治愈感拉满:

传统工具(硬切到长度限制)Overtone(智能语义断行)
the 2004 class. Jim, thank you for joiningJim, thank you for joining us.
us. It’s great to be here, Allard. Thanks.It’s great to be here, Allard. Thanks.
through you? Okay. A little about me: IOkay. A little about me:
grew up in Eugene, Oregon. I joined theI grew up in Eugene, Oregon.
I joined the Astronaut Corps

2. 底层格式革命:为什么不用 SRT 或 WebVTT?

你可能会问,既然只是排版好看点,我手写 SRT 不行吗?

Overtone 的野心不止于此。传统的 SRT 或 WebVTT 存储的是 “已经排好版的句子(Prompt)”,播放器只能傻乎乎地按原样显示,遇到屏幕变窄,就只能粗暴地重新换行。

Overtone 创造了一种全新的 .overtone.json 格式。

它的核心逻辑是:将每个“词”及其“时间戳”和“说话人”只存储一次。 然后,在生成文件时,它为 16:9、9:16 甚至你自定义的任何比例,单独计算并存储一套“剪切(Cut)”方案。

在前端,配合官方的 video.js 插件,播放器会根据当前窗口的宽高,自动调用最适合的那套字幕剪切方案。一次转录,多端完美自适应!

3. AI 工作流:LLM 纠错,但绝不碰时间轴

现在用 AI 生成字幕最怕什么?大模型喜欢“幻觉”,经常把时间轴搞乱,或者自作主张地修改原话。

Overtone 设计了一套极其严谨的“听审与投票”流水线:

  1. 多引擎听写:同时调用 OpenAI、Azure AI Speech 甚至 ElevenLabs 进行识别。
  2. 文本投票:遇到识别不一致的地方,切片交给 LLM 重新听并挑选最准确的词。
  3. LLM 上下文纠错:利用 LLM 的世界知识修正专有名词(比如把听错的“Telecom Cell”自动修正为印尼电信巨头“Telkomsel”),并标记说话人。
  4. 🛡️ 铁律:LLM 绝不碰时间戳。每个词的时间戳死死绑定在底层语音引擎返回的数据上,代码只检查 LLM 修改的文本结构,彻底杜绝了 AI 字幕“音画不同步”的绝症。

4. 抄作业时间:极客与创作者怎么用?

Overtone 提供了极其强大的 CLI(命令行)工具,无论你是想处理已有字幕,还是从头生成,都只需一行命令。

场景 A:我已经有 SRT 字幕了,想重新排版

不需要 API,不需要 ffmpeg,纯离线重新计算排版:

npx overtone-captions recut my_video.srt

瞬间生成 .overtone.json 以及适配横屏/竖屏的 .vtt 和 .srt 文件。

场景 B:从音视频直接生成完美字幕

支持调用云端 API,也支持完全本地离线运行(使用 whisper.cpp + 本地 Ollama):

# 预估成本(不实际发送)
overtone transcribe talk.mp4 --language en --context "关于城市骑行的圆桌派" --dry-run

# 本地离线运行(保护隐私,零成本)

overtone transcribe talk.mp4 --language en --local

场景 C:前端开发者集成
在你的 Web 播放器中引入 video.js 插件,加载 .overtone.json,还能套用官方提供的 5 种绝美样式包(clean、social、minimal 等):

import videojs from 'video.js';
import 'videojs-overtone';
import 'videojs-overtone/themes/clean.css';

videojs('my-video').overtone({ src: 'talk.overtone.json' });

5. 避坑与局限性提示

虽然 Overtone 极其强大,但在使用前也需要了解它的边界:

  • 语言支持:目前最完美的语义断行和数字规则针对英语和荷兰语。中、日、韩等没有空格的文字,它会将“整个短语”视为一个词,换行只能在短语之间进行。
  • 功能聚焦:它专注于“转录、排版和校对”,不支持翻译,也不会生成 [音乐]、[掌声] 等声音标签。
  • 时长限制:目前处理的媒体文件最长支持 2 小时。

无论你是需要批量处理短视频的自媒体人,还是追求极致体验的前端开发者,这个开源项目都值得你立刻 Star 并试玩。

GOOD TOOLS ARE BETTER TOGETHER

分享到社交平台

微微博QQQ 好友☆QQ 空间XX↗Telegram

复制链接后,也可以粘贴到微信或其他社交平台。