/[marvin]/marvin/src/libsip/algo/mfcc.cc
ViewVC logotype

Diff of /marvin/src/libsip/algo/mfcc.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by exos, Fri Sep 12 03:04:43 2003 UTC revision 1.7 by exos, Fri Sep 12 03:06:18 2003 UTC
# Line 107  mfcc::mfcc ( DiscSignal &signal ) Line 107  mfcc::mfcc ( DiscSignal &signal )
107      center[i - 1] = freqs[i];      center[i - 1] = freqs[i];
108    for (i = 2; i < (int)totalFilters + 2; i++)    for (i = 2; i < (int)totalFilters + 2; i++)
109      upper[i - 2] = freqs[i];      upper[i - 2] = freqs[i];
   
110    hamWindow = (double*)calloc((int)windowSize, sizeof(double));    hamWindow = (double*)calloc((int)windowSize, sizeof(double));
111    mfccFilterWeights = (double *)calloc((int)(totalFilters * fftSize), sizeof(double));    mfccFilterWeights = (double *)calloc((int)(totalFilters * fftSize), sizeof(double));
112    for (i = 0; i < totalFilters; i++)    for (i = 0; i < totalFilters; i++)
# Line 164  mfcc::mfcc ( DiscSignal &signal ) Line 163  mfcc::mfcc ( DiscSignal &signal )
163            //for (j=0; j<512;j++) printf("%d %f\n",j,fftMag[j]);            //for (j=0; j<512;j++) printf("%d %f\n",j,fftMag[j]);
164            */            */
165      DiscSignal fftMag = (new fft(*new DiscSignal(fftData, (int)fftSize), true))->get_magnitude();      DiscSignal fftMag = (new fft(*new DiscSignal(fftData, (int)fftSize), true))->get_magnitude();
166        std::cout << "fft" << std::endl;
167        //fftMag.perl_capture();
168      for (j = 0; j < totalFilters; j++) {      for (j = 0; j < totalFilters; j++) {
169        loga = 0;        loga = 0;
170        for (k = 0; k < fftSize; k++)        for (k = 0; k < fftSize; k++)
# Line 171  mfcc::mfcc ( DiscSignal &signal ) Line 172  mfcc::mfcc ( DiscSignal &signal )
172            fftMag[k] * mfccFilterWeights[k + j * (int) fftSize];            fftMag[k] * mfccFilterWeights[k + j * (int) fftSize];
173        earMag[j] = log10(loga);        earMag[j] = log10(loga);
174      }      }
175        (new DiscSignal(mfccFilterWeights,fftSize *  ((int)totalFilters)+1))->perl_capture();
176      //              for (j=0;j<40;j++) printf("%d %f\n",j,earMag[j]);      //              for (j=0;j<40;j++) printf("%d %f\n",j,earMag[j]);
177      for (j = 0; j < linearFilters; j++) {      for (j = 0; j < linearFilters; j++) {
178        loga = 0;        loga = 0;
# Line 180  mfcc::mfcc ( DiscSignal &signal ) Line 182  mfcc::mfcc ( DiscSignal &signal )
182        ceps[j + i * (int) linearFilters] = loga;        ceps[j + i * (int) linearFilters] = loga;
183      }      }
184    }    }
185    
186    
187      //  (new DiscSignal(ceps, 78))->perl_capture();
188      
189    //////////////////////moyenne//////////////////////    //////////////////////moyenne//////////////////////
190    empreinte = (double*)malloc(sizeof(double) * 12);    empreinte = (double*)malloc(sizeof(double) * 12);
191      
192    //    for (i=0;i<68;i++)    //    for (i=0;i<68;i++)
193    //      printf("%d %d %f\n",i/13,i%13,ceps[i]);    //      printf("%d %d %f\n",i/13,i%13,ceps[i]);
194    //            for (i =0; i<13;i++) for(j=0;j<6;j++) printf("%d %d %f\n",j,i,ceps[i + j*13]);    //            for (i =0; i<13;i++) for(j=0;j<6;j++) printf("%d %d %f\n",j,i,ceps[i + j*13]);
# Line 191  mfcc::mfcc ( DiscSignal &signal ) Line 198  mfcc::mfcc ( DiscSignal &signal )
198    maxi=0;    maxi=0;
199    for (i=0;i<12;i++) if (maxi*maxi<empreinte[i]*empreinte[i]) maxi=empreinte[i];    for (i=0;i<12;i++) if (maxi*maxi<empreinte[i]*empreinte[i]) maxi=empreinte[i];
200    for (i=0;i<12;i++) empreinte[i]=(empreinte[i]/fabs(maxi))*2;    for (i=0;i<12;i++) empreinte[i]=(empreinte[i]/fabs(maxi))*2;
201    (new DiscSignal(empreinte, 13))->perl_capture();    //  (new DiscSignal(empreinte, 13))->perl_capture();
202    //for (i=0;i<12;i++) printf("%d %lf\n",i,empreinte[i]);    //for (i=0;i<12;i++) printf("%d %lf\n",i,empreinte[i]);
203    free(mfccFilterWeights);    free(mfccFilterWeights);
204    free(triangleHeight);    free(triangleHeight);

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26