#include <sent/stddefs.h>
#include <sent/htk_param.h>
#include <sent/mfcc.h>
strip_mfcc.cのインクルード依存関係図
マクロ定義 | |
#define | IS_INVALID_FRAME_MFCC(A) ((A) < -30.0 || (A) > 30.0) |
Invalid log value range to detect zero sample frame. | |
関数 | |
static int | guess_abs_e_location (HTK_Param *param) |
boolean | param_strip_zero (HTK_Param *param) |
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.
strip_mfcc.c で定義されています。
static int guess_abs_e_location | ( | HTK_Param * | param | ) | [static] |
Guess where the absolute energy coefficient is.
param | [in] parameter data |
strip_mfcc.c の 69 行で定義されています。
参照元 param_strip_zero().
Strip zero frames from MFCC data.
param | [in] parameter data |
strip_mfcc.c の 98 行で定義されています。