ferraus dereverb

Reduce room reverberation

Quality tier: best-effort. Results are reported with a quality or confidence estimate.

Synopsis

ferraus dereverb <input> [options] [-o <output>]

What it does

Predicts the late reverberation in each frequency band from the sound that came before it and the room's decay time, then subtracts it. Direct sound and early reflections are kept, so speech and instruments get drier and closer without sounding gated. The decay time (RT60) is measured from the recording's own pauses unless you give it. Works offline with no model; a model-based path for heavy reverb is planned (model slot denoise/dereverb-*).

This command is also an fx stage and a pipeline op: ferraus fx in.wav -o out.wav --fx "dereverb:key=value".

Examples

Measure the room and remove its tail

ferraus dereverb lecture.wav -o drier.wav

Gentler removal for a known 1.2 s room

ferraus dereverb vocal.wav --rt60 1.2s --amount 80% --floor -12dB -o vocal.dry.wav

Aggressive removal for a very echoey video-call recording

ferraus dereverb call.wav --amount 130% --late 30ms -o dry.wav

Give each channel its own gain (unrelated mics on left and right) and keep artifacts low

ferraus dereverb two_mics.wav --link off --floor -10dB -o dry.wav

Options

FlagTypeDefaultMeaning
--rt60textautoRoom decay time to -60 dB, e.g. 0.8s, or 'auto' to measure it
--amountpercent100%How much of the predicted reverberation to remove (above 100% removes more aggressively)
--latetime50msWhere late reverberation starts after the direct sound; earlier reflections are kept
--floorgain-18dBMaximum attenuation of any time-frequency cell, which limits artifacts
--linkon|offonUse one gain for all channels so the stereo image does not shift
--mixpercent100%Dry/wet balance: 0% returns the input unchanged, 100% is fully processed

Global options

Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.

Exit codes

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
4Unsupported format or codec
8Cancelled
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path when re-running.
  • Beat-based times (4b, 1/4) need a tempo: pass --bpm or write 4b@120.
  • Percentages accept 80% or the fraction 0.8; a bare 80 means 80x, not 80%.
  • Gains need a unit when not in dB: 0.5x is a factor, -6 and -6dB are decibels.
  • Treating best-effort output as final: check the reported quality/confidence in --json.

For models

  • MCP tool: ferraus_dereverb
  • Schema: ferraus schema dereverb
  • Pipeline: { op: dereverb, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "dereverb", "defaults": {"rt60": "auto", "amount": "100%", "late": "50ms", "floor": "-18dB", "link": "on", "mix": "100%"}}