ref: e018b6f1521abcf6c971130c2b4108fbdfd3df0a
parent: 61c6391c210b4f17a1415e545676e56c50aab4e4
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Sat Jun 23 23:48:51 EDT 2018
cleanup
--- a/dnn/celt_lpc.c
+++ b/dnn/celt_lpc.c
@@ -225,28 +225,6 @@
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 @@
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;
}
--- a/dnn/denoise.c
+++ b/dnn/denoise.c
@@ -504,7 +504,7 @@
#if TRAINING
-static float uni_rand() {+/*static float uni_rand() {return rand()/(double)RAND_MAX-.5;
}
@@ -513,7 +513,7 @@
a[1] = .75*uni_rand();
b[0] = .75*uni_rand();
b[1] = .75*uni_rand();
-}
+}*/
int main(int argc, char **argv) {int i;
@@ -520,156 +520,44 @@
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;
- }
- }
+ fread(tmp, sizeof(short), FRAME_SIZE, f1);
+ if (feof(f1)) {+ return 0;
}
- 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;
- }
+ 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;
}
--
⑨