Take a voiceover from script to delivery-ready audio: script pacing prep, mic technique and gain staging for a clean record, cleanup with ffmpeg (noise reduction, high-pass), and two-pass EBU R128 loudness mastering to platform targets. Triggers on requests to record, clean up, master, or produce voiceover / VO / narration audio.
./install.sh voiceover-productionname: "voiceover-production" description: "Take a voiceover from script to delivery-ready audio: script pacing prep, mic technique and gain staging for a clean record, cleanup with ffmpeg (noise reduction, high-pass), and two-pass EBU R128 loudness mastering to platform targets. Triggers on requests to record, clean up, master, or produce voiceover / VO / narration audio." metadata: { "includeInPrompt": true }
Turn a script into finished, platform-ready voiceover: prep the script for pacing, record a clean take, then run a deterministic ffmpeg chain — cleanup → master → verify — so the file lands at the destination's loudness spec instead of "sounds about right."
assets/script-template.md and format the read: pacing marks, breath marks, emphasis, and phonetic spellings. Do a timed read of the first paragraph — runtime estimates come from a real sample, never from a guessed words-per-minute rate. (bin/vo-master.py estimate turns a finished script file into a runtime range.)references/recording-guide.md: mic distance/angle, pop filter, gain staging targets, room discipline, and record format (PCM WAV, 48 kHz / 44.1 kHz, 24-bit if the interface offers it).bash
python3 bin/vo-master.py master raw-take.wav final.wav --target -16 --denoise 12
What it does, in order: high-pass at 80 Hz → FFT noise reduction with adaptive floor tracking → DC-offset removal → two-pass measured loudnorm (EBU R128) → true-peak ceiling → PCM/WAV or MP3 export → independent ebur128 verification. Full recipe table and every flag are documented in references/ffmpeg-vo-recipes.md.
--audit-noise to hear exactly what the denoiser removed (it must be hiss/hum, never sibilance or breath). Read the JSON report: integrated LUFS vs target, true peak vs ceiling, and the loudness range. Re-record beats over-processing — denoising past ~15 dB or aggressive compression leaves artifacts no master fixes.references/ffmpeg-vo-recipes.md); keep the raw WAV archived.A finished take is a file plus its verification report:
vo-master.py: input, output, target_lufs, measured_integrated_lufs, measured_true_peak_dbtp, loudness_range_lu, denoise_db, pass (boolean).~/workspace/skill-production/scratch/voiceover-production-sources.md.ebur128 verification; "turned it up a bit" is not a master.nr or re-record. A clean quiet take mastered up beats a noisy take scrubbed down.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.