From 1925402ed8fa8bce2e018047331afd107b557615 Mon Sep 17 00:00:00 2001 From: Alessio Bazzica Date: Fri, 23 Oct 2020 10:58:01 +0200 Subject: [PATCH] RNN VAD: LP residual optimized (part 3) Use hard-coded constants previously computed at runtime within a loop in `DenoiseAutoCorrelation`. Note that the `RnnVadTest.LpResidualPipelineBitExactness` unit test is still passing. Bug: webrtc:10480 Change-Id: I02c2fff7dc7153ea2ab8a27cad8a479a0f029996 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/189963 Commit-Queue: Alessio Bazzica Reviewed-by: Jakob Ivarsson Cr-Commit-Position: refs/heads/master@{#32489} --- modules/audio_processing/agc2/rnn_vad/lp_residual.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/audio_processing/agc2/rnn_vad/lp_residual.cc b/modules/audio_processing/agc2/rnn_vad/lp_residual.cc index dd9212f838..e62bcc425c 100644 --- a/modules/audio_processing/agc2/rnn_vad/lp_residual.cc +++ b/modules/audio_processing/agc2/rnn_vad/lp_residual.cc @@ -40,9 +40,13 @@ void DenoiseAutoCorrelation( rtc::ArrayView auto_corr) { // Assume -40 dB white noise floor. auto_corr[0] *= 1.0001f; - for (size_t i = 1; i < kNumLpcCoefficients; ++i) { - auto_corr[i] -= auto_corr[i] * (0.008f * i) * (0.008f * i); - } + // Hard-coded values obtained as + // [np.float32((0.008*0.008*i*i)) for i in range(1,5)]. + auto_corr[1] -= auto_corr[1] * 0.000064f; + auto_corr[2] -= auto_corr[2] * 0.000256f; + auto_corr[3] -= auto_corr[3] * 0.000576f; + auto_corr[4] -= auto_corr[4] * 0.001024f; + static_assert(kNumLpcCoefficients == 5, "Update `auto_corr`."); } // Computes the initial inverse filter coefficients given the auto-correlation