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.wav

What 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.