removing echo

To the wizards of audio processing.

I’m working on some audio files of a debate recorded in a hall yielding some very bad echo.

I’ve searched through the forum (as well as the internet) and see that the general concensus is that there’s nothing that can effectively remove echo.

I may be completely lost in space, but I’ll pose my question anyway.

What would happen if one were to take a file, use your “invert” tool to make a second file that’s inverted, reduce the volume on the 2nd file, then time-shift the inverted/reduced-volume file the appropriate number of milli-seconds so that the second file cancels the echo part of the first file?!?

I did a quick experiment listening to an original track played with an inverted track and the result is close to zero sound.

Have any of y’all played with this concept?
Am I just spinning my wheels?

Thanks again for your amazing efforts on your amazing program!

Nice idea, but apart from the exceptional case that never happens in practice, it is very unlikely to work.
For the “sound cancellation” to work, the waveforms must match exactly before they are inverted and “summed”.

I take it that your idea is to cancel out the reflected sound (the echo) by shifting a copy of the recording so that the original direct sound can be reduced to the appropriate level and synchronised with, and thus remove the echo? Unfortunately it is extremely unlikely that the two waveforms will match closely enough. Echoes are never exact copies of the original - some frequencies are reflected more than others and echoes are produced by reflections from all objects in the room, so there is never exactly one echo, but an infinite number of reflection, all arriving back at slightly different times, creating a complex variant of the original sound. If it does not match exactly, then it won’t cancel out.

This technique may work with simple artificially (digitally) created echoes, but not with real world acoustic echoes.

If you can prove me wrong, I’d be interested to read your methodology.

Actually, I suspect you’re right. I’m going to play with it a bit. Will post my results when done.
Thanks Stevethefiddle,

Well, after much fiddling around with it (pun intended), Stevethefiddle is absolutely right.

So much for having it all figured out in my head, thinking it would work out just great in real-life.

Again, thanks again for your help/input Stevethefiddle,

My friend and I were recently recording a podcast. He had his speakers on, meaning that there was an echo of my voice on his recording of the podcast.

This essentially means you have a track with just my voice, and then a track of his voice plus an echo of mine. I think in this situation it would be possible to remove the echo by the computer getting a sample of it.

Indeed, my friend has removed the echo manually, by mixing down his side when he wasn’t talking. However this takes a long time to do for an hour long conversation. Do you think it would be possible to do this automatically?

<<<Do you think it would be possible to do this automatically?>>>

Probably not, but you might take a shot at Steve’s Noise Gate…

The premise is pretty simple. All sounds below a certain volume are reduced or deleted.

“Echo Reduction” in this case (and most cases) wouldn’t work because the echo is not a perfect version of the original voice. It’s the voice having gone through at least two A/D conversions and the tinny, strained sound of computer speakers bounced against the bedroom walls.

The system sees it as two different performers that sound a little like each other.

Noise reduction works in a similar way. The definition of “noise” is strict and anything that isn’t “noise” becomes a performer in the show.


This isn’t a completely perfect solution (but then again, what is?) but I had a noticeable, digital sounding echo after recording an interview over skype. I hadn’t thought of it at the time, but it sounds like the other person had their speakers on, rather than wearing headphones, producing some echo throughout. Anyways, this is what I did:

-created a duplicate track
-inverted this track
-lowered the volume on it just a tiny bit
-took some blank, recorded, white noise from the interview and layed it down behind the the original and inverted

So basically, I just masked the echo a bit. It’s not perfect, but sounds ok enough that I’ll use it in my podcast.

Not sure if anyone is still interested in this thread, but I have a somewhat unique problem associated with echo removal. Unique in that my echo has been produced digitally somehow in the process of recording a podcast. I know its a digital echo because it doesn’t sound like a typical room echo and also because it started suddenly after a brief silence, which I take as some sort of software malfunction. this is evident in the attached sample. My setup is as follows: 2 USB mics fed into separate USB ports on my PC. These separate signals are then merged into one signal via Virtual Audio Cable (I believe this may be the source of the problem), and then fed into Audacity to record. Obviously my setup had some flaws and I think my problem could have been avoided had I done this differently, but that doesn’t help me fix this recording, which I need and I can’t do again.

From what I’ve read, it seems that echo or reverb is almost impossible to remove, primarily because you cannot separate the original sound from the returned or delayed sound. I’m hoping that this may be different in my case, where the two sounds should be exactly the same. Therefore, it seems there could be some automated way to remove the reproduced sound but maintain the original…Not sure exactly how this could be done, thus my posting on this thread. I have tried Noise Gate as well as overlaying an inversed copy of the recording. Neither seems to work too well. Anyone have any ideas?

With the original WAV file or the original Audacity project (something without MP3 compression damage) and unlimited time and an unlimited budget and if it were just a single simple echo, then it may have been possible (but still not easy). Unfortunately the problem is made considerably more complicated because the delay time is not constant, it is different in the left channel to right channel and appears to keep shifting a little in time every few milliseconds, thus making “cancellation” virtually impossible. You can hear the problem more clearly if you listen to the difference between the two channels (left channel minus right channel):

So I’m going with: “An interesting case but I think the answer is still no.”

Thanks, Steve. Mask it is then.

Since you have 2 tracks out of sink I had an ‘Idea’:

  1. Remove one of the tracks , either left or right.
  2. Use noise reduction to mute/remove all or most of the main dialogue, keeping the echo “at the same original volume”.
  3. Duplicate and invert track to remove the echo.

The best case is that the main audio volume will drop significantly but you could probably boost overal track volume back up to normal levels and the echo would basically be gone.

I am also looking into removing echo from a lecture.