mgau_t Struct Reference

A single mixture-Gaussian model for one senone (see above comment). More...

#include <cont_mgau.h>

List of all members.

Public Attributes

int32 n_comp
int32 bstidx
int32 bstscr
int32 updatetime
float32 ** mean
float32 ** var
float32 *** fullvar
float32 * lrd
int32 * mixw
float32 * mixw_f

Detailed Description

A single mixture-Gaussian model for one senone (see above comment).

Mixture Gaussians: Weighted set of Gaussian densities, each with its own mean vector and diagonal covariance matrix. Specialized for continuous HMMs to improve speed performance. So, a separate mixture Gaussian, with its own mixture weights, for each HMM state. Also, a single feature stream assumed. (In other words, the mgau_t structure below represents a senone in a fully continuous HMM model.)

Given a Gaussian density with mean vector m and diagonal variance vector v, and some input vector x, all of length n, the Mahalanobis distance of x from the Gaussian mean m is given by: {1/sqrt((2pi)^n * det(v))} * exp{-Sum((x[i] - m[i])^2 / (2v[i]))} To speed up this evaluation, the first sub-expression ({1/sqrt...}) can be precomputed at initialization, and so can 1/2v[i] in the second sub-expression. Secondly, recognition systems work with log-likelihood values, so these distances or likelihood values are computed in log-domain. Finally, float32 operations are costlier than int32 ones, so the log-values are converted to logs3 domain (see libmisc/logs3.h) (but before the mixing weights are applied). Thus, to reiterate, the final scores are (int32) logs3 values.


Member Data Documentation

Index for the most likely Gaussians in this mixture of component. It persists through time.

Referenced by approx_cont_mgau_frame_eval(), and mgau_eval().

Scores for the most likely Gaussians in this mixture of component.

Referenced by approx_cont_mgau_frame_eval(), and mgau_eval().

float32*** mgau_t::fullvar

Referenced by mgau_free().

float32* mgau_t::lrd

Log(Reciprocal(Determinant (variance))). (Then there is also a (2pi)^(veclen) involved...)

Referenced by mgau_comp_eval(), and mgau_free().

float32** mgau_t::mean

The n_comp means of the Gaussians. The mean vector for a single mixture-Gaussian model for one senone. Dimension: n_comp * dimension

Referenced by main(), mgau_comp_eval(), mgau_dump(), and mgau_free().

int32* mgau_t::mixw

Mixture weights for the n_comp components (int32 instead of float32 because these values are in logs3 domain)

Referenced by mgau_free().

float32* mgau_t::mixw_f

(ONLY USED IN ENDPOINTER) mixture weights for the n_comp components in float32

Referenced by mgau_free().

#Component Gaussians in this mixture. NOTE: May be 0 (for the untrained states).

Referenced by mgau_comp_eval().

Update time

Referenced by approx_cont_mgau_frame_eval(), and mgau_eval().

float32** mgau_t::var

The n_comp (diagonal) variances of the Gaussians. Could be converted to 1/(2*var) for faster computation (see above comment). The diagonal variance vector for a single mixture-Gaussian model for one senone. Dimension: n_comp * dimension

Referenced by mgau_comp_eval(), mgau_dump(), mgau_free(), mgau_init(), and mgau_var_nzvec_floor().


The documentation for this struct was generated from the following file:

Generated on 7 Mar 2010 by  doxygen 1.6.1