Public Attributes
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

int32 mgau_t::bstidx

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().

int32 mgau_t::bstscr

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().

int32 mgau_t::n_comp

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

Referenced by mgau_comp_eval().

int32 mgau_t::updatetime

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: