Tags: GeiserX/audio-transcode-watcher
Tags
feat: add Whisper local transcription fallback for lyrics (#5) When syncedlyrics providers find no lyrics, fall back to local Whisper transcription to generate timestamped .lrc files from the audio itself. - Lazy-loads Whisper model on first use (configurable: tiny/base/small/medium/large) - Converts Whisper segments to LRC format with timestamps - New config options: whisper_fallback (default: true), whisper_model (default: base) - 13 lyrics tests (4 new for Whisper fallback) - Bump to v0.4.0
feat: auto-fetch synced lyrics via syncedlyrics (#3) Add automatic .lrc lyrics fetching for audio files during processing: - New lyrics.py module extracts artist/title from embedded metadata (mutagen) or filename, then queries syncedlyrics providers (Musixmatch, LRCLIB, NetEase) - Integrated into process_source_file() before sync_sidecars() - New fetch_lyrics config option (default: true) to enable/disable - 9 new tests with 88% coverage on lyrics module Dependencies added: mutagen>=1.47.0, syncedlyrics>=1.0.0 Version bump to 0.3.0.
fix: use extension-only check for deleted/moved file cleanup (#1) The watcher's on_deleted and on_moved handlers called is_audio_file() which checks os.path.isfile() - always False for files that no longer exist on disk. This meant real-time cleanup of output files never triggered when a source was deleted or renamed. Add has_audio_extension() that checks only the file extension without requiring the file to exist, and use it in the watcher handlers for paths that are no longer on disk. The periodic sync (every 5 min) already caught orphans as a fallback, but this fix enables immediate cleanup on deletion events.
v0.1.2 - **fix: cleanup stale temp files from interrupted encodes on startup** - Adds automatic cleanup of `.tmp__ff` files left behind when ffmpeg is interrupted (e.g., container restart, crash). Called automatically at the start of initial_sync, ensuring missing files are re-encoded.
PreviousNext