43#pragma warning (disable: 4244)
56 for (i = 0; i <
cmn->veclen; i++)
60 for (i = 0; i <
cmn->veclen; i++) {
61 cmn->cmn_mean[i] = vec[i];
62 cmn->sum[i] = vec[i] * CMN_WIN;
64 cmn->nframe = CMN_WIN;
67 for (i = 0; i <
cmn->veclen; i++)
77 for (i = 0; i <
cmn->veclen; i++)
78 vec[i] =
cmn->cmn_mean[i];
89 for (i = 0; i <
cmn->veclen; i++)
93 sf = FLOAT2MFCC(1.0) /
cmn->nframe;
94 for (i = 0; i <
cmn->veclen; i++)
95 cmn->cmn_mean[i] =
cmn->sum[i] /
cmn->nframe;
98 if (
cmn->nframe >= CMN_WIN_HWM) {
100 for (i = 0; i <
cmn->veclen; i++)
101 cmn->sum[i] = MFCCMUL(
cmn->sum[i], sf);
102 cmn->nframe = CMN_WIN;
106 for (i = 0; i <
cmn->veclen; i++)
117 if (
cmn->nframe <= 0)
121 for (i = 0; i <
cmn->veclen; i++)
126 sf = FLOAT2MFCC(1.0) /
cmn->nframe;
127 for (i = 0; i <
cmn->veclen; i++)
128 cmn->cmn_mean[i] =
cmn->sum[i] /
cmn->nframe;
131 if (
cmn->nframe > CMN_WIN_HWM) {
133 for (i = 0; i <
cmn->veclen; i++)
134 cmn->sum[i] = MFCCMUL(
cmn->sum[i], sf);
135 cmn->nframe = CMN_WIN;
139 for (i = 0; i <
cmn->veclen; i++)
154 (
"Variance normalization not implemented in live mode decode\n");
156 for (i = 0; i < nfr; i++) {
162 for (j = 0; j <
cmn->veclen; j++) {
163 cmn->sum[j] += incep[i][j];
164 incep[i][j] -=
cmn->cmn_mean[j];
171 if (
cmn->nframe > CMN_WIN_HWM)
172 cmn_live_shiftwin(
cmn);
Sphinx's memory allocation/deallocation routines.
Apply Cepstral Mean Normalization (CMN) to the set of input mfc frames.
SPHINXBASE_EXPORT void cmn_live_get(cmn_t *cmn, mfcc_t *vec)
Get the live mean.
SPHINXBASE_EXPORT void cmn_live(cmn_t *cmn, mfcc_t **incep, int32 varnorm, int32 nfr)
CMN for one block of data, using live mean.
SPHINXBASE_EXPORT void cmn(cmn_t *cmn, mfcc_t **mfc, int32 varnorm, int32 n_frame)
CMN for the whole sentence.
SPHINXBASE_EXPORT void cmn_live_update(cmn_t *cmn)
Update live mean based on observed data.
SPHINXBASE_EXPORT void cmn_live_set(cmn_t *cmn, mfcc_t const *vec)
Set the live mean.
Implementation of logging routines.
#define E_INFO(...)
Print logging information to standard error stream.
#define E_INFOCONT(...)
Continue printing the information to standard error stream.
#define E_FATAL(...)
Exit with non-zero status after error message.
wrapper of operation of the cepstral mean normalization.