New issue
Advanced search Search tips

Issue 892043 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Oct 5
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Gain too high in WebRTC adaptive digital gain controller 2

Project Member Reported by aleloi@chromium.org, Oct 4

Issue description

Copied from https://webrtc-review.googlesource.com/c/src/+/102922:

The AdaptiveAgc often boosts the signal outside of Float S16 range. It
is expected, which is why we have a limiter after it in the process
chain. But it turns out that this happens regularly even for simple
input examples. The output signal peaks can be as high as +4 dBFs for a
single speaker example (which should be easy). It leads to excessive
gain modulation by the limiter.

What steps will reproduce the problem?
1. Take a low-noise speech file like the ones in https://webrtc.googlesource.com/src.git/+/master/resources/audio_processing/conversational_speech
2. compile audioproc_f with 'apm_debug_dump=true'
3. Run audioproc_f -agc2 1 -i <speech file>

What is the expected result?
The limiter of AGC2 should hardly ever kick in.

What do you see instead?
In the beginning of a call, the limiter is active more that it's not.
 
long_speech_single_speaker_limiter_plot.png
79.2 KB View Download
Description: Show this description
[Triage] This doesn't seem to be a Chromium bug. Should it be a WebRTC bug?
Status: Assigned (was: Untriaged)
#2, grunell@: I want to make a merge request when it's fixed. I think that's easier with a Chrome bug. 
Project Member

Comment 5 by bugdroid1@chromium.org, Oct 5

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

commit 4bb1e4a1d50fbae6043ca73a83117a18d81f755e
Author: Alex Loiko <aleloi@webrtc.org>
Date: Fri Oct 05 09:55:25 2018

Lower gain parameters for AGC2.

The AdaptiveAgc often boosts the signal outside of Float S16 range. It
is expected, which is why we have a limiter after it in the process
chain. But it turns out that this happens regularly even for simple
input examples. The output signal peaks can be as high as +4 dBFs for a
single speaker example (which should be easy). It leads to excessive
gain modulation by the limiter.

This CL is a new tuning designed to produce a safer gain. After this,
we shouldn't hit the saturation region of the limiter as often. But we
will still maintain a high gain.

We have a 'configurable kill-switch': the settings can be changed via
field trials WebRTC-Audio-Agc2Force(Initial|Extra)SaturationMargin.

Bug: webrtc:7494,  chromium:892043 
Change-Id: I5014377050c74c32ae8998282991141eae31cf58
Reviewed-on: https://webrtc-review.googlesource.com/c/102922
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25006}
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/BUILD.gn
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/adaptive_mode_level_estimator_unittest.cc
[add] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/agc2_common.cc
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/agc2_common.h
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/saturation_protector.cc
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/saturation_protector.h
[modify] https://crrev.com/4bb1e4a1d50fbae6043ca73a83117a18d81f755e/modules/audio_processing/agc2/saturation_protector_unittest.cc

Labels: -OS-Android -OS-iOS -OS-Fuchsia Merge-Request-70
Status: Fixed (was: Assigned)
Requesting merge for M-70. This is a bugfix for code behind the WebRtcHybridAgc experiment which is currently in M-70 beta. The change consists of a new tuning and is covered by a kill switch. It's not yet in canary, but will be out in the next one (I think 71.0.3572). Given that the code change is behind a finch experiment and a kill switch, we consider this merge to be safe.

Project Member

Comment 7 by sheriffbot@chromium.org, Oct 5

Labels: -Merge-Request-70 Merge-Review-70 Hotlist-Merge-Review
This bug requires manual review: We are only 10 days from stable.
Please contact the milestone owner if you have questions.
Owners: benmason@(Android), kariahda@(iOS), geohsu@(ChromeOS), abdulsyed@(Desktop)

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

Comment 8 by bugdroid1@chromium.org, Oct 5

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

commit c0d32cef1fc97e8145dcc7a80f6adc03f8bf75bd
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Fri Oct 05 13:14:10 2018

Roll src/third_party/webrtc 78cdde3df652..4bb1e4a1d50f (2 commits)

https://webrtc.googlesource.com/src.git/+log/78cdde3df652..4bb1e4a1d50f


git log 78cdde3df652..4bb1e4a1d50f --date=short --no-merges --format='%ad %ae %s'
2018-10-05 aleloi@webrtc.org Lower gain parameters for AGC2.
2018-10-05 sprang@webrtc.org Hide libvpx vp8 encoder behind an interface and add mock for testing.


Created with:
  gclient setdep -r src/third_party/webrtc@4bb1e4a1d50f

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

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=luci.chromium.try:linux_chromium_archive_rel_ng;luci.chromium.try:mac_chromium_archive_rel_ng

BUG= chromium:892043 
TBR=webrtc-chromium-sheriffs-robots@google.com

Change-Id: I1c344b233a72919ef2cfa09d34ea7f3adb194e41
Reviewed-on: https://chromium-review.googlesource.com/c/1264619
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#597088}
[modify] https://crrev.com/c0d32cef1fc97e8145dcc7a80f6adc03f8bf75bd/DEPS

Labels: -Merge-Review-70 Merge-Approved-70
Change is behind finch. 
Project Member

Comment 10 by sheriffbot@chromium.org, Oct 9

Cc: abdulsyed@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
Project Member

Comment 11 by sheriffbot@chromium.org, Oct 12

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-70

Sign in to add a comment