1.6 KiB

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. Scanindexer 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

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)
  • ffmpeg for audio probing/extraction