webrtc/modules/audio_processing
Jesús de Vicente Peña 7682c6e2cb Improves in the ERLE estimation for AEC3
The estimation on how well the linear filter in the AEC3 is performing
is done through an estimation of the ERLE. That estimation is then
used for knowing how much the suppressor needs to react in order to
cancel all the echoes.

In the current code, the ERLE is quite conservative during farend
inactivity and it is common that it goes to a minimum value during
those periods. Under highly varying conditions, that is probably the
right approach. However, in other scenarios where conditions does not
change that fast there is a loss in transparency that could be avoided
by means of a different ERLE estimation.

In the current CL, the ERLE estimation has been changed in the
following way:
- During farend activity the ERLE is estimated through a 1st order AR
smoother. This smoother goes faster toward lower ERLE values than to
larger ones in order to avoid overestimation of this
value. Furthermore, during the beginning of the farend burst, an
estimation of the ERLE is done that aim to represent the performance
of the linear filter during onsets. Under highly variant environments,
those quantities, the ERLE during onsets and the one computed during
the whole farend duration, would differ a lot. If the environment is
more stationary, those quantities would be much more similar.
- During nearend activity the ERLE estimation is decreased toward a
value of the ERLE during onsets.

Bug: webrtc:9040
Change-Id: Ieab86370a4333d2d0cd7041047d29651de4f6827
Reviewed-on: https://webrtc-review.googlesource.com/62342
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22568}
2018-03-22 14:34:04 +00:00
..
aec Delete unneeded includes of wav_file.h and file_wrapper.h. 2018-03-20 15:59:27 +00:00
aec3 Improves in the ERLE estimation for AEC3 2018-03-22 14:34:04 +00:00
aec_dump Remove the public_deps to fileutils from test_support. 2018-03-16 09:06:27 +00:00
aecm Use of unititialized value in AECM. 2018-01-25 15:09:14 +00:00
agc Fixing -Wstrict-prototypes warnings. 2018-03-19 16:57:21 +00:00
agc2 Change place of UMA logging in AudioMixer. 2018-03-19 14:10:51 +00:00
audio_generator Add stub draft of audio generator to APM 2018-03-05 09:28:52 +00:00
beamformer Fix macro clash with _USE_MATH_DEFINES. 2017-12-13 09:39:20 +00:00
echo_detector Optional: Use nullopt and implicit construction in /modules/audio_processing 2017-11-20 10:19:30 +00:00
include Add more parameters to the Initialize function of the echo detector. 2018-03-15 09:21:56 +00:00
intelligibility Move some numeric utility code from rtc_base/ to rtc_base/numerics/ 2017-11-22 11:21:47 +00:00
logging Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
ns Fixing -Wstrict-prototypes warnings. 2018-03-19 16:57:21 +00:00
test Remove the public_deps to fileutils from test_support. 2018-03-16 09:06:27 +00:00
transient Streamline error handling and logging in the audio processing module 2018-02-15 15:06:26 +00:00
utility Fix typo in the include path of ooura_fft.h 2018-01-11 07:57:40 +00:00
vad Remove the public_deps to fileutils from test_support. 2018-03-16 09:06:27 +00:00
audio_buffer.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
audio_buffer.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_buffer_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
audio_frame_view_unittest.cc Comments in FixedDigitalLevelEstimator. 2018-02-16 14:17:08 +00:00
audio_processing_impl.cc Add more parameters to the Initialize function of the echo detector. 2018-03-15 09:21:56 +00:00
audio_processing_impl.h Reland "Deprecate the adaptive level controller" 2018-03-09 09:42:13 +00:00
audio_processing_impl_locking_unittest.cc Use AudioProcessingBuilder everywhere AudioProcessing is created. 2018-01-09 13:45:20 +00:00
audio_processing_impl_unittest.cc Change return types of refcount methods. 2017-10-20 07:46:03 +00:00
audio_processing_performance_unittest.cc Use AudioProcessingBuilder everywhere AudioProcessing is created. 2018-01-09 13:45:20 +00:00
audio_processing_unittest.cc Reland "Deprecate the adaptive level controller" 2018-03-09 09:42:13 +00:00
BUILD.gn Remove the public_deps to fileutils from test_support. 2018-03-16 09:06:27 +00:00
common.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
config_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
debug.proto
DEPS Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
echo_cancellation_bit_exact_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
echo_cancellation_impl.cc Enforcing a stream delay of 0 to be assumed in the AEC on Chrome OS 2017-12-22 15:42:13 +00:00
echo_cancellation_impl.h Enforcing a stream delay of 0 to be assumed in the AEC on Chrome OS 2017-12-22 15:42:13 +00:00
echo_cancellation_impl_unittest.cc Use AudioProcessingBuilder everywhere AudioProcessing is created. 2018-01-09 13:45:20 +00:00
echo_control_mobile_impl.cc Streamline error handling and logging in the audio processing module 2018-02-15 15:06:26 +00:00
echo_control_mobile_impl.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
echo_control_mobile_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
gain_control_for_experimental_agc.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
gain_control_for_experimental_agc.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
gain_control_impl.cc Optional: Use nullopt and implicit construction in /modules/audio_processing 2017-11-20 10:19:30 +00:00
gain_control_impl.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
gain_control_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
gain_controller2.cc Add FixedGainController and move GainController2 in APM. 2018-02-16 10:56:38 +00:00
gain_controller2.h Add FixedGainController and move GainController2 in APM. 2018-02-16 10:56:38 +00:00
gain_controller2_unittest.cc Add FixedGainController and move GainController2 in APM. 2018-02-16 10:56:38 +00:00
level_estimator_impl.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
level_estimator_impl.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
level_estimator_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
low_cut_filter.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
low_cut_filter.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
low_cut_filter_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
noise_suppression_impl.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
noise_suppression_impl.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
noise_suppression_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
OWNERS Add gustaf to audio_processing OWNERS 2018-02-06 10:54:29 +00:00
render_queue_item_verifier.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
residual_echo_detector.cc Add more parameters to the Initialize function of the echo detector. 2018-03-15 09:21:56 +00:00
residual_echo_detector.h Add more parameters to the Initialize function of the echo detector. 2018-03-15 09:21:56 +00:00
residual_echo_detector_unittest.cc Make the echo detector injectable. 2018-01-11 15:43:01 +00:00
rms_level.cc Optional: Use nullopt and implicit construction in /modules/audio_processing 2017-11-20 10:19:30 +00:00
rms_level.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
rms_level_unittest.cc Move some more numeric utility code from rtc_base/ to rtc_base/numerics/ 2017-11-22 12:39:39 +00:00
splitting_filter.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
splitting_filter.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
splitting_filter_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
three_band_filter_bank.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
three_band_filter_bank.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
typing_detection.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
typing_detection.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
voice_detection_impl.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
voice_detection_impl.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
voice_detection_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00