Skip to content

Commit fa3d981

Browse files
committed
features #12
1 parent c0a49ce commit fa3d981

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/denoise.c

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)