Cue — subtitle re-segmentation 10分の実素材 demo

Break-cost model + constraint-satisfying re-segmenter, shown on ~11 min of self-produced narration.
Numbers are measured on this material with the untrained heuristic scorer.
Material
Profile

What makes a subtitle break "good"?

A caption has to obey a normative profile — a hard rulebook a broadcaster or platform enforces: maximum characters per line, at most two lines, a reading-speed cap (CPS, characters per second), and a min/max time on screen. And it has to break at linguistically natural places: at clause and sentence seams, never in the middle of a word.

Ordinary tools break on length alone. In languages written without spaces (Japanese, Chinese, Thai) that routinely slices a word in half — the single most jarring subtitle error there is.

One bad break (greedy character split, Japanese)

Cue is (1) a small model that scores how unnatural a break would be at each position, and (2) a dynamic program that places breaks to minimise that cost while the hard constraints are removed from the search space — so a valid solution is compliant by construction.

How this demo is built (and why you can trust the numbers)

  • Material: original narration written for this demo (CC0), spoken by macOS say (Samantha / Kyoko). EN 5.26 min · JA 5.74 min · 11.00 min total. No third-party subtitles.
  • The gold subtitle files are hand-authored to the norms before Cue was run. The pipeline strips their breaks to a continuous transcript; the three methods then compete to recover them. SubER = distance from gold; compliance and mid-word rate are objective.
  • Every method uses the repo's unchanged code and its untrained heuristic BreakScorer. These are not the README's sample figures and imply no trained model.
0:00 / 0:00

The same words, the same timeline, three segmenters. Press play — each panel shows the caption that would be on screen now, and the counters tally what has gone wrong so far.

Red ✂ marks a break that falls inside a word. Flags under each caption show that cue's live constraint violations. Counters are cumulative over cues already passed (of total in parentheses).

Reading speed across the whole timeline

Each block is one cue, its width proportional to its duration, coloured by reading speed relative to this profile's cap. Baselines let cues run over the cap (red) or too long on screen (striped). Cue's solver keeps every cue under the cap when the material allows it — evening out the peaks, partly by borrowing idle time from adjacent silent gaps.

≤60% of cap near cap over cap duration out of range │ playhead (when playing)

Measured numbers heuristic version · measured on this demo material

SubER (lower = closer to the gold professional segmentation) is the primary metric. any_violation = fraction of cues breaking at least one hard rule. mid_word = fraction of breaks falling inside a word. Green = best among the three methods; the gold row is the reference.

What Cue is — and is not

Cue is a post-processing stage. It does no speech recognition and no translation: it consumes an existing transcript with timing and re-segments it to respect a profile and break naturally. The guarantee holds whenever a feasible segmentation exists; where speech is faster than the reading cap with no surrounding silence, Cue returns a minimal-violation fallback rather than pretending (visible on the stricter profiles here).

Contact / more work: via the portfolio. This page is a local, self-contained demo — no network calls, no tracking.