Julius 4.2
関数
libjulius/src/gmm.c

GMM による入力棄却およびVAD. [詳細]

#include <julius/julius.h>

ソースコードを見る。

関数

static int gmm_find_insert_point (GMMCalc *gc, LOGPROB score, int len)
 Gaussianのスコアを計算済みGaussianリストのどの位置に挿入すべきかを返す.
static int gmm_cache_push (GMMCalc *gc, int id, LOGPROB score, int len)
 あるGaussianの計算結果を計算済みGaussianリストに格納する.
static LOGPROB gmm_compute_g_base (GMMCalc *gc, HTK_HMM_Dens *binfo)
 現在のフレームの入力ベクトルに対する Gaussian の出力確率を計算する.
static LOGPROB gmm_compute_g_safe (GMMCalc *gc, HTK_HMM_Dens *binfo, LOGPROB thres)
 現在のフレームの入力ベクトルに対する Gaussian の出力確率を計算する.
static void gmm_gprune_safe_init (GMMCalc *gc, HTK_HMM_INFO *hmminfo, int prune_num)
 GMM計算における Gaussian pruning のためのワークエリアを確保する
static void gmm_gprune_safe (GMMCalc *gc, HTK_HMM_Dens **g, int gnum)
 ガウス分布集合内の各ガウス分布の現フレームに対する出力確率を計算する.
static LOGPROB gmm_calc_mix (GMMCalc *gc, HTK_HMM_State *state)
 あるGMM状態の現フレームに対する出力確率を計算する.
static LOGPROB outprob_state_nocache (GMMCalc *gc, int t, HTK_HMM_State *stateinfo, HTK_Param *param)
 入力の指定フレームにおけるGMM状態のスコアを求めるメイン関数.
boolean gmm_init (Recog *recog)
 GMMの計算のための初期化.
void gmm_prepare (Recog *recog)
 GMM計算のための準備を行なう.
void gmm_proceed (Recog *recog)
 与えられた入力ベクトル列上のあるフレームについて,全GMMのスコアを計算し, 計算結果を gmm_score に積算する.
void gmm_end (Recog *recog)
 GMMの計算を終了し,結果を出力する.
boolean gmm_valid_input (Recog *recog)
 GMMの識別結果,最後の入力が音声入力として有効であったか 無効であったかを返す.
void gmm_free (Recog *recog)
 GMM計算に用いたワークエリアを開放する.

説明

GMM による入力棄却およびVAD.

Gaussian Mixture Model (GMM) が起動時に指定された場合,Julius/Julian は 入力発話に対してフレームごとにスコアを計算し,その累積スコアを算出する. これはGMMに基づく入力音声の発話検証および棄却に用いられる. 実際の計算は 第1パスの認識処理と並行してリアルタイムに行なわれ,第1パス終了と同時に 結果が出力される.

GMMのスコア計算には Gaussian pruning の safe algorithm が用いられ, 各フレームにおいて上位 N 個だけが正しく得られるように計算される. ただし通常の認識用音響モデルの場合と異なり,直前フレームの順位情報は 用いていない.

GMM_VAD 定義時は,上記の入力棄却に加えて,short-pause segmentation と 同じ枠組にを用いた VAD が行われる.

作者:
Akinobu LEE
日付:
Tue Mar 15 05:14:10 2005
Revision:
1.5

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


関数

static int gmm_find_insert_point ( GMMCalc gc,
LOGPROB  score,
int  len 
) [static]

Gaussianのスコアを計算済みGaussianリストのどの位置に挿入すべきかを返す.

引数:
gc[i/o] GMM計算用ワークエリア
score[in] 挿入したいスコア
len[in] 現在のリストの長さ
戻り値:
リスト内の挿入位置

gmm.c80 行で定義されています。

参照元 gmm_cache_push().

static int gmm_cache_push ( GMMCalc gc,
int  id,
LOGPROB  score,
int  len 
) [static]

あるGaussianの計算結果を計算済みGaussianリストに格納する.

引数:
gc[i/o] GMM計算用ワークエリア
id[in] Gaussian の GMM 内での番号
score[in] その Gaussian の計算された音響尤度
len[in] 現在のリストの長さ(現在格納されている Gaussian の数)
戻り値:
格納後のリストの長さ.

gmm.c121 行で定義されています。

参照元 gmm_gprune_safe().

static LOGPROB gmm_compute_g_base ( GMMCalc gc,
HTK_HMM_Dens binfo 
) [static]

現在のフレームの入力ベクトルに対する Gaussian の出力確率を計算する.

Gaussian pruning は行なわない.

引数:
gc[i/o] GMM計算用ワークエリア
binfo[in] Gaussian
戻り値:
出力確率の対数値

gmm.c177 行で定義されています。

参照元 gmm_gprune_safe().

