ref: 86c15a7a36a7c368bfeccd47fb1cac0db5eb4ffa
parent: 4eb2d3446556af4532f5fa9409f674903b585cce
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Tue Dec 11 08:31:04 EST 2018
Remove more useless code
--- a/dnn/denoise.c
+++ b/dnn/denoise.c
@@ -348,13 +348,10 @@
#if TRAINING
-static float frame_analysis(DenoiseState *st, signed char *iexc, short *pred, short *pcm, float *lpc, kiss_fft_cpx *X, float *Ex, const float *in) {
+static void frame_analysis(DenoiseState *st, kiss_fft_cpx *X, float *Ex, const float *in) {
int i;
float x[WINDOW_SIZE];
float x0[WINDOW_SIZE];
- float ac[LPC_ORDER+1];
- float rc[LPC_ORDER];
- float g;
RNN_COPY(x, st->analysis_mem, FRAME_SIZE);
for (i=0;i<FRAME_SIZE;i++) x[FRAME_SIZE + i] = in[i];
RNN_COPY(st->analysis_mem, in, FRAME_SIZE);
@@ -366,59 +363,9 @@
X[i].r = X[i].i = 0;
#endif
compute_band_energy(Ex, X);
- {
- float e;
- float g_1;
- if (0) {
- _celt_autocorr(x, ac, NULL, 0, LPC_ORDER, WINDOW_SIZE);
- } else {
- float Xr[FREQ_SIZE];
- kiss_fft_cpx X_auto[FREQ_SIZE];
- float x_auto[FRAME_SIZE];
- interp_band_gain(Xr, Ex);
- RNN_CLEAR(X_auto, FREQ_SIZE);
- for (i=0;i<160;i++) X_auto[i].r = Xr[i];
- inverse_transform(x_auto, X_auto);
- for (i=0;i<LPC_ORDER+1;i++) ac[i] = x_auto[i];
- }
- /* -40 dB noise floor. */
- ac[0] += ac[0]*1e-4 + 320/12/38.;
- /* Lag windowing. */
- for (i=1;i<LPC_ORDER+1;i++) ac[i] *= (1 - 6e-5*i*i);
- e = _celt_lpc(lpc, rc, ac, LPC_ORDER);
- g = sqrt((1e-10+e)*(1./FRAME_SIZE));
- g_1 = 1./g;
-#if 0
- for(i=0;i<WINDOW_SIZE;i++) printf("%f ", x[i]);
- printf("\n");
-#endif
-#if 0
- printf("1 ");
- for(i=0;i<LPC_ORDER;i++) printf("%f ", lpc[i]);
- printf("\n");
-#endif
- for (i=0;i<FRAME_SIZE;i++) {
- int j;
- float *z;
- float tmp;
- int nexc;
- z = &x0[i]+FRAME_SIZE/2;
- tmp = z[0];
- for (j=0;j<LPC_ORDER;j++) tmp += lpc[j]*z[-1-j];
- pcm[i] = float2short(z[0]);
- pred[i] = float2short(z[0] - tmp);
- nexc = (int)floor(.5 + 16*g_1*tmp);
- nexc = IMAX(-128, IMIN(127, nexc));
- iexc[i] = nexc;
-#if 0
- printf("%f\n", g_1*tmp);
-#endif
- }
- }
- return g;
}
-static int compute_frame_features(DenoiseState *st, signed char *iexc, short *pred, short *pcm, kiss_fft_cpx *X, kiss_fft_cpx *P,
+static int compute_frame_features(DenoiseState *st, kiss_fft_cpx *X, kiss_fft_cpx *P,
float *Ex, float *Ep, float *Exp, float *features, const float *in) {
int i;
float E = 0;
@@ -431,22 +378,18 @@
float tmp[NB_BANDS];
float follow, logMax;
float g;
- g = frame_analysis(st, iexc, pred, pcm, lpc, X, Ex, in);
+ frame_analysis(st, X, Ex, in);
RNN_MOVE(st->pitch_buf, &st->pitch_buf[FRAME_SIZE], PITCH_BUF_SIZE-FRAME_SIZE);
RNN_COPY(&st->pitch_buf[PITCH_BUF_SIZE-FRAME_SIZE], in, FRAME_SIZE);
- //pre[0] = &st->pitch_buf[0];
RNN_COPY(pitch_buf, &st->pitch_buf[0], PITCH_BUF_SIZE);
pitch_downsample(pitch_buf, PITCH_BUF_SIZE);
pitch_search(pitch_buf+PITCH_MAX_PERIOD, pitch_buf, PITCH_FRAME_SIZE<<1,
(PITCH_MAX_PERIOD-3*PITCH_MIN_PERIOD)<<1, &pitch_index);
- //printf("%d ", pitch_index);
pitch_index = 2*PITCH_MAX_PERIOD-pitch_index;
- //printf("%d ", pitch_index);
gain = remove_doubling(pitch_buf, 2*PITCH_MAX_PERIOD, 2*PITCH_MIN_PERIOD,
2*PITCH_FRAME_SIZE, &pitch_index, st->last_period, st->last_gain);
st->last_period = pitch_index;
st->last_gain = gain;
- //printf("%d %f\n", pitch_index, gain);
for (i=0;i<WINDOW_SIZE;i++)
p[i] = st->pitch_buf[PITCH_BUF_SIZE-WINDOW_SIZE-pitch_index/2+i];
apply_window(p);
@@ -454,10 +397,6 @@
compute_band_energy(Ep, P);
compute_band_corr(Exp, X, P);
for (i=0;i<NB_BANDS;i++) Exp[i] = Exp[i]/sqrt(.001+Ex[i]*Ep[i]);
-#if 0
- for (i=0;i<NB_BANDS;i++) printf("%f ", Exp[i]);
- printf("\n");
-#endif
dct(tmp, Exp);
for (i=0;i<NB_BANDS;i++) features[NB_BANDS+i] = tmp[i];
features[NB_BANDS] -= 1.3;
@@ -473,7 +412,7 @@
}
dct(features, Ly);
features[0] -= 4;
- lpc_from_cepstrum(lpc, features);
+ g = lpc_from_cepstrum(lpc, features);
#if 0
for (i=0;i<NB_BANDS;i++) printf("%f ", Ly[i]);
printf("\n");
@@ -537,9 +476,7 @@
FILE *f1;
FILE *ffeat;
FILE *fpcm=NULL;
- signed char iexc[FRAME_SIZE];
- short pred[FRAME_SIZE];
- short pcm[FRAME_SIZE];
+ short pcm[FRAME_SIZE]={0};
short tmp[FRAME_SIZE] = {0};
float savedX[FRAME_SIZE] = {0};
float speech_gain=1;
@@ -624,9 +561,12 @@
x[i] *= g;
}
for (i=0;i<FRAME_SIZE;i++) x[i] += rand()/(float)RAND_MAX - .5;
- compute_frame_features(st, iexc, pred, pcm, X, P, Ex, Ep, Exp, features, x);
+ compute_frame_features(st, X, P, Ex, Ep, Exp, features, x);
fwrite(features, sizeof(float), NB_FEATURES, ffeat);
+ /* PCM is delayed by 1/2 frame to make the features centered on the frames. */
+ for (i=0;i<FRAME_SIZE/2;i++) pcm[i+FRAME_SIZE/2] = float2short(x[i]);
if (fpcm) fwrite(pcm, sizeof(short), FRAME_SIZE, fpcm);
+ for (i=0;i<FRAME_SIZE/2;i++) pcm[i] = float2short(x[i+FRAME_SIZE/2]);
old_speech_gain = speech_gain;
count++;
}
--
⑨