# Media Transcriber A local media transcription service that indexes a video library and transcribes it with a local Whisper server. Designed to run unattended on a home server. > Personal tooling project — works for my own media library, not packaged for general use. ## How It Works 1. **Scan** — `indexer` walks the media directory, probes each video (duration, size), and records which files are already transcribed 2. **Transcribe** — the `worker` pulls pending files, sends audio to a local Whisper server, and saves transcripts next to the source 3. **Continuous** — a loop mode keeps the library up to date as new media arrives ## Commands ```bash python mt.py scan # (re)index the media library python mt.py transcribe # process all pending videos once python mt.py continuous # run the worker in a loop python mt.py status # show library/transcription stats ``` ## Project Structure | Path | Description | |------|-------------| | `mt.py` | CLI entry point | | `src/indexer.py` | Library scanning and indexing | | `src/worker.py` | Transcription worker (one-shot and continuous) | | `systemd/` | `media-transcriber.service` and `whisper-server.service` units | | `setup.sh` | Initial environment setup | ## Deployment Install the systemd units for an unattended setup: ```bash sudo cp systemd/media-transcriber.service systemd/whisper-server.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now whisper-server media-transcriber ``` ## Requirements - Python 3.10+ - A running Whisper server (see `systemd/whisper-server.service`) - `ffmpeg` for audio probing/extraction