LockerGnomeTech news and nostalgia for today's technology professionals
Subscribe

Search

Softwarecaptionssubtitlesopen-sourcevideoaccessibility

Overtone, a Free Open-Source Caption Tool, Cuts Separate Captions for Widescreen and Phone Video From One File So Vertical Lines Stop Breaking on 'the'

Overtone stores each spoken word once with its time and speaker, then cuts its own captions for 16:9 and 9:16 from that file, and a single offline command turns a subtitle file you already have into both shapes with no API key and no ffmpeg.

Chris spinning a zoetrope drum with two ribbons of caption-bubbles racing inside, each breaking into neat chunks at different spots as they spin.
Illustration: LockerGnome

Most captions are cut once, for one screen, by filling each line to a character limit. Reuse that wide cut on a vertical phone video and the lines are too long, so they wrap badly, end on filler words, and jam two speakers into one caption. Overtone, a new open-source project from a developer called Lont, treats that as a layout problem and keeps a separate cut per screen shape in a single file.

The file format is the idea. A standard subtitle file, WebVTT or SRT, stores finished cues, so a player can only rewrap what is already there. Overtone’s .overtone.json stores each word once, with its timestamp and speaker, plus any number of “cuts” that point back at those words. The README puts the distinction simply: those formats “store finished cues, so a player can only rewrap them,” while Overtone stores the words and layers the cuts on top.

The cuts follow reading rules rather than a raw character count. Lines avoid ending on weak words, names and numbers stay together, each speaker gets their own caption, and a pause in the audio becomes a line or caption break so a viewer who cannot hear the hesitation still reads it. The project’s own before-and-after, on a NASA interview cut for a narrow 9 screen, shows the filled-to-limit version ending a line on “A” and splitting “joining us” across a caption gap, while Overtone keeps the phrases whole.

The entry point is a single offline command. Point npx overtone-captions recut at an .srt file you already have and it writes the .overtone.json plus horizontal and vertical .vtt and .srt files and a transcript, estimating the word times from the existing cues. That path needs no API key and no ffmpeg, which matters because the tool’s other mode, transcribing a video from its audio, does need ffmpeg and paid speech providers, or a --local flag that runs offline with whisper.cpp and Ollama.

https://github.com/lonthq/overtone-captions

Overtone is careful about what it does and does not replace. It does not claim to beat a hosted speech API at hearing words. The README says engines like WhisperX or a hosted API “give good words and times, often cheaper,” and that overtone recut re-cuts their SRT or WebVTT output, so you keep whatever transcription engine you already trust and add only the layout layer. Its own small benchmark reports that filling lines to the limit ends 28.8 percent of breaks on a weak word, while Overtone’s rule set does that at 0.3 percent.

There is a boundary worth knowing before you lean on it. Full line-cutting and number rules exist only for English and Dutch; a handful of other European languages get detection but neutral rules, and in scripts without spaces, such as Chinese, Japanese, and Thai, a “word” is a whole phrase, so breaks land only between phrases. The honest next question is whether the community fills in per-language rule sets faster than the vertical-video problem spreads to every language that posts to a phone.

More Software

Every Software story →