PolySub recognises the speech in a video with the model that measured best for that language, builds subtitles that follow professional reading rules, and translates them with Claude. Below is real output it produced for a Japanese clip.
This page plays files PolySub produced on an RTX 4060: the speech models need a GPU, so they can't run in the browser. Audio: 8 sentences from Google's FLEURS benchmark, read by different speakers.
Tap a line to jump to it. English cues have their own timing (Whisper's offline translation); with Claude, translations keep the Japanese timing exactly and any language is possible.
$ python -m polysub demo_ja.mp4 --to ja --format vtt $ python -m polysub demo_ja.mp4 --to en --format vtt
Making this demo found a bug: Whisper skipped sentence 2 in the middle of its 30-second window. PolySub now recognises any detected speech that produced no words a second time, on its own. On 90 FLEURS clips the error rate stayed the same (3.85%), and no text appeared in long silences.
| Language | Clips | Qwen3-ASR-1.7B + aligner | Whisper large-v3 | PolySub uses |
|---|---|---|---|---|
| English (WER) | 90 | 3.8% | 4.2% | Qwen |
| Japanese (CER) | 90 | 5.4% | 4.1% | Whisper |
| Hindi (WER) | 30 | cannot time Hindi | 25.6% | Whisper |
FLEURS dev set. Published benchmarks predicted Qwen for both English and Japanese; the measurement disagreed for Japanese, so PolySub routes Japanese to Whisper.