- Fixed --skip-existing in multi-format mode (--format srt,text) to check
ALL format outputs before skipping, not just the first one
- Fixed --no-timestamps conflict check to include lrc, ass, ttml formats
(all require timing info, same as srt/vtt/tsv)
- Fixed --speaker-names silently doing nothing without --diarize; now
prints a clear warning
- Batch summary now shows skipped file count when --skip-existing is
active: Done: 8 files (3 skipped), ...
Bumps version to 1.5.1
- setup.sh --check: replace full pyannote.audio import with
importlib.util.find_spec + metadata version lookup; avoids
30-60s CUDA init, check now completes in ~12s
- skill.json: move ffmpeg from requires.bins to optionalBins;
ffmpeg not needed for basic transcription since PyAV handles
decoding (only needed for --burn-in, --normalize, --denoise,
--channel, --export-speakers)
- CHANGELOG.md + SKILL.md: document both fixes
- fix(clean-filler): remove_filler_words() now also filters seg['words'], so
--max-chars-per-line / --max-words-per-line subtitle formatters (SRT/VTT/ASS/TTML)
correctly omit filler words; previously only seg['text'] was cleaned
- fix(clean-filler): add leading/double-comma and orphaned-comma cleanup
(e.g. ',,' → ',', ',?' → '?') to prevent punctuation artifacts
- fix(search): fuzzy match now checks individual word tokens so short queries
like 'wrld' correctly match 'world'; also adds multi-word phrase fallback
- fix(detect-language-only): clean up URL-downloaded temp dirs before exit;
continue processing remaining files on error instead of exiting immediately
Pre-import onnxruntime at startup with stderr redirected to /dev/null,
so the harmless [W:onnxruntime:Default, device_discovery.cc:211] warning
about missing /sys/class/drm/card0/device/vendor is silenced before any
real output begins. Subsequent lazy imports (Silero VAD) hit the cache.
docs(skill): add missing ASS/LRC/HTML trigger phrases and batch chapters caveat
- Add 'ASS subtitles', 'aegisub format', 'LRC subtitles', 'timed lyrics',
'HTML transcript', 'confidence-colored transcript' to trigger phrases
- Note that --chapters-file takes a single path and overwrites in batch mode
When --format srt,text is used with a single file and -o <path> (no
trailing slash, directory doesn't exist yet), the code was falling
through to the file-path branch and writing all formats to the same
file. Fix: treat output as directory whenever multiple formats are
requested and the path has no extension.
Also expand SKILL.md agent guidance with explicit 'only add when' rules
for all new v1.5.0 features (--clean-filler, --channel, --max-chars-per-
line, --detect-paragraphs, --speaker-names, --hotwords, --prefix,
--detect-language-only, --stats-file, --parallel, --retries, --burn-in,
--keep-temp, --output-template, multi-format), and update output format
relay guidance to cover ASS, LRC, multi-format, stats, and language
detection.
All features added in this session (formerly labeled v1.7.0–v1.13.0 and
the prior v1.10.0 CHANGELOG entry) are now a single v1.5.0 release.
Versions corrected:
- SKILL.md: 1.13.0 → 1.5.0
- skill.json: 1.10.0 → 1.5.0
- CHANGELOG.md: collapsed all intermediate versions into [1.5.0]
Going forward: only bump version when explicitly asked.
- Expand 'When to Use' with: podcast RSS, language-map, search, chapters,
speaker export, CSV output, batch ETA
- Add trigger phrases for all new features (search, chapters, TTML,
speaker export, CSV, podcast, language-map)
- Rewrite 'Agent guidance' section with per-feature rules for all flags
added since v1.5: search, chapters, speaker export, language-map, RSS,
filter-hallucinations, merge-sentences, output format relay guidance
- Add 'Output format for agent relay' guidance: when to show output to
user directly vs write to -o file
- Add chapter stdout separator: '=== CHAPTERS (N) ===' header so agents
can distinguish chapter list from transcript text
- Expand tags: add podcast, chapters, search, csv, ttml, batch
- --format csv: spreadsheet-ready output with header row (start_s,end_s,text);
proper RFC 4180 quoting via stdlib csv module; adds speaker column when diarized
- --language-map MAP: per-file language override for batch mode via fnmatch
glob patterns; inline ('*.mp3=en,*.wav=fr') or JSON file ('@map.json');
parallel mode uses copy.copy(args) for thread safety
- Batch ETA: sequential batch jobs show [N/total] filename | ETA: Xm Ys
before each file; computed from avg time/file * remaining files;
printed to stderr so OpenClaw surfaces it to users in real time
Bumps version to 1.13.0
- --format ttml: W3C TTML 1.0 (DFXP) broadcast-standard subtitle format
compatible with Netflix, Amazon Prime, BBC; supports speaker labels and
--max-words-per-line
- --search TERM: search transcript for keyword and print matching segments
with timestamps; --search-fuzzy for approximate matching
- --detect-chapters: auto-detect chapter breaks from silence gaps between
segments; configurable via --chapter-gap (default 8s); three output
formats (youtube/text/json); --chapters-file to save to file
- --export-speakers DIR: after --diarize, export each speaker's audio turns
as separate WAV files using ffmpeg aselect filter; respects --speaker-names
Bumps version to 1.12.0
- Auto-disable condition_on_previous_text for distil-* models (HuggingFace rec.)
to prevent repetition loops with the default distil-large-v3.5 model
- Add --condition-on-previous-text override flag to opt back in
- Add --log-level flag (debug/info/warning/error) for library log control
- Clarify ffmpeg is optional: only needed for --burn-in/--normalize/--denoise
(PyAV bundled with faster-whisper handles basic audio decoding)
- Add --hotwords, --prefix, --revision examples to Quick Reference table
- Update distil model table note about auto-disable behaviour
- Update SKILL.md to v1.8.0
- wav2vec2 alignment runs automatically whenever word timestamps are needed
- --precise kept as hidden backward-compat alias for --word-timestamps
- Simpler UX: fewer flags, same result
- Alignment now triggers for --word-timestamps, --precise, --diarize, --min-confidence
- --precise becomes shorthand for --word-timestamps (both get alignment)
- No overhead for basic transcription (alignment only runs when words needed)
- Update SKILL.md: document auto-alignment behavior, simplify agent guidance
- Add --precise flag for wav2vec2 forced alignment (~10ms word accuracy)
- Uses torchaudio MMS model (multilingual, 1000+ languages)
- Model cached across files for efficient batch processing
- Runs before diarization when both flags used (improves speaker assignment)
- Auto-enables word timestamps when --precise is set
- Graceful fallback: segments with unsupported chars keep original timestamps
- Install torchaudio alongside torch in setup.sh
- Update SKILL.md with --precise documentation and agent guidance
- Add --format srt/vtt for subtitle output (word timestamps auto-enabled)
- Add --diarize for speaker identification via pyannote.audio
- Add URL/YouTube auto-download via yt-dlp
- Add batch processing with glob patterns, directories, multiple files
- Add --initial-prompt to condition model with domain terminology
- Add --min-confidence to filter low-confidence segments
- Add --skip-existing for resumable batch workflows
- Add performance stats (duration, processing time, realtime factor)
- Unify output format under --format flag (text/json/srt/vtt)
- Keep --json as hidden backward-compatible alias
- Update setup.sh with --diarize flag for optional pyannote install
- Comprehensive SKILL.md rewrite with new features documented
- skill.json: added requires.bins (python3, ffmpeg) and platforms field
- SKILL.md: updated metadata key from moltbot to openclaw
- Bumped version to 1.0.5