Julius 4.2
関数
libsent/src/phmm/gprune_safe.c

混合ガウス分布計算: Gaussian pruning (safe algorithm) [詳細]

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

ソースコードを見る。

関数

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, int lnum)
 Compute a set of Gaussians with safe pruning.

説明

混合ガウス分布計算: Gaussian pruning (safe algorithm)

gprune_safe()は混合ガウス分布集合の計算ルーチンの一つです. safe pruning を使って上位のガウス分布の出力確率のみを高速に求めます. Tied-mixture HMM 使用時に Julius でGPRUNE_DEFAULT_SAFE が定義されているか, あるいはJuliusのオプション "-gprune safe" を指定することでこの関数が 使用されます.

safe pruning は最も安全な枝刈り法です.上位N個のガウス分布が確実に 得られますが,高速化の効果は他の手法に比べて小さいです.

gprune_safe()outprob_init() によってその関数へのポインタが compute_gaussset にセットされることで使用されます.このポインタが calc_tied_mix() または calc_mix() から呼び出されます.

作者:
Akinobu LEE
日付:
Thu Feb 17 05:28:12 2005
Revision:
1.5

gprune_safe.c で定義されています。


関数

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.

引数:
wrk[i/o] HMM computation work area
binfo[in] Gaussian density
thres[in] threshold
戻り値:
the output log probability.

gprune_safe.c76 行で定義されています。

参照元 gprune_beam(), gprune_heu(), と gprune_safe().

boolean gprune_safe_init ( HMMWork wrk)

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

引数:
wrk[i/o] HMM computation work area
戻り値:
TRUE on success, FALSE on failure.

gprune_safe.c107 行で定義されています。

参照元 outprob_init().

void gprune_safe_free ( HMMWork wrk)

Free gprune_safe related work area.

引数:
wrk[i/o] HMM computation work area

gprune_safe.c127 行で定義されています。

参照元 outprob_init().

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

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

引数:
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
lnum[in] length of last_id

gprune_safe.c160 行で定義されています。

参照元 outprob_init().