Differentiable feedback delay networks · dereverberation
How much reverberation can you actually pull back out of a recording? A study of what a known room filter can perfectly undo — and the two walls that stop blind removal cold.
Short-Time Objective Intelligibility (STOI) runs 0 to 1; higher is more intelligible. The catch — and the subject of this paper — is that the clean version on the right used the true room filter. Recovering that filter blindly is where it gets hard.
Reverberation is a convolution of dry sound with a room's impulse response; removing it is deconvolution. A feedback delay network (FDN) is a compact, invertible model of reverb. Given the true filter, inverting it restores destroyed speech — intelligibility 0.41 → 0.91 — in real time at a fraction of a neural model's cost (~1,200× faster than real time on one CPU thread). But recovering that filter by fitting hits two walls: a low-order FDN cannot represent a dense room's spectrum (capacity), and its delay lengths cannot be identified reliably by gradient descent (identifiability). We map both — and the point where reverberation destroys information outright and no inverse can help.
The problem
When you speak in a room, the microphone hears your voice plus thousands of delayed, decaying reflections off the walls. Mathematically, the recording is your dry voice convolved with the room's room impulse response (RIR) — the sound of the room answering a single click.
Undoing that is deconvolution, and it is famously ill-posed. A measured RIR is long (tens of thousands of samples) and non-minimum-phase, so it has no clean, stable inverse — invert it naïvely and you amplify noise and smear transients into pre-echo. The usual escape is to reach for a large neural network. This paper takes the opposite bet: a model small enough to invert exactly and run anywhere.
The model
The feedback delay network (FDN) — Jot & Chaigne, 1991 — is the classic structure behind most digital reverbs (and the reverbs in Csound). A handful of delay lines are mixed through a feedback matrix and fed back on themselves; a few dozen parameters generate the dense, decaying tail of a whole room.
Because the FDN is a small rational system — poles and zeros, not a fifty-thousand-sample blob — it has something a measured RIR does not: a compact, stable inverse. That is the entire idea. Fit an FDN to a room to extract its reverb; invert the FDN to remove it.
The result
To remove reverb we invert the FDN's transfer function H with a regularized (Wiener-style) filter — dry ≈ reverberant · conj(H) / (|H|² + ε) — turning a slightly-unstable division into a stable one.
The clean test: take dry speech, convolve it with a known room, then invert using that same room's filter. This is the oracle — perfect knowledge of the reverb, the ceiling of what removal can achieve. It is dramatic. Heavily reverberant speech that scores 0.41 on intelligibility comes back to 0.91 — pauses reopen, consonants sharpen, the spectrogram is nearly identical to the original.
So removal is not the hard part. Getting the filter is. Everything below is about whether you can recover H when the room doesn't hand it to you.
The obstacle
If you don't have the room's filter, the obvious move is to fit one — optimize an FDN so its output matches the reverberant signal, then invert what you fit. We tried, hard: a phase-aware complex-spectrum objective (the naïve energy-decay and echo-density losses turned out to be phase-blind, and inverting a phase-wrong filter makes things worse), warm starts, an explicit phase term, multi-start over delay initializations, and added capacity. The fit improved. It did not approach the oracle. Two independent walls explain why.
Wall 1 · capacity
A dense room tail is ~23,000 samples of rich, near-random structure. A low-order FDN's spectrum simply cannot match it — the fitting error |H−R|² asymptotes far from zero no matter the optimizer. More delay lines help, then plateau.
Wall 2 · identifiability
Even when the room is genuinely a 6-delay FDN — exact model, no capacity excuse — gradient descent on the delay lengths lands in local minima. The delay-length landscape is brutally non-convex; the exact-model case recovered only ~29% of the gap.
| Method | Speech STOI | Model error |
|---|---|---|
| Reverberant (no processing) | 0.414 | 0.360 |
| Energy-only fit (phase-blind) | 0.425 | 0.492 ✗ worse |
| Phase-aware + system-ID (best) | 0.498 | 0.257 |
| Oracle — true filter | 0.914 | 0.001 |
The limit
There is a floor below which no method — not even the oracle — can go, because the reverb has destroyed the information rather than merely hidden it.
Alvin Lucier's 1969 piece I Am Sitting in a Room is the canonical demonstration: a voice recorded and replayed into a room, over and over, until the words dissolve into pure resonance. We reproduced it — convolving speech through the room three times. Each pass multiplies the spectrum, so frequency bins the room attenuates get driven toward zero (|H|³). Information at those frequencies is gone. Even with the exact filter, the oracle only claws intelligibility from 0.14 back to 0.52 — partially readable, never clean.
The gap between 0.52 and 1.0 here isn't a modeling failure — it's a law. You cannot recover what was annihilated. Any method that tackles this recording at all is working against physics.
The upside
The reason to care about an FDN inverse over a neural dereverberator is not peak quality — a large model will win there. It is cost, latency, and determinism. The inverse is a tiny recursive filter: it runs in real time on a laptop, a phone, a Raspberry Pi, and it invents nothing — no hallucinated detail.
So the honest home for this method is the informed regime: measure a room once — play a sweep, capture its response — then dereverberate live, forever, for almost no compute. Fixed spaces are full of this shape: a studio, a lecture hall, a conference room, a car cabin.
Where it stands
✓ Works
Given the room's response, inversion restores destroyed speech (0.41 → 0.91) in real time at a fraction of a neural model's cost. A deployable capability for fixed spaces.
✗ Dead end
Recovering a usable filter by fitting a low-order FDN to a dense real room fails on both capacity and identifiability. The honest conclusion: this is not the road to blind removal.
That negative result is the useful one — it saves the next person the walk down a plausible-looking path, and it sharpens where the effort should go: not into fitting FDNs blindly, but into the estimation problem itself, and into methods that don't need to identify a filter at all.
What's next
The measured-filter result is worth packaging as a real-time tool. But the more interesting thread runs the other way: instead of modelling the room to subtract it, separate the source you want from everything else. Source separation already pulls a clean signal out of a noisy field — even out of a hydrophone recording, where it can lift a whale call clear of the water and its reflections without ever modelling the reverb. Push that toward telling apart who or what is speaking — speaker and instrument diarization — and dereverb becomes a front-end to something bigger: cleaner separation, better diarization, and, with a transcriber on the end, usable transcripts of real, messy rooms. That is the next paper.
Methods & references
Differentiable FDN in PyTorch (frequency-sampled transfer function; learnable fractional delays). Objectives: energy-decay curve and echo-density profile for perceptual fitting; complex-spectrum loss for phase-aware system identification. Inverse: regularized frequency-domain (Wiener) filter. Intelligibility scored with STOI against the dry reference. All fits and inversions run on an NVIDIA RTX 3090.