added sampling rate option to preprocessor
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Tue, 16 Sep 2003 19:36:17 +0000 (19:36 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Tue, 16 Sep 2003 19:36:17 +0000 (19:36 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@5342 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/preprocess.c
libspeex/speex_preprocess.h
libspeex/testdenoise.c

index 2b2b3b8..7664150 100644 (file)
@@ -80,7 +80,7 @@ static void conj_window(float *w, int len)
    }
 }
 
-SpeexPreprocessState *speex_preprocess_state_init(int frame_size)
+SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate)
 {
    int i;
    int N, N3, N4;
@@ -171,8 +171,10 @@ SpeexPreprocessState *speex_preprocess_state_init(int frame_size)
 
    for (i=0;i<N;i++)
    {
-      float ff=((float)i)*128.0/4000.0;
+      float ff=((float)i)*.5*sampling_rate/((float)N);
       st->loudness_weight[i] = .35-.35*ff/16000+.73*exp(-.5*(ff-3800)*(ff-3800)/9e5);
+      if (st->loudness_weight[i]<.01)
+         st->loudness_weight[i]=.01;
       st->loudness_weight[i] *= st->loudness_weight[i];
    }
 
@@ -554,7 +556,7 @@ int speex_preprocess(SpeexPreprocessState *st, float *x, float *echo)
    st->nb_preprocess++;
 
    /* Noise estimation always updated for the 20 first times */
-   if (st->nb_adapt<15)
+   if (st->nb_adapt<20)
       /*if (st->nb_adapt<25 && st->nb_adapt>15)*/
    {
       update_noise(st, ps, echo);
index 055d121..0ae0e49 100644 (file)
@@ -92,7 +92,7 @@ typedef struct SpeexPreprocessState {
 } SpeexPreprocessState;
 
 /** Creates a new preprocessing state */
-SpeexPreprocessState *speex_preprocess_state_init(int frame_size);
+SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate);
 
 /** Destroys a denoising state */
 void speex_preprocess_state_destroy(SpeexPreprocessState *st);
index 7486edc..fe145da 100644 (file)
@@ -11,9 +11,10 @@ int main()
    int i;
    SpeexPreprocessState *st;
 
-   st = speex_preprocess_state_init(NN);
+   st = speex_preprocess_state_init(NN, 8000);
    i=1;
    speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i);
+   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
    while (1)
    {
       int vad;
@@ -26,7 +27,7 @@ int main()
       vad = speex_preprocess(st, x, NULL);
       for (i=0;i<NN;i++)
          out[i]=x[i];
-      fprintf (stderr, "%d\n", vad);
+      /*fprintf (stderr, "%d\n", vad);*/
       fwrite(out, sizeof(short), NN, stdout);
    }
    speex_preprocess_state_destroy(st);