76 static const int n_agc_type_str =
sizeof(
agc_type_str)/
sizeof(agc_type_str[0]);
83 for (i = 0; i < n_agc_type_str; ++i) {
87 E_FATAL(
"Unknown AGC type '%s'\n", str);
116 for (i = 1; i < n_frame; i++) {
117 if (mfc[i][0] > agc->
obs_max) {
124 for (i = 0; i < n_frame; i++)
131 agc->
max = FLOAT2MFCC(m);
132 E_INFO(
"AGCEMax: max= %.2f\n", m);
138 return MFCC2FLOAT(agc->
max);
148 for (i = 1; i < n_frame; ++i) {
149 if (mfc[i][0] > agc->
obs_max) {
153 mfc[i][0] -= agc->
max;
162 agc->obs_max_sum += agc->
obs_max;
168 agc->obs_max_sum /= 2;
176 agc->
obs_max = FLOAT2MFCC(-1000.0);
190 min_energy = cep[0][0];
191 for (i = 0; i < nfr; ++i) {
192 if (cep[i][0] < min_energy)
193 min_energy = cep[i][0];
200 for (i = 0; i < nfr; ++i) {
201 if (cep[i][0] < min_energy) {
202 noise_level += cep[i][0];
206 noise_level /= noise_frames;
208 E_INFO(
"AGC NOISE: max= %6.3f\n", MFCC2FLOAT(noise_level));
211 for (i = 0; i < nfr; ++i)
212 cep[i][0] -= noise_level;