Project · Self-directed · Software · AI · Media
In-house media services
Voice cloning, animated video rendering, vertical Shorts and podcast rendering, all as small HTTP services on the Pi.
Summary
A set of single-purpose render services that the pipelines call over HTTP. voice-render runs Chatterbox TTS against a reference sample of my voice and has a batched segments mode. makeit-media renders storyboards with weighted-random camera moves, transitions, text motion and ambient effects. shorts-render adds burned-in captions, a stinger intro and an end card. The Arkham podcast renderer cuts episodes and vertical clips.
The problem
ffmpeg on a small ARM board punishes naive filter graphs, TTS is slow, and one bad render shouldn't take the box down.
Why I built it
Hosted rendering and TTS APIs cost money per minute and make you work to their schedule. Owning the render step means pipelines can retry, re-render and batch without anyone checking a bill.
The solution
One job at a time per service, job IDs with polling, watchdogs, explicit timeouts, verification by frame analysis rather than exit codes, and CPU caps.
What it does
- Fixed a 'chrome drift' bug in which the watermark and progress bar panned along with the camera move. The chrome is now rendered as a separate overlay, and frame diffs confirm it's pixel-identical.
- Verified lightning and candlelight effects by per-frame luma analysis, not just by eye.
- Pause-anchored caption timing reuses the existing silence detection, so no speech-to-text dependency is needed.
Technologies, and what they're for
- Python / FastAPIRender service APIs
- ffmpegComposition, zoompan, overlays, concat
- Chatterbox + PiperTTS, with Piper as the fast fallback
- DockerIsolation and resource caps
AI involvement
- Voice cloning with Chatterbox
- Gemini imagery consumed by the renderers
Automation
- Called by n8n pipelines, polled with timeouts and retries
Infrastructure
- Raspberry Pi 5, CPU-capped containers
Hard parts
- A truncated PNG made ffmpeg hang forever instead of failing. Since then, every binary asset is integrity-checked before it's used.
Outcome
Powers the Ninth Volume, Ninth Archive and TFCD videos and the Arkham podcast.