@@ -567,7 +567,7 @@ int main(int argc, char **argv) {
567567 noise_gain = pow (10. , (-30 + (rand ()%50 ))/20. );
568568 if (rand ()%10 == 0 ) noise_gain = 0 ;
569569 noise_gain *= speech_gain ;
570- if (rand ()%10 == 0 ) speech_gain = 0 ;
570+ if (rand ()%4 == 0 ) speech_gain = 0 ;
571571 gain_change_count = 0 ;
572572 rand_resp (a_noise , b_noise );
573573 rand_resp (a_sig , b_sig );
@@ -579,21 +579,30 @@ int main(int argc, char **argv) {
579579 }
580580 }
581581 }
582- fread (tmp , sizeof (short ), FRAME_SIZE , f1 );
583- if (feof (f1 )) break ;
584- for (i = 0 ;i < FRAME_SIZE ;i ++ ) x [i ] = speech_gain * tmp [i ];
585- fread (tmp , sizeof (short ), FRAME_SIZE , f2 );
586- if (feof (f2 )) break ;
587- for (i = 0 ;i < FRAME_SIZE ;i ++ ) n [i ] = noise_gain * tmp [i ];
582+ if (speech_gain != 0 ) {
583+ fread (tmp , sizeof (short ), FRAME_SIZE , f1 );
584+ if (feof (f1 )) break ;
585+ for (i = 0 ;i < FRAME_SIZE ;i ++ ) x [i ] = speech_gain * tmp [i ];
586+ for (i = 0 ;i < FRAME_SIZE ;i ++ ) E += tmp [i ]* (float )tmp [i ];
587+ } else {
588+ for (i = 0 ;i < FRAME_SIZE ;i ++ ) x [i ] = 0 ;
589+ E = 0 ;
590+ }
591+ if (noise_gain != 0 ) {
592+ fread (tmp , sizeof (short ), FRAME_SIZE , f2 );
593+ if (feof (f2 )) break ;
594+ for (i = 0 ;i < FRAME_SIZE ;i ++ ) n [i ] = noise_gain * tmp [i ];
595+ } else {
596+ for (i = 0 ;i < FRAME_SIZE ;i ++ ) n [i ] = 0 ;
597+ }
588598 biquad (x , mem_hp_x , x , b_hp , a_hp , FRAME_SIZE );
589599 biquad (x , mem_resp_x , x , b_sig , a_sig , FRAME_SIZE );
590600 biquad (n , mem_hp_n , n , b_hp , a_hp , FRAME_SIZE );
591601 biquad (n , mem_resp_n , n , b_noise , a_noise , FRAME_SIZE );
592602 for (i = 0 ;i < FRAME_SIZE ;i ++ ) xn [i ] = x [i ] + n [i ];
593- for (i = 0 ;i < FRAME_SIZE ;i ++ ) E += x [i ]* (float )x [i ];
594- if (E > 1e9f * speech_gain * speech_gain ) {
603+ if (E > 1e9f ) {
595604 vad_cnt = 0 ;
596- } else if (E > 1e8f * speech_gain * speech_gain ) {
605+ } else if (E > 1e8f ) {
597606 vad_cnt -= 5 ;
598607 if (vad_cnt < 0 ) vad_cnt = 0 ;
599608 } else {
@@ -611,9 +620,10 @@ int main(int argc, char **argv) {
611620 pitch_filter (X , P , Ex , Ep , Exp , g );
612621 //printf("%f %d\n", noisy->last_gain, noisy->last_period);
613622 for (i = 0 ;i < NB_BANDS ;i ++ ) {
614- g [i ] = sqrt ((Ey [i ]+ 1e-2 )/(Ex [i ]+ 1e-2 ));
623+ g [i ] = sqrt ((Ey [i ]+ 1e-3 )/(Ex [i ]+ 1e-3 ));
615624 if (g [i ] > 1 ) g [i ] = 1 ;
616625 if (silence || i > band_lp ) g [i ] = -1 ;
626+ if (Ey [i ] < 3e-3 && Ex [i ] < 3e-3 ) g [i ] = -1 ;
617627 }
618628 count ++ ;
619629#if 0
0 commit comments