From 62814fda28f54c2b464d0d46ad414daa439f55de Mon Sep 17 00:00:00 2001 From: kcoul Date: Fri, 25 Feb 2022 17:15:45 -0800 Subject: [PATCH] Easier to switch between CNG impls for testing --- audio_processing/aec3/echo_remover.cc | 17 ++++++++++------- .../aec3/scaled_comfort_noise_generator.cc | 4 +++- demo/demo.cc | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/audio_processing/aec3/echo_remover.cc b/audio_processing/aec3/echo_remover.cc index afcec75..7a11b41 100644 --- a/audio_processing/aec3/echo_remover.cc +++ b/audio_processing/aec3/echo_remover.cc @@ -21,7 +21,8 @@ #include "audio_processing/aec3/aec3_common.h" #include "audio_processing/aec3/aec3_fft.h" #include "audio_processing/aec3/aec_state.h" -//#include "audio_processing/aec3/comfort_noise_generator.h" +#include "audio_processing/aec3/comfort_noise_generator.h" +#include "audio_processing/aec3/false_comfort_noise_generator.h" #include "audio_processing/aec3/scaled_comfort_noise_generator.h" #include "audio_processing/aec3/echo_path_variability.h" #include "audio_processing/aec3/echo_remover_metrics.h" @@ -151,7 +152,9 @@ class EchoRemoverImpl final : public EchoRemover { const bool use_shadow_filter_output_; Subtractor subtractor_; SuppressionGain suppression_gain_; - ScaledComfortNoiseGenerator scng_; + //ComfortNoiseGenerator cng_; + FalseComfortNoiseGenerator cng_; + //ScaledComfortNoiseGenerator cng_; SuppressionFilter suppression_filter_; RenderSignalAnalyzer render_signal_analyzer_; ResidualEchoEstimator residual_echo_estimator_; @@ -201,7 +204,7 @@ EchoRemoverImpl::EchoRemoverImpl(const EchoCanceller3Config& config, optimization_, sample_rate_hz, num_capture_channels), - scng_(optimization_, num_capture_channels_), + cng_(optimization_, num_capture_channels_), suppression_filter_(optimization_, sample_rate_hz_, num_capture_channels_), @@ -395,7 +398,7 @@ void EchoRemoverImpl::ProcessCapture( residual_echo_estimator_.Estimate(aec_state_, *render_buffer, S2_linear, Y2, R2); - scng_.Compute(aec_state_.SaturatedCapture(), Y2, comfort_noise, + cng_.Compute(aec_state_.SaturatedCapture(), Y2, comfort_noise, high_band_comfort_noise); if (aec_state_.UsableLinearEstimate()) { @@ -415,14 +418,14 @@ void EchoRemoverImpl::ProcessCapture( float high_bands_gain; std::array G; suppression_gain_.GetGain(nearend_spectrum, echo_spectrum, R2, - scng_.NoiseSpectrum(), render_signal_analyzer_, + cng_.NoiseSpectrum(), render_signal_analyzer_, aec_state_, x, &high_bands_gain, &G); suppression_filter_.ApplyGain(comfort_noise, high_band_comfort_noise, G, high_bands_gain, Y_fft, y); // Update the metrics. - metrics_.Update(aec_state_, scng_.NoiseSpectrum()[0], G); + metrics_.Update(aec_state_, cng_.NoiseSpectrum()[0], G); // Debug outputs for the purpose of development and analysis. data_dumper_->DumpWav("aec3_echo_estimate", kBlockSize, @@ -430,7 +433,7 @@ void EchoRemoverImpl::ProcessCapture( data_dumper_->DumpRaw("aec3_output", (*y)[0][0]); data_dumper_->DumpRaw("aec3_narrow_render", render_signal_analyzer_.NarrowPeakBand() ? 1 : 0); - data_dumper_->DumpRaw("aec3_N2", scng_.NoiseSpectrum()[0]); + data_dumper_->DumpRaw("aec3_N2", cng_.NoiseSpectrum()[0]); data_dumper_->DumpRaw("aec3_suppressor_gain", G); data_dumper_->DumpWav("aec3_output", rtc::ArrayView(&(*y)[0][0][0], kBlockSize), diff --git a/audio_processing/aec3/scaled_comfort_noise_generator.cc b/audio_processing/aec3/scaled_comfort_noise_generator.cc index 5e8c39a..eddb9e1 100644 --- a/audio_processing/aec3/scaled_comfort_noise_generator.cc +++ b/audio_processing/aec3/scaled_comfort_noise_generator.cc @@ -156,7 +156,9 @@ void ScaledComfortNoiseGenerator::Compute( // Limit the noise to a floor matching a WGN input of -96 dBFS. // NOTE: This means that the noise shall be *no less* than -96 dBFS, there is no limit on maximum constexpr float kNoiseFloor = 17.1267f; //dBu??? - constexpr float kNoiseCeiling = 10.0f; + + //TODO: This code does not accomplish the intended goal, there is no advantage over FCNG currently. + constexpr float kNoiseCeiling = 4.0f; for (size_t ch = 0; ch < num_capture_channels_; ++ch) { for (auto& n : N2_[ch]) { diff --git a/demo/demo.cc b/demo/demo.cc index c8d3f2f..a652acc 100644 --- a/demo/demo.cc +++ b/demo/demo.cc @@ -177,4 +177,4 @@ int main(int argc, char* argv[]) wav_write_close(h_linear_out); return 0; -} \ No newline at end of file +}