Remove low-frequency rumble with highpass
Most recordings have a low-frequency rumble below 80 Hz: HVAC noise, handling noise, mic stand vibrations, wind. The `highpass` filter removes everything below a cutoff frequency, leaving the speech or music intact. It is a one-line fix for the most common audio problem.
The command
ffmpeg -i in.wav -af "highpass=f=80:poles=2" out.wavWhat it does
The filter passes everything above the cutoff frequency and attenuates everything below. `f=80` sets the cutoff to 80 Hz; `poles=2` is the slope of the filter, in this case 12 dB per octave. A 2-pole filter is gentle; a 4-pole filter (`poles=4`) is steeper. For voice, start at 80 Hz; for music, 30 Hz; for a bass-heavy podcast, 120 Hz.
Requirements
Any audio input. The filter is in libavfilter. CPU-only, single-pass. The filter is mono by default; for stereo, pass `highpass=f=80:channels=stereo` or run two instances with `-af` chains.
Things to avoid
- Setting the cutoff above the fundamental of the speaker's voice. Male voice fundamental is around 100 Hz; setting the cutoff to 200 Hz will thin the voice noticeably.
- Using a very high `poles` value. A 4-pole filter introduces phase shift that can dull the sound. Start with `poles=2` and increase only if the rumble is still audible.
- Combining highpass with a lowpass that overlaps. A 30 Hz highpass and a 15 kHz lowpass on a voice recording leaves a flat, lifeless signal.
- Forgetting that the filter is in Hz, not kHz. `f=80` means 80 Hz, not 80 kHz.