C.W.K.
Stream
Lesson 07 of 10 · published

Noise Reduction

~10 min · noise, afftdn, highpass, denoise

Level 0Viewer
0 XP0/73 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

FFmpeg's denoisers

FFmpeg has several denoise filters. Three you'll actually use:

  • afftdn — FFT-based denoiser. The modern default. Tunable noise reduction in dB.
  • highpass + lowpass — chop low rumble (HVAC, traffic) and high hiss with frequency filters.
  • arnndn — RNN (machine learning) denoiser, requires a model file. Excellent for voice but you have to download the model.

The simple chain

For most voice recordings (Zoom audio, phone-recorded talk track), the chain highpass=f=80,lowpass=f=15000,afftdn=nf=-25 hits about 80% of pro denoise quality. Don't overdo it — aggressive denoise creates 'underwater' artifacts.

Code

Voice denoise chain·bash
# Cut sub-80Hz rumble + above-15kHz hiss + 25dB FFT noise reduction
ffmpeg -i raw_voice.wav \
  -af "highpass=f=80,lowpass=f=15000,afftdn=nf=-25" \
  cleaned.wav

# Stronger noise reduction (be careful — artifacts emerge above ~30 dB)
ffmpeg -i noisy.wav \
  -af "highpass=f=100,afftdn=nf=-30:nt=w" \
  cleaner.wav
RNN denoiser (best for voice, needs model)·bash
# Download an RNNoise model (one-time)
curl -L -o sh.rnnn https://github.com/GregorR/rnnoise-models/raw/master/somnolent-hogwash-2018-09-01/sh.rnnn

# Apply
ffmpeg -i raw.wav -af "arnndn=m=sh.rnnn" cleaned_rnn.wav

# Multiple models exist for different scenarios (speech, music, conf-call).
# https://github.com/GregorR/rnnoise-models lists them all.

External links

Exercise

Find a noisy voice recording (Zoom export, phone memo). Run the simple chain highpass=80,lowpass=15000,afftdn=nf=-25. Listen to before/after with headphones. Then push nf=-35 and listen again — can you hear the artifacts? Tune to where artifacts just disappear.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.