 Chromium Code Reviews
 Chromium Code Reviews Issue 1821443003:
  Fix normalization of noise estimate in NoiseSuppressor  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master
    
  
    Issue 1821443003:
  Fix normalization of noise estimate in NoiseSuppressor  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master| Index: webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc | 
| diff --git a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc | 
| index 04d36545216879d464065a62d773f3abb8d74dbd..7b25241e903c573c85a94752d6d197e90e3b5567 100644 | 
| --- a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc | 
| +++ b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc | 
| @@ -29,7 +29,7 @@ const int kWindowSizeMs = 16; | 
| const int kChunkSizeMs = 10; // Size provided by APM. | 
| const float kClipFreqKhz = 0.2f; | 
| const float kKbdAlpha = 1.5f; | 
| -const float kLambdaBot = -1.0f; // Extreme values in bisection | 
| +const float kLambdaBot = -1.f; // Extreme values in bisection | 
| const float kLambdaTop = -1e-5f; // search for lamda. | 
| const float kVoiceProbabilityThreshold = 0.02f; | 
| // Number of chunks after voice activity which is still considered speech. | 
| @@ -37,6 +37,7 @@ const size_t kSpeechOffsetDelay = 80; | 
| const float kDecayRate = 0.98f; // Power estimation decay rate. | 
| const float kMaxRelativeGainChange = 0.04f; // Maximum relative change in gain. | 
| const float kRho = 0.0004f; // Default production and interpretation SNR. | 
| +const float kPowerNormalizationFactor = 1.f / (1 << 30); | 
| // Returns dot product of vectors |a| and |b| with size |length|. | 
| float DotProduct(const float* a, const float* b, size_t length) { | 
| @@ -54,7 +55,8 @@ void MapToErbBands(const float* pow, | 
| float* result) { | 
| for (size_t i = 0; i < filter_bank.size(); ++i) { | 
| RTC_DCHECK_GT(filter_bank[i].size(), 0u); | 
| - result[i] = DotProduct(filter_bank[i].data(), pow, filter_bank[i].size()); | 
| + result[i] = kPowerNormalizationFactor * | 
| + DotProduct(filter_bank[i].data(), pow, filter_bank[i].size()); | 
| } | 
| } | 
| @@ -140,8 +142,8 @@ void IntelligibilityEnhancer::ProcessAudioBlock( | 
| MapToErbBands(noise_power.data(), capture_filter_bank_, | 
| filtered_noise_pow_.data()); | 
| SolveForGainsGivenLambda(kLambdaTop, start_freq_, gains_eq_.data()); | 
| - const float power_target = | 
| - std::accumulate(clear_power.data(), clear_power.data() + freqs_, 0.f); | 
| + const float power_target = std::accumulate( | 
| 
peah-webrtc
2016/03/31 20:50:57
Is this related to the normalization of the noise?
 
aluebs-webrtc
2016/04/01 01:52:42
Yes, I need to accumulate over the normalized sign
 | 
| + filtered_clear_pow_.data(), filtered_clear_pow_.data() + bank_size_, 0.f); | 
| const float power_top = | 
| DotProduct(gains_eq_.data(), filtered_clear_pow_.data(), bank_size_); | 
| SolveForGainsGivenLambda(kLambdaBot, start_freq_, gains_eq_.data()); |