#include <sent/stddefs.h>
#include <sent/htk_param.h>
#include <sent/mfcc.h>
Go to the source code of this file.
Defines | |
#define | IS_INVALID_FRAME_MFCC(A) ((A) < -30.0 || (A) > 30.0) |
Invalid log value range to detect zero sample frame. | |
Functions | |
static int | guess_abs_e_location (HTK_Param *param) |
Guess where the absolute energy coefficient is. | |
boolean | param_strip_zero (HTK_Param *param) |
Strip zero frames from MFCC data. |
Zero sample frames will be detected by the energy coefficient of MFCC.
The detection is done by setting valid range of log energy.
However, since HTK parameter file has no information for framesize or frequency, defining precise upper bound of power is impossible.
Guess the power that is in log scale as described below,
framesize : 1 100 400 1000 10000(can't be!) upper bound: 20.794 25.400 26.786 27.702 30.005
Thus it can be said that the range of [0..30] will work.
When energy normalization was on, the parameters are normalized to:
1.0 - (Emax - value) * ESCALE
So the range becomes [1.0-Emax*ESCALE..1.0]. But the engine cannot know whether the ENORMALIZE was on for given parameters.
As a conclusion, the safe bit is to set the range of log energy to [-30..30] hoping that escale is less than 1.0 (the HTK's default is 0.1).
But remember, there are no guarantee that valid segments is not misdetected. When the misdetection frequently occurs on your MFCC file, please try "-nostrip" option to turn off the stripping.
Definition in file strip_mfcc.c.
static int guess_abs_e_location | ( | HTK_Param * | param | ) | [static] |
Guess where the absolute energy coefficient is.
param | [in] parameter data |
Definition at line 70 of file strip_mfcc.c.
Referenced by param_strip_zero().
boolean param_strip_zero | ( | HTK_Param * | param | ) |
Strip zero frames from MFCC data.
param | [in] parameter data |
Definition at line 99 of file strip_mfcc.c.