|RESPITE: The CASA Toolkit Page: Documentation: Block Library Index:HMMDecoderMD|
The HMMDecoderMD is an extended version of the previously described HMMDecoderStandard that has been adapted to handle missing data. As well as an input stream of feature vectors, it also accepts a `missing data mask' (in2) and optional lower and upper bound values (in3 and in4). The vectors composing the mask and the bounds should have the same width as the feature vectors. The missing data mask should be a vector of boolean values. Each boolean element dictates whether the corresponding feature vector element is to be considered to be present (i.e. to contain reliable data) or to be missing (i.e. to contain unreliable data). Present values are indicated by 1's, and missing values by 0's.
The HMMDecoderMD has the same parameters as the HMMDecoderStandard, plus the two additional parameters that are described below:
This is a boolean parameter that determines whether or not the decoder should appled bounded marginalisation to the missing components of the input data. When set to false the employs the marginal distribution for the present data constructed by `integrating out' the missing values allowing them to lie anywhere between + and - infinity. This is extremely quick but produces poor results when there is a lot of data missing. When the USE_BOUNDS switch is set to true the decoder will use the so-called `bounds constraint' for the missing components of the input data. This means that instead of treating the missing data as completely unknown, the missing data is taken to be constrained between a lower and an upper bound value. For spectral energies the lower bound is typically 0 and the upper bound is typically the observed energy in the noisy signal i.e. logically, if data is flagged as missing, then the energy of the clean signal at that particular spectro-temporal point must be positive but must also be sufficiently low to have been masked by the observed energy at that point. In terms of computation, rather than integrating the distributions for the missing components between -infinity and +infinity, they are now integrated between the lower and upper bound. The integration is performed using the Gaussian error function. Although evaluating this integration imposes a heavier computational load, it can lead to greatly improved recognition performance.
The upper and lower bounds values are taken from the optional inputs in3 and in4 respectively. If the bound inputs are not connected then the lower bounds value defaults to 0 and the upper bound defaults to the input feature value (i.e. in1).
Note, the USE_BOUNDS switch causes bounded marginalisation to be applied to the static (i.e. non-delta) features. To extend the use of bounded marginalisation to the delta features you must also set the USE_DELTA_BOUNDS switch (see below).
This switch is similar to the DELTA_BOUDS switch, but it controls whether or not bounded marginalisation is applied to the delta features. The bounded marginalisation can only be applied to delta features if it is also being applied to the non-delta features (i.e. USE_DELTA_BOUNDS can only be set to true if USE_BOUNDS is also true.)
If bounded marginalisation is applied to delta features then it is necessary to supply appropriate bound using inputs in3 and in4. Suitable bounds for delta features can be computed using the DeltaBounds block.
As with HMMDecoderStandard, the missing data decoder outputs a stream of state-likelihood frames and a stream of mixture labels. Each state-likelihood frame consists of the likelihood of each model state having generated the corresponding input feature frame. Within these frames the state likelihoods occur in the same order in which the states are defined in the HMM definition file. (The mixture label frames (out2) indicate the integer label of the winning mixture for each state).
|Inputs||Meaning||Sample||1-D frame||2-D frame|
|in2||missing data mask||No||Yes||No|
|out2||state max mixture label|
|LOG_FILE||String||-||Name of an optional log file|
|LOG_FILE_2||String||-||Name of additional detailed log file|
|WORD_PENALTY||Float||0.0||The creation penalty|
|HMM_FILE||String||-||Name of the HMM file list|
|GRAMMAR_FILE||String||-||File storing the grammar|
|LABEL_FILE||String||-||File storing HMM NAME-> HMM LABEL mapping|
|FIRST_TOKEN||String||-||Label of a fixed first token|
|FINAL_TOKEN||String||-||Label of a fixed final token|
|TRANSCRIPTION||String||-||The correct transcription|
|SILENCE||String||""||The silence label(s)|
|MAX_APPROX||Boolean||False||Use max mixture approximation|
|NBEST||Int||1||Return best N hypotheses|
|STATE_PATH||Boolean||False||Record HMM state path|
|HAS_DELTAS||Boolean||0||Models have delta parameters|
|USE_DELTAS||Boolean||-||Models have delta parameters|
|HYPOTHESIS FILTER||String||""||Regular expression for filtering hypotheses|
|OUTPUT_CONFUSIONS||Boolean||0||Output confusion matrix|
|DUMP_PARAMETERS||Boolean||0||Write parameters to log file|
|USE_BOUNDS||Boolean||False||Use bounded marginalisation (static features)|
|USE_DELTA_BOUNDS||Boolean||False||Use bounded marginalisation (delta features)|