How to Use the Freespoken Filter in FFmpeg

This article clarifies the status of the freespoken filter in FFmpeg, explains the most common speech-processing filters available natively, and provides direct command-line examples for enhancing, normalizing, and denoising spoken audio.


Does FFmpeg Have a freespoken Filter?

FFmpeg does not include a native filter named freespoken. Users looking for freespoken are typically searching for one of two things:

  1. Speech-focused audio filters: Built-in filters intended for dialogue, such as speechnorm (speech normalization) or arnndn / afftdn (noise reduction for voice).
  2. freeverb: FFmpeg's built-in reverberation filter, which shares a similar naming structure.

Below are the direct instructions for processing spoken audio and voice recordings using the official FFmpeg filter suite.


Normalizing Dialogue with speechnorm

If your goal is to level speech volume across a recording, the speechnorm filter is the native tool designed specifically for spoken words. It dynamically adjusts gain to keep dialogue clear and uniform.

Run the following command to apply speech normalization:

ffmpeg -i input.mp4 -af "speechnorm=e=4:r=0.0001:l=1" -c:v copy output.mp4
  • e=4: Sets the expansion threshold (default is 4).
  • r=0.0001: Controls the RMS target reference.
  • l=1: Enables peak limiting to avoid digital clipping.
  • -c:v copy: Copies the video stream without re-encoding to save time.

Removing Background Noise from Speech with afftdn

To clean up hums, hiss, or background room noise from spoken dialogue, use the Fast Fourier Transform noise reduction filter (afftdn):

ffmpeg -i input.wav -af "afftdn=nf=-25" output.wav
  • nf=-25: Sets the noise floor in decibels (dB). Adjust this value depending on the severity of the background noise.

Isolating Voice Using an Equalizer and Highpass/Lowpass

For a quick vocal isolation chain without third-party models, combine high-pass and low-pass filters to strip frequencies outside normal human speech:

ffmpeg -i input.mp3 -af "highpass=f=80,lowpass=f=3000" output.mp3
  • highpass=f=80: Removes low-end rumble below 80 Hz.
  • lowpass=f=3000: Cuts out high-frequency hiss above 3 kHz.

Using the freeverb Filter

If you were searching for the similarly named reverb filter rather than a dialogue cleanup tool, FFmpeg provides freeverb:

ffmpeg -i input.wav -af "freeverb=roomsize=0.2:damping=0.5:wet=0.3:dry=0.8" output.wav
  • roomsize: Size of the simulated room (0.0 to 1.0).
  • damping: High-frequency absorption (0.0 to 1.0).
  • wet: Volume of the processed reverb signal.
  • dry: Volume of the original clean signal.