libsent/src/phmm/gprune_safe.c File Reference

Calculate probability of a set of Gaussian densities by Gaussian pruning: safe algorithm. More...

#include <sent/stddefs.h>
#include <sent/htk_hmm.h>
#include <sent/htk_param.h>
#include <sent/hmm.h>
#include <sent/hmm_calc.h>

Go to the source code of this file.

Functions

LOGPROB compute_g_safe (HMMWork *wrk, HTK_HMM_Dens *binfo, LOGPROB thres)
 Calculate probability with safe pruning.
boolean gprune_safe_init (HMMWork *wrk)
 Initialize and setup work area for Gaussian pruning by safe algorithm.
void gprune_safe_free (HMMWork *wrk)
 Free gprune_safe related work area.
void gprune_safe (HMMWork *wrk, HTK_HMM_Dens **g, int gnum, int *last_id)
 Compute a set of Gaussians with safe pruning.


Detailed Description

Calculate probability of a set of Gaussian densities by Gaussian pruning: safe algorithm.

gprune_safe() is one of the functions to compute output probability of a set of Gaussian densities. This function does safe pruning, trying to compute only the best ones for faster computation. If a tied-mixture HMM model with GPRUNE_DEFAULT_SAFE defined in Julius, or explicitly specified by "-gprune safe" option, this function will be used.

The safe pruning is the most safe method that can find the exact N-best Gaussians, but the efficiency is smaller.

gprune_safe() will be used by calling outprob_init() to set its pointer to the global variable compute_gaussset. Then it will be called from calc_tied_mix() or calc_mix().

Author:
Akinobu LEE
Date:
Thu Feb 17 05:28:12 2005
Revision
1.1.1.1

Definition in file gprune_safe.c.


Function Documentation

LOGPROB compute_g_safe ( HMMWork wrk,
HTK_HMM_Dens binfo,
LOGPROB  thres 
)

Calculate probability with safe pruning.

Calculate probability of a Gaussian toward OP_vec, performing pruning using the scholar threshold.

Parameters:
wrk [i/o] HMM computation work area
binfo [in] Gaussian density
thres [in] threshold
Returns:
the output log probability.

Definition at line 76 of file gprune_safe.c.

Referenced by gprune_beam(), gprune_heu(), and gprune_safe().

boolean gprune_safe_init ( HMMWork wrk  ) 

Initialize and setup work area for Gaussian pruning by safe algorithm.

Parameters:
wrk [i/o] HMM computation work area
Returns:
TRUE on success, FALSE on failure.

Definition at line 107 of file gprune_safe.c.

Referenced by outprob_init().

void gprune_safe_free ( HMMWork wrk  ) 

Free gprune_safe related work area.

Parameters:
wrk [i/o] HMM computation work area

Definition at line 127 of file gprune_safe.c.

Referenced by outprob_init().

void gprune_safe ( HMMWork wrk,
HTK_HMM_Dens **  g,
int  gnum,
int *  last_id 
)

Compute a set of Gaussians with safe pruning.

If the N-best mixtures in the previous frame is specified in last_id, They are first computed to set the initial threshold. After that, the rest of the Gaussians will be computed with the thresholds to drop unpromising Gaussians from computation at early stage of likelihood computation. If the computation of a Gaussian reached to the end, the threshold will be updated to always hold the likelihood of current N-best score.

The calculated scores will be stored to OP_calced_score, with its corresponding mixture id to OP_calced_id. These are done by calling cache_push(). The number of calculated mixtures is also stored in OP_calced_num.

This can be called from calc_tied_mix() or calc_mix().

Parameters:
wrk [i/o] HMM computation work area
g [in] set of Gaussian densities to compute the output probability
gnum [in] length of above
last_id [in] ID list of N-best mixture in previous input frame, or NULL if not exist

Definition at line 159 of file gprune_safe.c.

Referenced by outprob_init().


Generated on Tue Dec 18 16:01:40 2007 for Julius by  doxygen 1.5.4