diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index fdd74a6978..64c9b124a8 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -46,10 +46,10 @@ struct EchoCanceller3Config { float noise_gate; }; - MainConfiguration main = {13, 0.005f, 0.1f, 0.001f, 20075344.f}; + MainConfiguration main = {13, 0.0005f, 0.01f, 0.001f, 20075344.f}; ShadowConfiguration shadow = {13, 0.7f, 20075344.f}; - MainConfiguration main_initial = {12, 0.05f, 5.f, 0.001f, 20075344.f}; + MainConfiguration main_initial = {12, 0.005f, 0.5f, 0.001f, 20075344.f}; ShadowConfiguration shadow_initial = {12, 0.9f, 20075344.f}; size_t config_change_duration_blocks = 250; diff --git a/modules/audio_processing/aec3/echo_canceller3.cc b/modules/audio_processing/aec3/echo_canceller3.cc index 0caf179627..5a37ebd059 100644 --- a/modules/audio_processing/aec3/echo_canceller3.cc +++ b/modules/audio_processing/aec3/echo_canceller3.cc @@ -46,6 +46,10 @@ bool EnableSuppressorNearendAveraging() { "WebRTC-Aec3SuppressorNearendAveragingKillSwitch"); } +bool EnableSlowFilterAdaptation() { + return !field_trial::IsEnabled("WebRTC-Aec3SlowFilterAdaptationKillSwitch"); +} + // Method for adjusting config parameter dependencies.. EchoCanceller3Config AdjustConfig(const EchoCanceller3Config& config) { EchoCanceller3Config adjusted_cfg = config; @@ -98,6 +102,13 @@ EchoCanceller3Config AdjustConfig(const EchoCanceller3Config& config) { adjusted_cfg.suppressor.nearend_average_blocks = 1; } + if (!EnableSlowFilterAdaptation()) { + adjusted_cfg.filter.main.leakage_converged = 0.005f; + adjusted_cfg.filter.main.leakage_diverged = 0.1f; + adjusted_cfg.filter.main_initial.leakage_converged = 0.05f; + adjusted_cfg.filter.main_initial.leakage_diverged = 5.f; + } + return adjusted_cfg; } diff --git a/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc b/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc index ed30799490..e9d768b158 100644 --- a/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc +++ b/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc @@ -221,7 +221,7 @@ TEST(MainFilterUpdateGain, GainCausesFilterToConverge) { std::array y; FftData G; - RunFilterUpdateTest(500, delay_samples, filter_length_blocks, + RunFilterUpdateTest(600, delay_samples, filter_length_blocks, blocks_with_echo_path_changes, blocks_with_saturation, false, &e, &y, &G); @@ -253,11 +253,11 @@ TEST(MainFilterUpdateGain, DecreasingGain) { std::array G_b_power; std::array G_c_power; - RunFilterUpdateTest(100, 65, 12, blocks_with_echo_path_changes, + RunFilterUpdateTest(250, 65, 12, blocks_with_echo_path_changes, blocks_with_saturation, false, &e, &y, &G_a); - RunFilterUpdateTest(300, 65, 12, blocks_with_echo_path_changes, + RunFilterUpdateTest(500, 65, 12, blocks_with_echo_path_changes, blocks_with_saturation, false, &e, &y, &G_b); - RunFilterUpdateTest(600, 65, 12, blocks_with_echo_path_changes, + RunFilterUpdateTest(750, 65, 12, blocks_with_echo_path_changes, blocks_with_saturation, false, &e, &y, &G_c); G_a.Spectrum(Aec3Optimization::kNone, G_a_power);