How to remove echo from wav file
5 views (last 30 days)
Show older comments
Hello there,
I have a .wav file in the link below, where is a human voice and echo in the background. I want the echo removed. Is there anyone who can tell us how to do it in MATLAB? Thanks for your help.
1 Comment
Seton Schroeder
on 5 Feb 2018
There have been many papers in the last 20 years that have tried to solve this problem; and there have been many different approaches. None that I have evaluated are that good. I've heard that the most promising algorithm for this is the MINT method, although it requires a great deal of data processing and processing may take from many seconds to many minutes.
Answers (2)
Walter Roberson
on 10 May 2015
This is not something I have studied, so I can only make a bit of a suggestion after looking around.
It looks to me as if maybe you could use Complex cepstral analysis requesting at least two outputs, to find the echo delay (I presume here that the echo delay is fixed and not the result of bouncing off of multiple surfaces.) And possibly if you use the three-output version to get nd and xhat, you could pass those into icceps() and that might possibly remove the delay.
0 Comments
Joseph Cheng
on 10 May 2015
I've also haven't studied that but i remember coming across a mathworks example in the past. I couldn't find the exact link but this example for 2015 seems to cover the same material.
1 Comment
Walter Roberson
on 10 May 2015
If I read that example correctly, it relies on two input signals, one containing what has recently come out of the speaker delivered from the far end, and the other what has been picked up by the local microphone, consisting of new speech together with an echo from what was played in the speaker. It is thus not directly relevant to the user's case in that the user only has the combined signal of new sound plus echo of existing sound. The user thus has to analyze each part to determine whether an echo of an earlier bit is present and if so filter it out while retaining whatever new is going on. That would make the first order of business to estimate the delay, such as by some cross-correlation. Once the delay is known a filter can be constructed to remove it.
See Also
Categories
Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!