From e018b6f1521abcf6c971130c2b4108fbdfd3df0a Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@jmvalin.ca> Date: Sun, 24 Jun 2018 03:48:51 -0400 Subject: [PATCH] cleanup --- dnn/celt_lpc.c | 43 --------------- dnn/denoise.c | 142 ++++++------------------------------------------- 2 files changed, 15 insertions(+), 170 deletions(-) diff --git a/dnn/celt_lpc.c b/dnn/celt_lpc.c index 5d7ffa4e..49192948 100644 --- a/dnn/celt_lpc.c +++ b/dnn/celt_lpc.c @@ -225,28 +225,6 @@ int _celt_autocorr( xptr = xx; } shift=0; -#ifdef FIXED_POINT - { - opus_val32 ac0; - ac0 = 1+(n<<7); - if (n&1) ac0 += SHR32(MULT16_16(xptr[0],xptr[0]),9); - for(i=(n&1);i<n;i+=2) - { - ac0 += SHR32(MULT16_16(xptr[i],xptr[i]),9); - ac0 += SHR32(MULT16_16(xptr[i+1],xptr[i+1]),9); - } - - shift = celt_ilog2(ac0)-30+10; - shift = (shift)/2; - if (shift>0) - { - for(i=0;i<n;i++) - xx[i] = PSHR32(xptr[i], shift); - xptr = xx; - } else - shift = 0; - } -#endif celt_pitch_xcorr(xptr, xptr, ac, fastN, lag+1); for (k=0;k<=lag;k++) { @@ -254,26 +232,5 @@ int _celt_autocorr( d = MAC16_16(d, xptr[i], xptr[i-k]); ac[k] += d; } -#ifdef FIXED_POINT - shift = 2*shift; - if (shift<=0) - ac[0] += SHL32((opus_int32)1, -shift); - if (ac[0] < 268435456) - { - int shift2 = 29 - EC_ILOG(ac[0]); - for (i=0;i<=lag;i++) - ac[i] = SHL32(ac[i], shift2); - shift -= shift2; - } else if (ac[0] >= 536870912) - { - int shift2=1; - if (ac[0] >= 1073741824) - shift2++; - for (i=0;i<=lag;i++) - ac[i] = SHR32(ac[i], shift2); - shift += shift2; - } -#endif - return shift; } diff --git a/dnn/denoise.c b/dnn/denoise.c index e9a29884..5ec4fcc4 100644 --- a/dnn/denoise.c +++ b/dnn/denoise.c @@ -504,7 +504,7 @@ float rnnoise_process_frame(DenoiseState *st, float *out, const float *in) { #if TRAINING -static float uni_rand() { +/*static float uni_rand() { return rand()/(double)RAND_MAX-.5; } @@ -513,163 +513,51 @@ static void rand_resp(float *a, float *b) { a[1] = .75*uni_rand(); b[0] = .75*uni_rand(); b[1] = .75*uni_rand(); -} +}*/ int main(int argc, char **argv) { int i; int count=0; static const float a_hp[2] = {-1.99599, 0.99600}; static const float b_hp[2] = {-2, 1}; - float a_noise[2] = {0}; - float b_noise[2] = {0}; - float a_sig[2] = {0}; - float b_sig[2] = {0}; float mem_hp_x[2]={0}; - float mem_hp_n[2]={0}; - float mem_resp_x[2]={0}; - float mem_resp_n[2]={0}; float x[FRAME_SIZE]; - float n[FRAME_SIZE]; - float xn[FRAME_SIZE]; - int vad_cnt=0; - int gain_change_count=0; - float speech_gain = 1, noise_gain = 1; - FILE *f1, *f2, *fout; + FILE *f1; DenoiseState *st; - DenoiseState *noise_state; - DenoiseState *noisy; st = rnnoise_create(); - noise_state = rnnoise_create(); - noisy = rnnoise_create(); - if (argc!=4) { - fprintf(stderr, "usage: %s <speech> <noise> <output denoised>\n", argv[0]); + if (argc!=2) { + fprintf(stderr, "usage: %s <speech>\n", argv[0]); return 1; } f1 = fopen(argv[1], "r"); - f2 = fopen(argv[2], "r"); - fout = fopen(argv[3], "w"); - for(i=0;i<150;i++) { - short tmp[FRAME_SIZE]; - fread(tmp, sizeof(short), FRAME_SIZE, f2); - } while (1) { - kiss_fft_cpx X[FREQ_SIZE], Y[FREQ_SIZE], N[FREQ_SIZE], P[WINDOW_SIZE]; - float Ex[NB_BANDS], Ey[NB_BANDS], En[NB_BANDS], Ep[NB_BANDS]; + kiss_fft_cpx X[FREQ_SIZE], P[WINDOW_SIZE]; + float Ex[NB_BANDS], Ep[NB_BANDS]; float Exp[NB_BANDS]; float Ln[NB_BANDS]; float features[NB_FEATURES]; float g[NB_BANDS]; - float gf[FREQ_SIZE]={1}; short tmp[FRAME_SIZE]; - float vad=0; - float vad_prob; float E=0; - if (count==50000000) break; - if (++gain_change_count > 2821) { - speech_gain = pow(10., (-40+(rand()%60))/20.); - noise_gain = pow(10., (-30+(rand()%50))/20.); - if (rand()%10==0) noise_gain = 0; - noise_gain *= speech_gain; - if (rand()%10==0) speech_gain = 0; - gain_change_count = 0; - rand_resp(a_noise, b_noise); - rand_resp(a_sig, b_sig); - lowpass = FREQ_SIZE * 3000./24000. * pow(50., rand()/(double)RAND_MAX); - for (i=0;i<NB_BANDS;i++) { - if (eband5ms[i]<<FRAME_SIZE_SHIFT > lowpass) { - band_lp = i; - break; - } - } - } - if (speech_gain != 0) { - fread(tmp, sizeof(short), FRAME_SIZE, f1); - if (feof(f1)) { - rewind(f1); - fread(tmp, sizeof(short), FRAME_SIZE, f1); - } - for (i=0;i<FRAME_SIZE;i++) x[i] = speech_gain*tmp[i]; - for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i]; - } else { - for (i=0;i<FRAME_SIZE;i++) x[i] = 0; - E = 0; - } - if (noise_gain!=0) { - fread(tmp, sizeof(short), FRAME_SIZE, f2); - if (feof(f2)) { - rewind(f2); - fread(tmp, sizeof(short), FRAME_SIZE, f2); - } - for (i=0;i<FRAME_SIZE;i++) n[i] = noise_gain*tmp[i]; - } else { - for (i=0;i<FRAME_SIZE;i++) n[i] = 0; + fread(tmp, sizeof(short), FRAME_SIZE, f1); + if (feof(f1)) { + return 0; } + for (i=0;i<FRAME_SIZE;i++) x[i] = tmp[i]; + for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i]; biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE); - biquad(x, mem_resp_x, x, b_sig, a_sig, FRAME_SIZE); - biquad(n, mem_hp_n, n, b_hp, a_hp, FRAME_SIZE); - biquad(n, mem_resp_n, n, b_noise, a_noise, FRAME_SIZE); - for (i=0;i<FRAME_SIZE;i++) xn[i] = x[i] + n[i]; - if (E > 1e9f) { - vad_cnt=0; - } else if (E > 1e8f) { - vad_cnt -= 5; - } else if (E > 1e7f) { - vad_cnt++; - } else { - vad_cnt+=2; - } - if (vad_cnt < 0) vad_cnt = 0; - if (vad_cnt > 15) vad_cnt = 15; - if (vad_cnt >= 10) vad = 0; - else if (vad_cnt > 0) vad = 0.5f; - else vad = 1.f; - - frame_analysis(st, Y, Ey, x); - frame_analysis(noise_state, N, En, n); - for (i=0;i<NB_BANDS;i++) Ln[i] = log10(1e-2+En[i]); - int silence = compute_frame_features(noisy, X, P, Ex, Ep, Exp, features, xn); + compute_frame_features(st, X, P, Ex, Ep, Exp, features, x); pitch_filter(X, P, Ex, Ep, Exp, g); - //printf("%f %d\n", noisy->last_gain, noisy->last_period); - for (i=0;i<NB_BANDS;i++) { - g[i] = sqrt((Ey[i]+1e-3)/(Ex[i]+1e-3)); - if (g[i] > 1) g[i] = 1; - if (silence || i > band_lp) g[i] = -1; - if (Ey[i] < 5e-2 && Ex[i] < 5e-2) g[i] = -1; - if (vad==0 && noise_gain==0) g[i] = -1; - } - count++; -#if 0 - for (i=0;i<NB_FEATURES;i++) printf("%f ", features[i]); - for (i=0;i<NB_BANDS;i++) printf("%f ", g[i]); - for (i=0;i<NB_BANDS;i++) printf("%f ", Ln[i]); - printf("%f\n", vad); -#endif #if 1 fwrite(features, sizeof(float), NB_FEATURES, stdout); fwrite(g, sizeof(float), NB_BANDS, stdout); fwrite(Ln, sizeof(float), NB_BANDS, stdout); - fwrite(&vad, sizeof(float), 1, stdout); -#endif -#if 0 - compute_rnn(&noisy->rnn, g, &vad_prob, features); - interp_band_gain(gf, g); -#if 1 - for (i=0;i<FREQ_SIZE;i++) { - X[i].r *= gf[i]; - X[i].i *= gf[i]; - } -#endif - frame_synthesis(noisy, xn, X); - - for (i=0;i<FRAME_SIZE;i++) tmp[i] = xn[i]; - fwrite(tmp, sizeof(short), FRAME_SIZE, fout); #endif + count++; } - fprintf(stderr, "matrix size: %d x %d\n", count, NB_FEATURES + 2*NB_BANDS + 1); + //fprintf(stderr, "matrix size: %d x %d\n", count, NB_FEATURES + 2*NB_BANDS + 1); fclose(f1); - fclose(f2); - fclose(fout); return 0; }