I'd like to cancel echoes from a Talk recorded in a large extremely reverberant auditorium. It's unintelligible as recorded, and I'm hoping to make it intelligible by echo cancellation.

Audio was taken from an immobile video recorder, the video showing exact positions of 2 PA speakers (the main sound source) and the microphone (the video recorder). The exact dimensions of the room are 177' x 98' x 32', with hardwood floors, steel ceiling and brick walls.

I have a Room Impulse Response recording, produced by placing a mic where the video recorder captured the speech, with a hand clap at the position of the nearby PA speaker (6 feet away from the video recorder).

Based on the RIR recording I'm estimating an RT60 of about 3.8 to 4.0 seconds.

I'm hoping a FIR filter derived from the RIR data can render the speech intelligible.

Because of the long RT60, there at lots of FIR coefficients, and I'm not sure how to choose a subset of coefficients. For filtering the 30-minute unintelligible audio, I have a system with 128 GBytes DRAM and 12 cores, and it's okay if it runs for a few days or more.

When I do a web-search for "How to optimally reduce FIR filter coefficients", most of what comes up is about real-time, adaptive, resource-constrained, minimal latency, or other concerns that aren't relevant here.

What I have so far:

To generate FIR coefficients, my plan is this:

  • cross-correlate the direct signal (impulse) with the full RIR signal
  • choose a subset of the best coefficients
  • negate all but the first (direct signal) coefficient

The direct signal (the clap) is the 1st 12 mSeconds of the RIR signal.

I'm stuck on step 2, because with a 4 second RT60, there are 4*28000 possible coefficients to choose from.

Thanks in advance for any advice, corrections, or other feedback!

  • 1
    $\begingroup$ Like Bob stated in their answer, the task you have at hand is extremely difficult. Such long RIRs are mixed phase in nature and it's not easy to filter them in a static way and get the direct signal (believe there would be an ample amount of "dereverberators" out there if this was easy). You could potentially try a "Wiener-like" approach but I am not sure this could provide good results either. Please keep us posted if you have any results though. This is a great and very interesting task. $\endgroup$
    – ZaellixA
    Jul 26, 2023 at 20:15
  • $\begingroup$ The longer the reverb of a real room, the less the long-term room response correlates with the exciting signal. Real rooms are not time-invariant and also subtlely non-linear. This is because the geometry changes with time as people and the air move. The speakers themselves also create air movement beyond the linear approximation, for example by radiating heat. What's more, the speakers radiate their energy not like a point source. So your approach of approximating the impulse response is flawed for all these reasons. $\endgroup$
    – Jazzmaniac
    Jul 26, 2023 at 21:53
  • $\begingroup$ In fact, any convolution with any response will under these circumstances only increase the total power in the late reverb tail. Adaptive cancellation methods that are based on the decay statistics of the late response might help, but in such a long reverb it is questionable if any algorithm can restore the speech information that your highly specialized brain circuits are unable to pick up. So unless you have some more microphones in the room that have recorded the same speech, I don't see how this would work. $\endgroup$
    – Jazzmaniac
    Jul 26, 2023 at 21:56

2 Answers 2


Inverting all but the 1st coefficient is not going to do the job. You want the convolution of your inverse filter with the RIR to be an impulse (not the sum). This is a very difficult problem as the true inverse is usually not stable.

  • $\begingroup$ Does the difficulty derive mainly from the very long reverberation decay time? $\endgroup$
    – philwalk
    Jul 26, 2023 at 21:43
  • 1
    $\begingroup$ No, it’s because the RIR is not minimum phase, so there are zeros outside the unit circle. Therefore the inverse filter must have a pole outside the unit circle. $\endgroup$
    – Bob
    Jul 27, 2023 at 22:58

It sounds like a tough nut to crack, and my thoughts below sound too easy, so no guarantees that it actually works.

Obviously you want to do a deconvolution with the RIR as the kernel. The problem is that deconvolution is not unique (it has infinitely many solutions) and one must apply a regularization condition to obtain a single solution.

In your case this regularization is simply: minimum power. Because, the actual speech is just a fraction of the recorded power and any echo will appear in addition.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.