51 #pragma warning (disable: 4244) 64 const char *cmn_alt_type_str[] = {
76 for (i = 0; i < n_cmn_type_str; ++i) {
77 if (0 == strcmp(str,
cmn_type_str[i]) || 0 == strcmp(str, cmn_alt_type_str[i]))
80 E_FATAL(
"Unknown CMN type '%s'\n", str);
85 cmn_init(int32 veclen)
90 cmn->cmn_mean = (mfcc_t *)
ckd_calloc(veclen,
sizeof(mfcc_t));
113 memset(
cmn->cmn_mean, 0,
cmn->veclen *
sizeof(mfcc_t));
116 for (f = 0, n_pos_frame = 0; f < n_frame; f++) {
123 for (i = 0; i <
cmn->veclen; i++) {
124 cmn->cmn_mean[i] += mfcp[i];
130 for (i = 0; i <
cmn->veclen; i++)
131 cmn->cmn_mean[i] /= n_pos_frame;
134 for (i = 0; i <
cmn->veclen; i++)
139 for (f = 0; f < n_frame; f++) {
141 for (i = 0; i <
cmn->veclen; i++)
142 mfcp[i] -=
cmn->cmn_mean[i];
148 memset(
cmn->cmn_var, 0,
cmn->veclen *
sizeof(mfcc_t));
150 for (f = 0; f < n_frame; f++) {
153 for (i = 0; i <
cmn->veclen; i++) {
154 t = mfcp[i] -
cmn->cmn_mean[i];
155 cmn->cmn_var[i] += MFCCMUL(t, t);
158 for (i = 0; i <
cmn->veclen; i++)
160 cmn->cmn_var[i] = FLOAT2MFCC(sqrt((float64)n_frame / MFCC2FLOAT(
cmn->cmn_var[i])));
162 for (f = 0; f < n_frame; f++) {
164 for (i = 0; i <
cmn->veclen; i++)
165 mfcp[i] = MFCCMUL((mfcp[i] -
cmn->cmn_mean[i]),
cmn->cmn_var[i]);
#define E_INFO(...)
Print logging information to standard error stream.
#define ckd_calloc(n, sz)
Macros to simplify the use of above functions.
Sphinx's memory allocation/deallocation routines.
Apply Cepstral Mean Normalization (CMN) to the set of input mfc frames.
#define E_INFOCONT(...)
Continue printing the information to standard error stream.
SPHINXBASE_EXPORT void ckd_free(void *ptr)
Test and free a 1-D array.
SPHINXBASE_EXPORT void cmn(cmn_t *cmn, mfcc_t **mfc, int32 varnorm, int32 n_frame)
CMN for the whole sentence.
Implementation of logging routines.
SPHINXBASE_EXPORT cmn_type_t cmn_type_from_str(const char *str)
Convert string representation (from command-line) to cmn_type_t.
wrapper of operation of the cepstral mean normalization.
enum cmn_type_e cmn_type_t
Types of cepstral mean normalization to apply to the features.
SPHINXBASE_EXPORT const char * cmn_type_str[]
String representations of cmn_type_t values.
#define E_FATAL(...)
Exit with non-zero status after error message.