Goal: generate word-level captions from speech — the caption component (3 modes) exists but words are 100% manual.
Design: authoring-time tooling, subprocess-first like ffmpeg (no heavy build deps): rustmotion captions voice.mp3 -o words.json [--model base] [--lang fr] auto-detects a whisper.cpp CLI (whisper-cli / main), requests word timestamps, emits CaptionWord JSON; clear install hint when absent. Plus offline importers: --from-srt/--from-vtt (no external tool). 2-3 TikTok-style caption presets (word-pop scale, per-word background pill) on the existing component.
Out of scope: bundling whisper models; streaming.
Acceptance: SRT→CaptionWord conversion unit-tested; whisper path integration-tested behind detection (skipped when binary absent); new caption styles pixel-tested.
Verify: cargo test --workspace
Goal: generate word-level captions from speech — the caption component (3 modes) exists but words are 100% manual.
Design: authoring-time tooling, subprocess-first like ffmpeg (no heavy build deps):
rustmotion captions voice.mp3 -o words.json [--model base] [--lang fr]auto-detects a whisper.cpp CLI (whisper-cli / main), requests word timestamps, emits CaptionWord JSON; clear install hint when absent. Plus offline importers:--from-srt/--from-vtt(no external tool). 2-3 TikTok-style caption presets (word-pop scale, per-word background pill) on the existing component.Out of scope: bundling whisper models; streaming.
Acceptance: SRT→CaptionWord conversion unit-tested; whisper path integration-tested behind detection (skipped when binary absent); new caption styles pixel-tested.
Verify: cargo test --workspace