54#pragma warning (disable: 4244)
66 E_INFO(
"cmn_prior_set: from < ");
67 for (i = 0; i <
cmn->veclen; i++)
71 for (i = 0; i <
cmn->veclen; i++) {
72 cmn->cmn_mean[i] = vec[i];
73 cmn->sum[i] = vec[i] * CMN_WIN;
75 cmn->nframe = CMN_WIN;
77 E_INFO(
"cmn_prior_set: to < ");
78 for (i = 0; i <
cmn->veclen; i++)
88 for (i = 0; i <
cmn->veclen; i++)
89 vec[i] =
cmn->cmn_mean[i];
99 sf = FLOAT2MFCC(1.0) /
cmn->nframe;
100 for (i = 0; i <
cmn->veclen; i++)
101 cmn->cmn_mean[i] =
cmn->sum[i] /
cmn->nframe;
104 if (
cmn->nframe >= CMN_WIN_HWM) {
106 for (i = 0; i <
cmn->veclen; i++)
107 cmn->sum[i] = MFCCMUL(
cmn->sum[i], sf);
108 cmn->nframe = CMN_WIN;
118 if (
cmn->nframe <= 0)
121 E_INFO(
"cmn_prior_update: from < ");
122 for (i = 0; i <
cmn->veclen; i++)
127 sf = FLOAT2MFCC(1.0) /
cmn->nframe;
128 for (i = 0; i <
cmn->veclen; i++)
129 cmn->cmn_mean[i] =
cmn->sum[i] /
cmn->nframe;
132 if (
cmn->nframe > CMN_WIN_HWM) {
134 for (i = 0; i <
cmn->veclen; i++)
135 cmn->sum[i] = MFCCMUL(
cmn->sum[i], sf);
136 cmn->nframe = CMN_WIN;
139 E_INFO(
"cmn_prior_update: to < ");
140 for (i = 0; i <
cmn->veclen; i++)
152 (
"Variance normalization not implemented in live mode decode\n");
157 for (i = 0; i < nfr; i++) {
158 for (j = 0; j <
cmn->veclen; j++) {
159 cmn->sum[j] += incep[i][j];
160 incep[i][j] -=
cmn->cmn_mean[j];
166 if (
cmn->nframe > CMN_WIN_HWM)
167 cmn_prior_shiftwin(
cmn);
Sphinx's memory allocation/deallocation routines.
Apply Cepstral Mean Normalization (CMN) to the set of input mfc frames.
SPHINXBASE_EXPORT void cmn_prior_set(cmn_t *cmn, mfcc_t const *vec)
Set the prior mean.
SPHINXBASE_EXPORT void cmn_prior_get(cmn_t *cmn, mfcc_t *vec)
Get the prior mean.
SPHINXBASE_EXPORT void cmn_prior(cmn_t *cmn, mfcc_t **incep, int32 varnorm, int32 nfr)
CMN for one block of data, using prior mean.
SPHINXBASE_EXPORT void cmn_prior_update(cmn_t *cmn)
Update prior mean based on observed data.
SPHINXBASE_EXPORT void cmn(cmn_t *cmn, mfcc_t **mfc, int32 varnorm, int32 n_frame)
CMN for the whole sentence.
Implementation of logging routines.
#define E_FATAL
Exit with non-zero status after error message.
#define E_INFO
Print logging information to standard error stream.
#define E_INFOCONT
Print logging information without header, to standard error stream.
wrapper of operation of the cepstral mean normalization.