# Overtone

> Open-source captions format, video.js player plugin and CLI that cut word-timed captions for every screen shape from one file.

Overtone is an open-source (MIT) caption toolkit made by Lont. It stores each spoken word once with its time and speaker, then cuts caption lines separately for each screen shape, such as 16:9 and 9:16. The latest release listed is v0.1.0.

## What It Is

Overtone is made of three packages: a `.overtone.json` format, a video.js plugin that displays it, and a CLI that creates it. The CLI can re-cut existing SRT or WebVTT subtitles offline, or transcribe audio and video into captions. The player picks the cut that is closest to the shape of the picture and switches live when the player is resized.

## How the caption pipeline works

For transcription, several engines hear the audio. A transcription model supplies the text, and speech engines such as Azure AI Speech supply word times and speakers. Where the engines disagree, a text vote decides. An LLM editor then corrects names and terms using the supplied context and glossary, labels speakers and marks key words. The LLM never sets timestamps, and code checks the structure of its edits. A versioned rule set then cuts lines per profile. Lines avoid ending on weak words, names and numbers stay together, each speaker gets their own caption, and pauses become breaks.

## Outputs and player

The CLI writes `.overtone.json`, WebVTT and SRT per cut, and a transcript. It can also burn styled captions into an MP4. The video.js 8.5+ plugin offers a CC button, or the `C` key, that cycles off, styled and plain. It ships with five style packs (clean, social, minimal, high-contrast, lumora) and supports custom CSS. The project documents an optional `--local` mode that uses whisper.cpp and Ollama.

## Limits to know

Full line-cutting rules exist for English and Dutch. German, French, Spanish, Italian and Portuguese have language detection, and other languages get neutral rules. In scripts without spaces, a word is a whole phrase. The README lists no translation, no sound tags and no GUI editor, with media up to 2 hours.

## Features
- Single .overtone.json file with one line cut per screen shape (16:9, 9:16 or custom)
- Re-cut existing SRT or WebVTT offline with no API keys
- Transcription from audio and video with multi-engine word timing and speaker labels
- LLM editor that corrects names and terms without setting timestamps
- Reading-rule line cuts that avoid ending on weak words and keep names and numbers together
- video.js plugin with CC button cycling off, styled and plain
- Five style packs plus custom CSS themes
- Export to WebVTT, SRT and plain text
- Burn styled captions into MP4
- Local mode with whisper.cpp and Ollama
- JSON Schema and validator for the format

## Integrations
video.js, OpenAI, Azure OpenAI, Azure AI Speech, ElevenLabs, Anthropic, whisper.cpp, Ollama, ffmpeg

## Platforms
WEB, API, DEVELOPER_SDK, CLI

## Pricing
Open Source

## Version
0.1.0

## Links
- Website: https://overtone.lont.ai/
- Documentation: https://github.com/lonthq/overtone-captions/blob/main/packages/cli/README.md
- Repository: https://github.com/lonthq/overtone-captions
- EveryDev.ai: https://www.everydev.ai/tools/overtone-captions
