From 12cccddc63cf7c94eb39e3c96e46e421f8eb9c00 Mon Sep 17 00:00:00 2001 From: "bjornv@webrtc.org" Date: Thu, 19 Jan 2012 08:56:38 +0000 Subject: [PATCH] NS-SWB: Actived SWB processing at once, i.e., no startup phase. Performance verified on a few 32 kHz files. BUG= TEST=audioproc, audioproc_unittest Updated output_data_float.pb Changes in SWB tests (3, 6, 9 and 12) as Running test 3 of 12... src/modules/audio_processing/test/unit_test.cc:1182: Failure Value of: max_output_average Actual: 1363 Expected: test->max_output_average() Which is: 1386 Running test 6 of 12... src/modules/audio_processing/test/unit_test.cc:1182: Failure Value of: max_output_average Actual: 2070 Expected: test->max_output_average() Which is: 2109 Running test 9 of 12... src/modules/audio_processing/test/unit_test.cc:1182: Failure Value of: max_output_average Actual: 1314 Expected: test->max_output_average() Which is: 1336 Running test 12 of 12... src/modules/audio_processing/test/unit_test.cc:1182: Failure Value of: max_output_average Actual: 2049 Expected: test->max_output_average() Which is: 2085 Review URL: https://webrtc-codereview.appspot.com/344013 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1465 4adac7df-926f-26a2-2b94-8c16560cd09d --- src/modules/audio_processing/ns/ns_core.c | 48 +++++++++--------- .../audio_processing/output_data_float.pb | Bin 1404 -> 1404 bytes 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/modules/audio_processing/ns/ns_core.c b/src/modules/audio_processing/ns/ns_core.c index e80f699c5b..e5aa4ff364 100644 --- a/src/modules/audio_processing/ns/ns_core.c +++ b/src/modules/audio_processing/ns/ns_core.c @@ -1254,31 +1254,29 @@ int WebRtcNs_ProcessCore(NSinst_t* inst, for (i = 0; i < inst->magnLen; i++) { inst->speechProbHB[i] = probSpeechFinal[i]; } - if (inst->blockInd > END_STARTUP_LONG) { - // average speech prob from low band - // avg over second half (i.e., 4->8kHz) of freq. spectrum - avgProbSpeechHB = 0.0; - for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) { - avgProbSpeechHB += inst->speechProbHB[i]; - } - avgProbSpeechHB = avgProbSpeechHB / ((float)deltaBweHB); - // average filter gain from low band - // average over second half (i.e., 4->8kHz) of freq. spectrum - avgFilterGainHB = 0.0; - for (i = inst->magnLen - deltaGainHB - 1; i < inst->magnLen - 1; i++) { - avgFilterGainHB += inst->smooth[i]; - } - avgFilterGainHB = avgFilterGainHB / ((float)(deltaGainHB)); - avgProbSpeechHBTmp = (float)2.0 * avgProbSpeechHB - (float)1.0; - // gain based on speech prob: - gainModHB = (float)0.5 * ((float)1.0 + (float)tanh(gainMapParHB * avgProbSpeechHBTmp)); - //combine gain with low band gain - gainTimeDomainHB = (float)0.5 * gainModHB + (float)0.5 * avgFilterGainHB; - if (avgProbSpeechHB >= (float)0.5) { - gainTimeDomainHB = (float)0.25 * gainModHB + (float)0.75 * avgFilterGainHB; - } - gainTimeDomainHB = gainTimeDomainHB * decayBweHB; - } // end of converged + // average speech prob from low band + // avg over second half (i.e., 4->8kHz) of freq. spectrum + avgProbSpeechHB = 0.0; + for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) { + avgProbSpeechHB += inst->speechProbHB[i]; + } + avgProbSpeechHB = avgProbSpeechHB / ((float)deltaBweHB); + // average filter gain from low band + // average over second half (i.e., 4->8kHz) of freq. spectrum + avgFilterGainHB = 0.0; + for (i = inst->magnLen - deltaGainHB - 1; i < inst->magnLen - 1; i++) { + avgFilterGainHB += inst->smooth[i]; + } + avgFilterGainHB = avgFilterGainHB / ((float)(deltaGainHB)); + avgProbSpeechHBTmp = (float)2.0 * avgProbSpeechHB - (float)1.0; + // gain based on speech prob: + gainModHB = (float)0.5 * ((float)1.0 + (float)tanh(gainMapParHB * avgProbSpeechHBTmp)); + //combine gain with low band gain + gainTimeDomainHB = (float)0.5 * gainModHB + (float)0.5 * avgFilterGainHB; + if (avgProbSpeechHB >= (float)0.5) { + gainTimeDomainHB = (float)0.25 * gainModHB + (float)0.75 * avgFilterGainHB; + } + gainTimeDomainHB = gainTimeDomainHB * decayBweHB; //make sure gain is within flooring range // flooring bottom if (gainTimeDomainHB < inst->denoiseBound) { diff --git a/test/data/audio_processing/output_data_float.pb b/test/data/audio_processing/output_data_float.pb index ccd7509267064cc5238c272cdfd2a12801e56505..6a48193d4a2e110d28d8c9ce0ee124ef9ef0ff6c 100644 GIT binary patch delta 43 zcmeyv^@nT1C-%!+4$oOUeosEb?6BFA(TV!Z delta 43 zcmeyv^@nT1C-zrd4$oOUeosEb?6BFA(T