102 #pragma warning (disable: 4244)
115 static const int n_cmn_type_str =
sizeof(
cmn_type_str)/
sizeof(cmn_type_str[0]);
122 for (i = 0; i < n_cmn_type_str; ++i) {
126 E_FATAL(
"Unknown CMN type '%s'\n", str);
131 cmn_init(int32 veclen)
140 cmn->
cmn_mean[0] = FLOAT2MFCC(12.0);
142 E_INFO(
"mean[0]= %.2f, mean[1..%d]= 0.0\n",
143 MFCC2FLOAT(cmn->
cmn_mean[0]), veclen - 1);
150 cmn(
cmn_t *cmn, mfcc_t ** mfc, int32 varnorm, int32 n_frame)
165 for (f = 0; f < n_frame; f++) {
167 for (i = 0; i < cmn->
veclen; i++) {
172 for (i = 0; i < cmn->
veclen; i++)
176 for (i = 0; i < cmn->
veclen; i++)
181 for (f = 0; f < n_frame; f++) {
183 for (i = 0; i < cmn->
veclen; i++)
192 for (f = 0; f < n_frame; f++) {
195 for (i = 0; i < cmn->
veclen; i++) {
197 cmn->
cmn_var[i] += MFCCMUL(t, t);
200 for (i = 0; i < cmn->
veclen; i++)
202 cmn->
cmn_var[i] = FLOAT2MFCC(sqrt((float64)n_frame / MFCC2FLOAT(cmn->
cmn_var[i])));
204 for (f = 0; f < n_frame; f++) {
206 for (i = 0; i < cmn->
veclen; i++)
216 cmn_free(
cmn_t * cmn)