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++) |
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++) |
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; |
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]); |
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); |