Music Down, Automatically
You've recorded the narration. You've picked the perfect music bed. Now comes the part nobody warns you about: making them sit together.
Set the music too loud and it swallows your words. Set it too quiet and the track loses all its energy. Split the difference and you get both problems at once — because the right music level during speech and the right level between sentences are two different levels. A real mixing engineer solves this by riding the fader: music up in the gaps, down under the voice, all session long. That's a skill, a DAW, and an afternoon.
Today it's one command:
5am media mix --voice episode.wav --music bed.mp3 --output mix.wav
5am media mix takes a dialogue track and a music track and does what the engineer would do — automatically, locally, in seconds.
Three moves, like a mixer would make them
It stages the music at broadcast level. Before anything else, the CLI measures both files — integrated loudness, true peak, duration — and gain-stages them the way a broadcast chain expects: your voice anchored at the target loudness, the bed sitting a fixed distance underneath (18 dB under for the podcast preset). No guessing, no "sounds about right."
It ducks just enough to keep every word on top. The music runs through a compressor that's keyed by your voice — the moment you speak, the bed dips; the moment you pause, it swells back. Attack and release are tuned like a broadcast limiter's: fast enough that the first syllable is never buried, slow enough that the recovery breathes instead of pumping.
It carves an EQ pocket right where the voice lives. This is the part a plain volume dip can't do. The music is split into three frequency bands, and the band where speech intelligibility lives — roughly 250 Hz to 4 kHz — is ducked several dB deeper than the lows and highs. Under your words the bed doesn't just get quieter; it gets thinner, leaving the bass and the air of the track intact while the midrange steps aside for the voice. When you stop talking, the pocket closes and the music is whole again.
The result sounds like someone mixed it — because acoustically, something did.
Pick a style, press enter
Different content wants different riding. Four presets ship today:
5am media mix --voice ep.wav --music bed.mp3 --style podcast --output mix.wav
| Style | The idea |
|---|---|
podcast (default) | Voice is king — bed 18 dB under, strong duck, tight broadcast moves, −16 LUFS out |
documentary | A more present bed, gentler duck, slow cinematic recovery |
promo | Music-forward and punchy — ducks just enough, louder −14 LUFS target |
ambient | A barely-there bed with very slow, unobtrusive moves |
And because presets never fit everyone, every parameter is a flag: --bed-level, --duck-depth, --pocket-depth, --ratio, --attack, --release, --target-lufs, --true-peak, --fade-out. The style sets the defaults; your flags win.
# Deeper bed, harder duck, slower recovery
5am media mix --voice ep.wav --music bed.mp3 \
--bed-level -24 --duck-depth 16 --release 400 --output deep.mp3
Loudness that lands where platforms want it
Because the mix is staged from real measurements, the output lands at the style's loudness target — −16 LUFS integrated for podcast, the level podcast platforms and voice-first playback expect — with a peak limiter keeping true peaks in check. Run it, upload it, done. No "why is my episode quieter than everyone else's" surprises.
A few practical details:
- Output length = voice length. A short music bed loops seamlessly; the tail fades out under your closing words.
- Any audio in, four formats out. Inputs are anything FFmpeg can decode; output format follows your
--outputextension —.wav,.mp3,.m4a, or.flac. - JSON on stdout, like every 5am command: measured loudness, applied gains, every resolved parameter. Pipe it to
jq, wire it into a script. - Requires a local FFmpeg (4.4+) —
brew install ffmpeg,apt install ffmpeg, orwinget install ffmpeg.
It completes the podcast pipeline
media mix slots into the terminal podcast workflow the CLI has been building toward:
# 1. Generate a music bed from a prompt (Lyria)
5am media generate music --prompt "warm lo-fi piano, gentle, unobtrusive" --output bed.mp3
# 2. Mix it under your episode
5am media mix --voice episode.wav --music bed.mp3 --style podcast --output episode-mixed.wav
# 3. Wrap it in video for YouTube / Reels
5am media visualize episode-mixed.wav --cover cover.jpg --subtitles episode.srt --output episode.mp4
Prompt-to-bed, bed-to-mix, mix-to-video — a finished, publishable episode without opening a DAW or an editor. The Podcast Studio post covers the video half of that pipeline in depth.
Free to use, free to de-tag
media mix works without an account. Unauthenticated runs append a short spoken "Powered by 5AM" tag at the very end of the mix — after your audio, never over it. Running 5am login (which is free) removes it. Your mixes render fully offline either way — nothing waits on a network call.
Get it
If you have the CLI, you already have it — 5am update and go. Otherwise:
curl -fsSL https://cli.5am.app/cli/latest/install.sh | sh
5am media mix --voice your-voice.wav --music your-music.mp3 --output mix.wav
Full flags and examples are in the CLI docs. Put a voice over some music and listen to the bed step aside for your first sentence — it's the kind of thing you hear once and stop wanting to mix by hand.



