Skip to content

WordAlign 2.2.1

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Oct 04:35
· 2 commits to main since this release
7804053

Subtitles you can deliver. Every run writes <name>_final.srt: every word and tag of the transcript, laid out by subtitling rules and timed the way a reviewer finishes a job -- in sync with the speech first, the other rules as far as the speech allows.

Upgrade notes (behaviour changes)

  • Cues now start with their first word and run on to the next cue across short pauses; a fast short sentence keeps its own cue even under --min-cue-ms. --no-sync-starts, --chain-gap-ms 0 and --lead-out-ms 0 bring back the 2.2.0 timing.
  • _sentence_level.srt (and VTT/ASS) carry the speech only; the editor's tags are in _final.srt (and _combined.srt with --tags).

Added

  • <name>_final.srt on every run — the deliverable, written after the combined file: every word and every [tag] of the transcript in order, within the layout and timing rules, checked when it is written (summary in the log, details under final_check in the job manifest, warnings for anything left). See The final SRT in the user guide.

  • Subtitle line-break rules for English (wordalign/linebreak.py): subject + verb, auxiliaries, phrasal verbs, verb + object pronoun, names and titles, numbers and units stay together; breaks prefer sentence ends, then clause punctuation, then conjunctions and prepositions.

  • Timing in a reviewer's style (measured on a finished, human-reviewed job): cues start with their first word (--no-sync-starts lets a short cue start earlier to reach --min-cue-ms), run on to the next cue across pauses up to 1 s (--chain-gap-ms), and linger 250 ms after a longer pause (--lead-out-ms). A short sentence keeps its own short cue instead of being joined to its neighbour; the final check lists those as "kept in sync" rather than as failures. Sync with the audio comes before the duration and reading-speed rules everywhere: overlap fixes and boundary moves never push a cue's start past its first word.

  • The review queue flags cues next to a sound tag (words under applause or laughter are often mistimed). wordalign-bench fit-triage also finds a finished file named <name>*reviewed*.srt, and counts only real fixes (changed words, moved starts, ends cut before the words were over) -- not cues cut differently or left on screen longer.

Changed

  • Sound tags never overlap speech. The transcript's [tag] lines are placed in the pause where the editor put them (timed by a matching sound event, cut back to the pause), or share the neighbouring cue when the pause is too short. _combined.srt and _audio_tags.srt use the same placement, and an input SRT's tags are kept too.
  • _sentence_level.srt (and VTT/ASS) carry the speech only; tags are in the final and combined files. The review queue and _corrected.srt follow the final cues.
  • Transcript lines too long for --max-lines × --cpl, or on screen longer than --max-duration-ms, are split at their best break instead of being left as one long line; cues never merge past the duration limit.
  • Short and fast cues use the free time after them and can move a boundary to a better word; with --no-sync-starts they may also start early, borrow a few ms from a neighbour or join it. Every cue keeps at least 1 ms from the next.
  • Cue boundaries that split a phrase are moved to a cleaner word nearby, or to punctuation within the same two cues; a boundary at a sentence end is never moved.
  • A [tag] line inside a sentence ("but in" / [chuckles] / "a tornado.") stays inline where the editor put it; a tag between sentences gets a cue of its own filling its pause (down to 0.5 s), timed by a matching sound event when there is one.

Fixed

  • The WhisperX worker finds the alignment model in the models folder or its hub/ subfolder (it only looked in the first).
  • A transcript line that is only punctuation (a closing quote on its own line) no longer gives a cue a guessed start; it joins the word before it.
  • A broken-off quote ("I don't--") ends a sentence, so the next sentence starts a new cue.