static LOGPROB gmm_compute_g_safe ( GMMCalc gc,
HTK_HMM_Dens binfo,
LOGPROB  thres 
) [static]

現在のフレームの入力ベクトルに対する Gaussian の出力確率を計算する.

計算時には固定しきい値による safe pruning を行なう.

引数:
gc[i/o] GMM計算用ワークエリア
binfo[in] Gaussian
thres[in] safe pruning のための枝刈りしきい値
戻り値:
出力確率の対数値

gmm.c219 行で定義されています。

参照元 gmm_gprune_safe().

static void gmm_gprune_safe_init ( GMMCalc gc,
HTK_HMM_INFO hmminfo,
int  prune_num 
) [static]

GMM計算における Gaussian pruning のためのワークエリアを確保する

引数:
gc[i/o] GMM計算用ワークエリア
hmminfo[in] HMM 構造体
prune_num[in] Gaussian pruning において計算する上位ガウス分布数

gmm.c257 行で定義されています。

参照元 gmm_init().

static void gmm_gprune_safe ( GMMCalc gc,
HTK_HMM_Dens **  g,
int  gnum 
) [static]

ガウス分布集合内の各ガウス分布の現フレームに対する出力確率を計算する.

Gaussian pruning により,実際には上位 N 個のみを保証する枝刈りが行なわれ, スコアの低いガウス分布は計算されない.

計算結果は計算済みGaussianリスト (OP_calced_score, OP_calced_id) に 格納される.

引数:
gc[i/o] GMM計算用ワークエリア
g[in] ガウス分布集合
gnum[in] g の長さ

gmm.c296 行で定義されています。

参照元 gmm_calc_mix().

static LOGPROB gmm_calc_mix ( GMMCalc gc,
HTK_HMM_State state 
) [static]

あるGMM状態の現フレームに対する出力確率を計算する.

引数:
gc[i/o] GMM計算用ワークエリア
state[in] GMM 状態
戻り値:
出力確率の対数スコア

gmm.c334 行で定義されています。

参照元 outprob_state_nocache().

static LOGPROB outprob_state_nocache ( GMMCalc gc,
int  t,
HTK_HMM_State stateinfo,
HTK_Param param 
) [static]

入力の指定フレームにおけるGMM状態のスコアを求めるメイン関数.

引数:
gc[i/o] GMM計算用ワークエリア
t[in] 計算するフレーム
stateinfo[in] GMM状態
param[in] 入力ベクトル系列
戻り値:
出力確率の対数スコア

gmm.c397 行で定義されています。

参照元 gmm_proceed().

boolean gmm_init ( Recog recog)

GMMの計算のための初期化.

起動時に一度だけ呼ばれる.

引数:
recog[i/o] エンジンインスタンス

gmm.c429 行で定義されています。

参照元 j_final_fusion().

関数の呼び出しグラフ:

呼出しグラフ:

void gmm_prepare ( Recog recog)

GMM計算のための準備を行なう.

1入力開始ごとに呼ばれる.

引数:
recog[i/o] エンジンインスタンス

gmm.c522 行で定義されています。

参照元 decode_proceed().

呼出しグラフ:

void gmm_proceed ( Recog recog)

与えられた入力ベクトル列上のあるフレームについて,全GMMのスコアを計算し, 計算結果を gmm_score に積算する.

GMM_VAD 定義時は,後で VAD 判定するために,過去 jconf->detect.gmm_margin フレーム分の VAD スコア (音声GMMの最大スコア - 雑音GMMの最大スコア)が 保存される.

引数:
recog[i/o] エンジンインスタンス

gmm.c574 行で定義されています。

参照元 decode_proceed().

関数の呼び出しグラフ:

呼出しグラフ:

void gmm_end ( Recog recog)

GMMの計算を終了し,結果を出力する.

gmm_proceed() によって累積された各フレームごとのスコアから, 最大スコアのGMMを決定する. その事後確率に基づく信頼度を計算し 最終的な結果を result_gmm() によって出力する.

引数:
recog[i/o] エンジンインスタンス

gmm.c657 行で定義されています。

参照元 decode_end(), と decode_end_segmented().

関数の呼び出しグラフ:

呼出しグラフ:

boolean gmm_valid_input ( Recog recog)

GMMの識別結果,最後の入力が音声入力として有効であったか 無効であったかを返す.

引数:
recog[i/o] エンジンインスタンス
戻り値:
一位のGMMの名前が gmm_reject_cmn_string 内に無ければ valid として TRUE, あれば invalid として FALSE を返す.

gmm.c734 行で定義されています。

参照元 j_recognize_stream_core().

呼出しグラフ:

void gmm_free ( Recog recog)

GMM計算に用いたワークエリアを開放する.

引数:
recog[i/o] engine instance

gmm.c758 行で定義されています。

参照元 j_recog_free().

呼出しグラフ: