Skip to content
Back to skills

Audio Edit

ASecurity

Clean up or mix a video's audio track — normalize loudness, reduce background noise/hiss, or add background music (optionally ducked under speech). Use whenever the user wants to fix quiet/loud/inconsistent audio, remove hiss/hum, or lay music under a talking-head/voiceover. For removing um/uh filler words use filler-removal instead; for replacing the audio entirely use plain ffmpeg map.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
toolsgobash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add Wanfeng1028/muse --skill audio-edit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Audio Edit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Audio Edit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wanfeng1028-audio-edit/badge)](https://www.skillsdirectory.com/skills/wanfeng1028-audio-edit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: audio-edit
version: 1.0.0
description: Clean up or mix a video's audio track — normalize loudness, reduce background noise/hiss, or add background music (optionally ducked under speech). Use whenever the user wants to fix quiet/loud/inconsistent audio, remove hiss/hum, or lay music under a talking-head/voiceover. For removing um/uh filler words use filler-removal instead; for replacing the audio entirely use plain ffmpeg map.
---

# Audio editing (ffmpeg)

Loudness normalize, denoise, and background-music mixing. These are plain ffmpeg
one-liners — no CLI command wraps them. Every recipe **stream-copies the video**
(`-c:v copy`, fast + lossless) and re-encodes only the audio to `aac`.

Pick the operation:
- Audio too quiet / loud / inconsistent across clips → **normalize**.
- Background hiss / hum / fan noise → **denoise**.
- Lay a music bed under narration → **add music** (use `--duck`-style sidechain so music
  drops under speech).
- Cutting um/uh hesitations → use the `filler-removal` skill, not this one.

## Normalize loudness

```bash
ffmpeg -y -i in.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11 -c:v copy -c:a aac out.mp4
```
`-16` LUFS / `-1.5` dBTP is a good general/web target. The single pass above is fine for
most clips. For **precise** targets (or batch consistency), do two-pass: run once with
`loudnorm=...:print_format=json`, read the measured values, then pass them back as
`measured_I`/`measured_TP`/`measured_LRA`/`measured_thresh` on a second run.

## Even out inconsistent levels (loud speaker vs quiet audience)

The most common "fix the audio" complaint on talks/panels/interviews isn't noise — it's
**level swings**: the presenter is loud and near the mic, audience questions are faint, peaks
nearly clip. Compress to tighten the dynamic range, then normalize:

```bash
ffmpeg -y -i in.mp4 -af \
  "acompressor=threshold=-21dB:ratio=3:attack=15:release=250:makeup=3,\
   equalizer=f=2800:t=q:w=2:g=2,\
   loudnorm=I=-14:TP=-1.5:LRA=9" \
  -c:v copy -c:a aac out.mp4
```
- `acompressor` pulls the loud parts down; `makeup` lifts everything so the quiet parts come
  up — net result is consistent loudness. Lower `threshold` / higher `ratio` = more leveling.
- The gentle `equalizer` presence bump (~2.5–3.5 kHz) adds intelligibility.
- `loudnorm` with a **tight `LRA` (7–9)** finishes the leveling; check the output isn't pumping.
- Diagnose first with `astats` (`RMS level dB` / `Peak level dB`) — a wide RMS-to-peak gap or a
  peak near 0 dB confirms it needs compression, not denoise.

## Denoise (hiss / hum)

```bash
ffmpeg -y -i in.mp4 -af afftdn=nr=12 -c:v copy -c:a aac out.mp4
```
`afftdn` is an FFT denoiser — no extra deps. `nr` is noise reduction in dB (10–20 typical;
higher = more aggressive but more artifacts/underwater sound — start at 12 and listen).
Combine with normalize in one pass: `-af "afftdn=nr=12,loudnorm=I=-16:TP=-1.5:LRA=11"`.

## Add background music

**If the edit is an EDL, put the bed in the EDL instead** — `"music": {"src": …, "gain_db":
-18, "duck": true, "fade_out": 2.0}` mixes it in the same render pass (looped to cover the
whole cut), so you don't pay for a second re-encode. The recipes below are for a video that's
already finished, or for a one-off mix outside an EDL.

Plain mix (music sits at a fixed level under the existing audio):
```bash
ffmpeg -y -i in.mp4 -i bg.mp3 -filter_complex \
  "[1:a]volume=-18dB[bg];[0:a][bg]amix=inputs=2:duration=first[a]" \
  -map 0:v -map "[a]" -c:v copy -c:a aac -shortest out.mp4
```

Music **ducked under speech** (music automatically drops when someone talks) — usually what
you want for narration:
```bash
ffmpeg -y -i in.mp4 -i bg.mp3 -filter_complex \
  "[1:a]volume=-18dB[bg];\
   [bg][0:a]sidechaincompress=threshold=0.03:ratio=8:attack=20:release=300[bgd];\
   [0:a][bgd]amix=inputs=2:duration=first[a]" \
  -map 0:v -map "[a]" -c:v copy -c:a aac -shortest out.mp4
```
The sidechain compresses the music (`[bg]`) using the original speech (`[0:a]`) as the
trigger: louder speech → more music attenuation. Tune `ratio` (duck depth), `attack`
(how fast it ducks, ms), `release` (how fast music returns, ms).

## Gotchas

- **Always `-shortest`** when adding music, or a longer music track extends the clip past
  the video and everything downstream desyncs.
- **`amix` can lower overall level** — if the result sounds quiet, append
  `,loudnorm=I=-16:TP=-1.5:LRA=11` after the `amix` output, or raise the speech with
  `volume` before mixing.
- Re-encode audio to **aac** (`-c:a aac`); don't `-c:a copy` after a filter.
- `duration=first` ties output length to the first `amix` input (the speech) — keep speech
  first in the `amix` chain.

Files in this skill

  • LICENSE1 KB
  • SKILL.md4.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.