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
- Scan —
indexerwalks the media directory, probes each video (duration, size), and records which files are already transcribed - Transcribe — the
workerpulls pending files, sends audio to a local Whisper server, and saves transcripts next to the source - Continuous — a loop mode keeps the library up to date as new media arrives
Commands
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:
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) ffmpegfor audio probing/extraction
Description
Local Whisper-based media transcription service — speech-to-text pipeline with systemd deployment and test suite.
Languages
Python
89.4%
Shell
10.6%