AEC3: Changes to how the reverberation decay is applied.
In this work we introduce some changes on how the reverberation model for AEC3 is applied. Currently, the exponential modelling of the tails is applied over the linear echo estimates. That might result in an overestimation of the reverberation tails under certain conditions. In this work, the reverberation model is instead applied over an estimate of the energies at the tails of the linear estimate. Additionally, the stationary estimator is changed so it does not disable the aec immediately after a burst of activity. Bug: webrtc:9384,webrtc:9400,chromium:852257 Change-Id: Ia486694ed326cfe231fc688877c0b9b6e2c450ff Reviewed-on: https://webrtc-review.googlesource.com/82161 Reviewed-by: Per Åhgren <peah@webrtc.org> Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23599}
This commit is contained in:

committed by
Commit Bot

parent
9633cff81a
commit
075cb2b2f7
@ -136,6 +136,14 @@ class AecState {
|
||||
const std::array<float, kFftLengthBy2Plus1>& Y2,
|
||||
const std::array<float, kBlockSize>& s);
|
||||
|
||||
// Returns the gain at the tail of the linear filter.
|
||||
float GetFilterTailGain() const { return filter_analyzer_.GetTailGain(); }
|
||||
|
||||
// Returns filter length in blocks.
|
||||
int FilterLengthBlocks() const {
|
||||
return filter_analyzer_.FilterLengthBlocks();
|
||||
}
|
||||
|
||||
private:
|
||||
void UpdateReverb(const std::vector<float>& impulse_response);
|
||||
bool DetectActiveRender(rtc::ArrayView<const float> x) const;
|
||||
@ -194,7 +202,6 @@ class AecState {
|
||||
bool finite_erl_ = false;
|
||||
size_t active_blocks_since_converged_filter_ = 0;
|
||||
EchoAudibility echo_audibility_;
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AecState);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user