Load Custom RNN Model in FFmpeg arnndn

This article provides a straightforward guide on how to load a custom Recurrent Neural Network (RNN) noise suppression model into FFmpeg using the arnndn audio filter. You will learn the exact command-line syntax required to reference your custom .rnnn model file, how to apply it to an audio stream, and the key requirements for successful implementation.

The arnndn (Active Recurrent Neural Network Denoise) filter in FFmpeg uses deep learning models to remove background noise from audio streams. While FFmpeg includes a default built-in model, using a custom-trained model can significantly improve noise reduction quality for specific environments, languages, or microphone types.

The Command Syntax

To load a custom model, use the model parameter within the arnndn filter string. The path to your custom .rnnn file must be explicitly specified.

The basic command template is:

ffmpeg -i input.wav -af "arnndn=model='/path/to/your_model.rnnn'" output.wav

Step-by-Step Example

  1. Prepare your model file: Ensure you have a compatible RNN noise model file, which typically ends in the .rnnn extension and is trained using the RNNoise framework.
  2. Execute the FFmpeg command: Open your terminal and run the following command, replacing the file paths with your own:
ffmpeg -i noisy_voice.mp3 -af "arnndn=model=custom_speech_model.rnnn" clean_voice.mp3

If your model file path contains spaces or platform-specific directory backslashes, wrap the path in single quotes inside the filter argument:

ffmpeg -i input.mp4 -af "arnndn=model='C\:/models/custom_noise_model.rnnn'" output.mp4

Key Requirements

  • File Format: The custom model must be in the binary format generated by the RNNoise training tools. Raw text-based weights will not load successfully.
  • Audio Sample Rate: The RNNoise algorithm, and subsequently the arnndn filter, operates internally at 48,000 Hz (48kHz). If your input audio is not 48kHz, FFmpeg will automatically resample the audio to 48kHz before filtering, and resample it back to the original rate afterward.
  • Fallback Behavior: If you omit the model parameter entirely (e.g., -af arnndn), FFmpeg will fall back to its internal default model, which is optimized for general speech.