RIST.shRIST.sh
BlogProjectsDownloadsThoughtsAboutContact

Stay in the loop

Get notified about new posts and updates.

Connect

RistArchitect@gmail.com

RIST.sh

Systems that run: trading engines, security tooling, AI agents and self-hosted infrastructure, documented as case studies.

© 2026 RIST.sh. All rights reserved.

HomeProjectsAudio & Video-to-Text Converter
AArchitect7 min readMay 26, 2026

Audio & Video-to-Text Converter

Self-hosted YouTube-to-text pipeline — faster-whisper runs on a home GPU inside Docker, callable from any laptop on the LAN. Own your transcripts, no API fees, no rate limits, 99+ languages.

ActiveSolo architectStarted Feb 2026
Stack
Python 3faster-whisperFastAPIUvicornNVIDIA CUDA 12Dockeryt-dlpffmpeg
Audio & Video-to-Text Converter

Transcripts are how recorded talk becomes searchable knowledge. Public APIs do that job well — until the audio is privileged, the transcript is sensitive, or the monthly bill arrives. A consumer GPU and a Docker container do the same work, and the audio never leaves the local network.

The problem it solves

Commercial transcription APIs (OpenAI's Whisper API, AssemblyAI, Rev, Deepgram) charge roughly $0.36–$1.80 per hour of audio. A researcher or journalist processing 20–40 hours per week of interview, podcast, or video content pays $400–$2,800 per month in transcription fees alone — and every recording travels to a third-party server before returning as text.

For anyone handling privileged material — legal interviews, executive coaching sessions, confidential research footage, OSINT video collection, internal meeting recordings — that round trip is either a contract violation or a compliance landmine. Cloud-only providers also impose hard rate limits, file-length caps (most cut off at 25–30 minutes per call), and queue delays. The standard local alternative is running Whisper on a CPU, which works but takes 45–60 minutes to transcribe a 1-hour podcast on consumer hardware — slow enough to break real workflows.

Who needs this most

  • Independent journalists and researchers processing 10+ hours per week of interviews who can't legally upload sources to a cloud provider and can't afford to wait an hour per recording for CPU-only Whisper.
  • OSINT analysts and intelligence operators archiving YouTube and other public video content for ideology, narrative, or behavioral research — where the URL backlog grows faster than any paid API can drain.
  • Solo founders and small-team operators with a Ryzen + NVIDIA home-lab box who want a daily-driver transcription rail without paying $400+ per month for a SaaS subscription stack.

The moment this hurts: 11 PM, four hour-long interviews queued, the deadline is morning, and this week's API spend has already hit the cap.

The solution — in plain terms

Whisper Local turns a single GPU laptop or desktop into a transcription server that any other machine on the home or office network can call. The server runs faster-whisper — the highest-accuracy open Whisper variant — inside a Docker container that auto-starts with the host. A separate bash client downloads YouTube audio, converts it to the format Whisper expects, sends it to the server, and saves the result as a timestamped text file in an outputs folder.

Day-to-day this is one command: ./yt_transcribe.sh --url <link>. The script handles the Python venv setup, dependency installation, audio extraction via yt-dlp, the 16 kHz mono 16-bit WAV conversion, and the HTTP call to the server. From the operator's side, paste a URL, get a transcript. No subscription, no API key, no upload to anyone else's infrastructure.

The server exposes a simple HTTP surface — POST /inference, GET /health — compatible with the whisper.cpp server protocol, so any existing tooling that knows how to talk to a whisper.cpp server (curl, Python requests, third-party clients) drives this one unchanged.

Value delivered — what you get

  • Replaces $400–$2,800/month in transcription API fees — at 20–40 hours of audio per week, the system pays for itself in days against any SaaS pricing tier.
  • Removes the third-party data-handling risk entirely — privileged audio (legal, medical, executive coaching, OSINT) never crosses the LAN. The transcript file lands on the operator's disk.
  • Cuts a 1-hour podcast to a 6–12 minute transcription run — GPU acceleration on a laptop NVIDIA card does the same work as a cloud GPU.
  • Lifts cloud rate-limit and 25-minute file caps — Whisper internally chunks audio at 30-second windows, so the server handles 5–8 hour files in a single call with no manual splitting.
  • Covers 99+ languages including Ukrainian and Indonesian — both of which mid-tier paid APIs handle poorly or charge premiums for.
  • Auto-restarts with Docker and survives host reboots — once configured, the server is invisible infrastructure. The operator only ever interacts with the client script.

Where it delivers outsized value

Privileged-audio workflows are the clearest fit — legal interviews, executive coaching, journalist source recordings, where any third-party upload is either a contract breach or a compliance violation. OSINT and narrative-research pipelines that ingest large volumes of public video as raw material are the second: the same operator can run this server alongside downstream analysis tools and never touch a paid transcription API. The third is the solo home-lab operator with a Ryzen + NVIDIA box already on the desk — the hardware is paid for; this stack converts it into a daily-use transcription rail instead of an idle gaming machine.

Distinctive features — why this over the alternatives

  • GPU-server-on-LAN split — the NVIDIA card lives on whichever machine has it; the operator works from a thin Ubuntu VM or MacBook. No need to colocate the writing environment with the silicon.
  • Self-installing client — first ./yt_transcribe.sh run creates its own Python venv, installs yt-dlp, prompts to apt-install missing system tools, and gets out of the way. No README-driven setup ritual on every machine.
  • Whisper large-v3 at int8/float16 — the highest-accuracy open model quantized to ~2.5 GB of VRAM, leaving headroom on a 4 GB laptop GPU to run other models alongside (Ollama, Stable Diffusion) without swapping.
  • Auto-restart Docker posture — the server boots with Docker Desktop, survives the host reboot, and exposes a healthcheck endpoint that lets the client fail fast with a clear error when the box is asleep.
  • whisper.cpp-compatible HTTP surface — POST /inference with form-encoded audio matches the standard ggerganov protocol, so any tooling already pointed at a whisper.cpp server speaks to this one with no changes.

Under the hood — built to last

Built on faster-whisper running under FastAPI and Uvicorn, packaged in a CUDA 12 Ubuntu container with a named Docker volume for the model cache so rebuilds don't re-download the 3.1 GB large-v3 weights. The client is plain bash any POSIX shell can run; the only Python dependency on the client side is yt-dlp, isolated in a venv so the host system stays clean. No database, no message queue, no auth layer — by design. The entire stack is ~920 lines across nine files and stands up on a single laptop with one command. Boring infrastructure that will still run in five years.

Current maturity

Working daily-driver state. The system is in active personal use — transcripts in the outputs/ folder span English and Ukrainian podcast and tutorial content, with file sizes from 5 KB (10-minute videos) to 45 KB (1-hour videos). Roughly 920 LOC across nine files; codebase last touched 2026-02-25. The repository is local-only with no public git history, so maturity is measured by the working artifact rather than commit count: the server runs continuously on the same Asus ROG host, surviving Windows updates and Docker Desktop restarts.

Roadmap — what's next

The natural next layer is a parallel TTS service on the same host — a three-engine setup (Edge TTS as the cloud default, Piper as the offline CPU fallback, Coqui XTTS as the GPU-premium English voice) sharing the same LAN-server pattern. The architecture document for it already lives in this repo; the start.ps1 / config.ini / client-bash conventions carry across unchanged. The medium-term direction is composing both into a personal media-intelligence rail: paste a URL, get back transcript plus summary plus audio narration in the operator's voice, all without leaving the home network.

Working with the architect

Whisper Local is a personal utility, but the pattern (GPU-server-on-LAN + thin shell client + Docker auto-restart + config.ini) generalizes. Strategic advisory is available for teams standing up a similar privacy-preserving transcription or media-processing rail on their own hardware — picking models, sizing VRAM, designing the client/server split. Commissioned builds of equivalent pipelines for regulated industries (legal, healthcare, intelligence) are possible on request. Reach out via sintegrium.io or LinkedIn for a 30-minute scoping call.


Built by Yurii Staryk · Solution Ecosystem Architect

React
Share
Join
Discuss
Discuss on XDiscuss on Telegram

Related Posts

LANpaster: Secure Local Network Sharing
8 min read

LANpaster: Secure Local Network Sharing

Self-hosted LAN clipboard for engineers running multiple machines on one network — paste text or files on one device, grab on another, with auto-expiring slots for API keys and zero internet dependency.

AArchitect· May 26, 2026
Read more →
Cognition Factory For AI Agents
9 min read

Cognition Factory For AI Agents

A desktop wizard that authors complete cognition bundles — identity, skills, credentials, runtime memory — for multi-agent AI teams, sealed with AES-256 and ready to deploy to any runtime.

Throughput
~6-12 min per 1h of audio
Coverage
99+ languages · large-v3
Model
faster-whisper large-v3 int8/f16
VRAM
~2.5 GB of 4 GB on RTX 3050 Ti
Footprint
~920 LOC across 9 files
Deployment
1 Docker container · port 8089
Tags#whisper#self-hosted#docker#transcription#gpu

Table of Contents

  • The problem it solves
  • Who needs this most
  • The solution — in plain terms
  • Value delivered — what you get
  • Where it delivers outsized value
  • Distinctive features — why this over the alternatives
  • Under the hood — built to last
  • Current maturity
  • Roadmap — what's next
  • Working with the architect
AArchitect· May 26, 2026
Read more →
CDE Agent: Project Publisher
10 min read

CDE Agent: Project Publisher

Self-hosted inbound agent that turns a project folder into a branded portfolio post — analysed, validated, and published to any CDE deployment in one pass.

AArchitect· May 26, 2026
Read more →