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
| Flag | Type | Default | Meaning |
|---|---|---|---|
--rt60 | text | auto | Room decay time to -60 dB, e.g. 0.8s, or 'auto' to measure it |
--amount | percent | 100% | How much of the predicted reverberation to remove (above 100% removes more aggressively) |
--late | time | 50ms | Where late reverberation starts after the direct sound; earlier reflections are kept |
--floor | gain | -18dB | Maximum attenuation of any time-frequency cell, which limits artifacts |
--link | on|off | on | Use one gain for all channels so the stereo image does not shift |
--mix | percent | 100% | 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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Processing failed |
| 2 | Usage or parameter error |
| 3 | Input missing or unreadable |
| 4 | Unsupported format or codec |
| 8 | Cancelled |
| 70 | Internal error (bug) |
Common mistakes
- Forgetting that outputs are never overwritten: pass
--overwriteor a new-opath when re-running. - Beat-based times (
4b,1/4) need a tempo: pass--bpmor write4b@120. - Percentages accept
80%or the fraction0.8; a bare80means 80x, not 80%. - Gains need a unit when not in dB:
0.5xis a factor,-6and-6dBare 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%"}}