Echo Cancellation AEC3 seems not to be working

754 views
Skip to first unread message

yoram....@gmail.com

unread,
Aug 15, 2017, 3:03:40 AM8/15/17
to discuss-webrtc
Hello -

I am trying to use the webrtc AEC3 module and getting only weak noise at the Microphone output.
I am using the webrtc source code from 07-Aug-2017.
When the EchoCanceller3.enable flag is set to "false" everything is working and echo-cancellation is as usual.
When I set the flag to "true" I'm getting only very weak noise at the Microphone output instead of the Microphone signal with canceled Speaker signal.

Anybody knows what is the status of AEC3 or why I may be having this issue ?

Regards,
  Yoram

pe...@webrtc.org

unread,
Aug 15, 2017, 3:47:58 AM8/15/17
to discuss-webrtc
Hi,
Thanks for raising the attention of this! This is unknown to us and we have not seen that before.

Would you be able to file a bug and in that include a description of your setup? If you are able to it would also be good to have an aecdump recording of the issue.

yoram....@gmail.com

unread,
Aug 15, 2017, 4:52:37 AM8/15/17
to discuss-webrtc
An update :
It seems that the AEC3 is working but only when the speaker signal is very weak.
I was playing a test noise file through the local speaker with quite loud volume.
When I muted the local speaker volume I started to hear the local microphone on the remote side.

Also, I may have some framework issue (ours company framework, not webrtc) in correct/timely feeding of the Mic/Spk streams.
I am debugging this now.

Thanks,
  Yoram

בתאריך יום שלישי, 15 באוגוסט 2017 בשעה 10:47:58 UTC+3, מאת pe...@webrtc.org:

yoram....@gmail.com

unread,
Aug 15, 2017, 5:05:22 AM8/15/17
to discuss-webrtc
It looks that our framework has CPU real-time issues for feeding audio frames in time when using AEC3.
Maybe the AEC3 is taking a lot of CPU time and causing us real-time issues.

Anyway, please suspend checking for AEC3 problems, until I verify our framework issues.

Thanks, and sorry for the bother.
I will update when I have more info.

Regards,
  Yoram

בתאריך יום שלישי, 15 באוגוסט 2017 בשעה 11:52:37 UTC+3, מאת yoram....@gmail.com:

yoram....@gmail.com

unread,
Aug 15, 2017, 8:44:15 AM8/15/17
to discuss-webrtc
Latest update -
I found out that the real time problem I had was because I was running in VisualStudio in debug mode.
In debug mode it takes more than 20 mSec to process a 20 mSec microphone buffer.
When built in release mode the situation is much better and it takes ~1 mSec to process the same buffer.
BTW - The old AEC didn't have such a big difference between debug and release modes.

Other issues I see when working in release (good) mode.
1. When the microphone gets saturated the microphone signal is blocked completely. 
    So if the mic audio is close to the saturation level you get "cuts" in the mic stream.
2. When the local speaker noise level is changing, sometimes the local mic signal is lost completely.
    I don't know if it is blocked or erroneously canceled by the AEC3.
    After some time (few seconds), or if I lower the speaker noise level, it may come back.

If you (AEC3 developers ?) would like I can upload samples of my MicIn/SpkIn/MicOut from the test I'm doing,
that are recorded by our framework.

BTW - 2 questions regarding AEC3 debug:
1. How do I activate the AEC3 dump and/or logs ?
2. Is there any log where I can get a status of the AEC3 / AudioProcessing module configuration ?

Regards,
  Yoram




בתאריך יום שלישי, 15 באוגוסט 2017 בשעה 12:05:22 UTC+3, מאת yoram....@gmail.com:

pe...@webrtc.org

unread,
Aug 23, 2017, 2:36:56 AM8/23/17
to discuss-webrtc
Thanks for the update!
I see a similar difference between Debug and Release mode. I have not looked into it in more detail but my guess is that is due to usage of vectors in loops, where inlining of the .size() methods matter. The old AEC code does not use vectors.

Regarding the other issues, it would be great if you could file a bug and upload recordings that illustrate what happens!

For aecdump recordings, that is activated similarly for AEC3 as for the old AEC and the configuration in APM is stored in those. The tool unpack_aecdump (available in WebRTC) can be used to analyze the recordings.

陈银态

unread,
Sep 13, 2017, 2:37:03 AM9/13/17
to discuss-webrtc
we want use EchoCanceller3 function too, but when set true, the voice become discontinuous, it seems that the voice is also be canelled, have you solve the problem?
在 2017年8月15日星期二 UTC+8下午3:03:40,yoram....@gmail.com写道:
Reply all
Reply to author
Forward
0 new messages