2026-07-07 04:47:18 +00:00
2026-07-07 04:47:18 +00:00
2026-07-07 04:47:18 +00:00
2026-07-07 04:47:18 +00:00
2026-08-21 17:17:34 +00:00
2026-07-07 04:47:18 +00:00

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

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
Description
Local Whisper-based media transcription service — speech-to-text pipeline with systemd deployment and test suite.
Readme 32 KiB
Languages
Python 89.4%
Shell 10.6%