Chromium Code Reviews| 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()); |