Public Attributes | List of all members
mgau_t Struct Reference

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

#include <cont_mgau.h>

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

◆ bstidx

int32 mgau_t::bstidx

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

Referenced by mgau_eval().

◆ bstscr

int32 mgau_t::bstscr

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

Referenced by mgau_eval().

◆ fullvar

float32*** mgau_t::fullvar

Referenced by mgau_free().

◆ lrd

float32* mgau_t::lrd

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

Referenced by mgau_comp_eval(), and mgau_free().

◆ mean

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 mgau_comp_eval(), mgau_dump(), and mgau_free().

◆ mixw

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

◆ mixw_f

float32* mgau_t::mixw_f

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

Referenced by mgau_free().

◆ n_comp

int32 mgau_t::n_comp

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

Referenced by mgau_comp_eval().

◆ updatetime

int32 mgau_t::updatetime

Update time

Referenced by mgau_eval().

◆ var

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(), and mgau_var_nzvec_floor().


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