New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 824111 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , iOS , Chrome , Mac
Pri: 1
Type: Bug



Sign in to add a comment

The AEC3 sometimes has very poor transparency when a headset it used

Project Member Reported by peah@chromium.org, Mar 21 2018

Issue description

When headsets are used in a call where the other endpoint is in a noisy environment, the transparency to nearend may be poor for AEC3, in particular if the nearend speech is weak in the microphone signal.
 

 
Project Member

Comment 1 by bugdroid1@chromium.org, Mar 22 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/5c532d37744ec89927e59c39d82869f12c4e8569

commit 5c532d37744ec89927e59c39d82869f12c4e8569
Author: Per Åhgren <peah@webrtc.org>
Date: Thu Mar 22 00:23:23 2018

Robustification of the echo suppression behavior during headset usage.

This CL robustifies the echo removal behavior when headsets are used.
In particular it:
-Introduces a secondary, more refined alignment when no alignment can
be found using the delay estimator.
-Changes decision logic for when to use the linear filter output.
-Changes the decision logic for when to be transparent.
-Changes the way that the transparent mode works.
-Makes the nonlinear mode less aggressive.
-Removes the detector for non-audible echoes.
-Makes the attenuation when there are signals with strong narrowband
characteristics more mild in scenarios with low render.

Furthermore the CL:
-Removes the input of external echo leakage information.


Bug:  webrtc:9047 , chromium:824111 , webrtc:8314 ,webrtc:8671, webrtc:5201 , webrtc:5919 
Change-Id: Ied1fe0c0a35d3c31b47606ed2db319a73644d406
Reviewed-on: https://webrtc-review.googlesource.com/60866
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22548}
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/api/audio/echo_canceller3_config.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/BUILD.gn
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/aec_state.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/aec_state.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/aec_state_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/block_processor.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/block_processor_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/echo_remover.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/echo_remover.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/echo_remover_metrics.cc
[add] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/filter_analyzer.cc
[add] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/filter_analyzer.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/matched_filter_lag_aggregator_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/mock/mock_echo_remover.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/mock/mock_render_delay_controller.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/output_selector.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_buffer.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_buffer.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_buffer_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_controller.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_controller.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/render_delay_controller_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/residual_echo_estimator.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/residual_echo_estimator.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/subtractor.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/subtractor.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/subtractor_unittest.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/suppression_gain.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/suppression_gain_limiter.cc
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/suppression_gain_limiter.h
[modify] https://crrev.com/5c532d37744ec89927e59c39d82869f12c4e8569/modules/audio_processing/aec3/suppression_gain_unittest.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Mar 22 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/f3e2bf18079f413f93c89d62b221e014366f9b91

commit f3e2bf18079f413f93c89d62b221e014366f9b91
Author: Per Åhgren <peah@webrtc.org>
Date: Thu Mar 22 09:51:14 2018

Further headset mode robustification based on linear filter convergence

This CL adds robustifications for avoiding that the headset mode
is triggered for reverberant or weak echo paths.

Bug:  webrtc:9047 , chromium:824111 , webrtc:8314 ,webrtc:8671, webrtc:5201 , webrtc:5919 
Change-Id: Ib111e617f765377c021a5b633cf13a7917fe62a6
Reviewed-on: https://webrtc-review.googlesource.com/64002
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22557}
[modify] https://crrev.com/f3e2bf18079f413f93c89d62b221e014366f9b91/modules/audio_processing/aec3/aec_state.cc
[modify] https://crrev.com/f3e2bf18079f413f93c89d62b221e014366f9b91/modules/audio_processing/aec3/aec_state.h

Project Member

Comment 3 by bugdroid1@chromium.org, Mar 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e773cfb285e3687410f592886c2400327d5d944d

commit e773cfb285e3687410f592886c2400327d5d944d
Author: webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Thu Mar 22 14:00:39 2018

Roll src/third_party/webrtc/ 3dc0125cf..b3179c75e (45 commits)

https://webrtc.googlesource.com/src.git/+log/3dc0125cf7e8..b3179c75ed40

$ git log 3dc0125cf..b3179c75e --date=short --no-merges --format='%ad %ae %s'

Created with:
  roll-dep src/third_party/webrtc
BUG=chromium:None,chromium:None,chromium:824111,chromium:824679,chromium:none,chromium:None,chromium:None,chromium:None,chromium:824111,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None,chromium:None


The AutoRoll server is located here: https://webrtc-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_archive_rel_ng;master.tryserver.chromium.mac:mac_chromium_archive_rel_ng;master.tryserver.chromium.win:win-msvc-dbg
TBR=webrtc-chromium-sheriffs-robots@google.com

Change-Id: Icaa35e74c476b297d3c935b54e86d9b172d7703e
Reviewed-on: https://chromium-review.googlesource.com/975348
Reviewed-by: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#545059}
[modify] https://crrev.com/e773cfb285e3687410f592886c2400327d5d944d/DEPS

Comment 4 by peah@chromium.org, Mar 23 2018

Cc: tlegrand@chromium.org hlundin@chromium.org huib@chromium.org
Labels: Merge-Request-66
I would like to request a merge of this to M66.
It corrects an issue that arose in M64 and/or M65 (not clear which) which in some cases makes the call experience with headsets extremely poor.

The fixing code has been extensively tested on offline data. It has been baking in Canary for a day and during this it has been extensively tested on the devices in our lab.

The merge is very safe as the code it relates to is only active beneath an experimental flag which can be used to deactivate the code in case anything would go wrong. 
Project Member

Comment 5 by sheriffbot@chromium.org, Mar 23 2018

Labels: -Merge-Request-66 Merge-Review-66 Hotlist-Merge-Review
This bug requires manual review: Less than 21 days to go before AppStore submit on M66
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 6 by cmasso@google.com, Mar 23 2018

Labels: -Hotlist-Merge-Review -Merge-Review-66 Merge-Approved-66
Project Member

Comment 7 by bugdroid1@chromium.org, Mar 23 2018

Labels: merge-merged-66
The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/36500b084b32250d0f9437608628f403df9d18ac

commit 36500b084b32250d0f9437608628f403df9d18ac
Author: Per Åhgren <peah@webrtc.org>
Date: Fri Mar 23 23:03:14 2018

Merge to M66: Robustification of the echo suppression behavior during...

This CL robustifies the echo removal behavior when headsets are used.
In particular it:
-Introduces a secondary, more refined alignment when no alignment can
be found using the delay estimator.
-Changes decision logic for when to use the linear filter output.
-Changes the decision logic for when to be transparent.
-Changes the way that the transparent mode works.
-Makes the nonlinear mode less aggressive.
-Removes the detector for non-audible echoes.
-Makes the attenuation when there are signals with strong narrowband
characteristics more mild in scenarios with low render.

Furthermore the CL:
-Removes the input of external echo leakage information.

(cherry picked from commit 5c532d37744ec89927e59c39d82869f12c4e8569)

TBR: gustaf@webrtc.org, henrik.lundin@webrtc.org
Bug:  webrtc:9047 , chromium:824111 , webrtc:8314 ,webrtc:8671, webrtc:5201 , webrtc:5919 
Change-Id: Ied1fe0c0a35d3c31b47606ed2db319a73644d406
Reviewed-on: https://webrtc-review.googlesource.com/60866
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Original-Commit-Position: refs/heads/master@{#22548}
Reviewed-on: https://webrtc-review.googlesource.com/64482
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/branch-heads/66@{#12}
Cr-Branched-From: 12c8110e8c717b7f0f87615d3b99caac2a69fa6c-refs/heads/master@{#22215}
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/api/audio/echo_canceller3_config.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/BUILD.gn
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/aec_state.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/aec_state.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/aec_state_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/block_processor.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/block_processor_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/echo_remover.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/echo_remover.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/echo_remover_metrics.cc
[add] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/filter_analyzer.cc
[add] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/filter_analyzer.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/matched_filter_lag_aggregator_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/mock/mock_echo_remover.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/mock/mock_render_delay_controller.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/output_selector.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_buffer.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_buffer.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_buffer_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_controller.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_controller.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/render_delay_controller_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/residual_echo_estimator.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/residual_echo_estimator.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/subtractor.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/subtractor.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/subtractor_unittest.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/suppression_gain.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/suppression_gain_limiter.cc
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/suppression_gain_limiter.h
[modify] https://crrev.com/36500b084b32250d0f9437608628f403df9d18ac/modules/audio_processing/aec3/suppression_gain_unittest.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 23 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/79ca31009773b390a6602eadd7ae4988853b3509

commit 79ca31009773b390a6602eadd7ae4988853b3509
Author: Per Åhgren <peah@webrtc.org>
Date: Fri Mar 23 23:12:27 2018

Merge to M66: Further headset mode robustification based on linear ...

This CL adds robustifications for avoiding that the headset mode
is triggered for reverberant or weak echo paths.

(cherry picked from commit f3e2bf18079f413f93c89d62b221e014366f9b91)

TBR: gustaf@webrtc.org,henrik.lundin@webrtc.org
Bug:  webrtc:9047 , chromium:824111 , webrtc:8314 ,webrtc:8671, webrtc:5201 , webrtc:5919 
Change-Id: Ib111e617f765377c021a5b633cf13a7917fe62a6
Reviewed-on: https://webrtc-review.googlesource.com/64002
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Original-Commit-Position: refs/heads/master@{#22557}
Reviewed-on: https://webrtc-review.googlesource.com/64483
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/branch-heads/66@{#13}
Cr-Branched-From: 12c8110e8c717b7f0f87615d3b99caac2a69fa6c-refs/heads/master@{#22215}
[modify] https://crrev.com/79ca31009773b390a6602eadd7ae4988853b3509/modules/audio_processing/aec3/aec_state.cc
[modify] https://crrev.com/79ca31009773b390a6602eadd7ae4988853b3509/modules/audio_processing/aec3/aec_state.h

Comment 9 by peah@chromium.org, Mar 23 2018

Labels: M-66
Status: Fixed (was: Assigned)
Project Member

Comment 10 by sheriffbot@chromium.org, Mar 27 2018

Cc: cmasso@google.com
This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible!

If all merges have been completed, please remove any remaining Merge-Approved labels from this issue.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Merge-Approved-66
Looks to have been merged to M66 already, as per comments 7 and 8.

Sign in to add a comment