Julius 4.2
関数
libjulius/src/backtrellis.c

単語トレリスの保存・参照 [詳細]

#include <julius/julius.h>

ソースコードを見る。

関数

void bt_init (BACKTRELLIS *bt)
 単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)
void bt_prepare (BACKTRELLIS *bt)
 次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).
void bt_free (BACKTRELLIS *bt)
 単語トレリスのメモリを開放する.
TRELLIS_ATOMbt_new (BACKTRELLIS *bt)
 トレリス単語を新たに割り付ける.
void bt_store (BACKTRELLIS *bt, TRELLIS_ATOM *tatom)
 第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.
void bt_relocate_rw (BACKTRELLIS *bt)
 第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.
void set_terminal_words (RecogProcess *r)
 逐次デコーディング時, 第1パス終了後に, 入力セグメントの両端に残った最尤単語仮説を取り出し, それらを 第2パスにおける初期/最終仮説としてセットする.
void bt_discount_pescore (WCHMM_INFO *wchmm, BACKTRELLIS *bt, HTK_Param *param)
 第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.
void bt_discount_lm (BACKTRELLIS *bt)
 第2パスのために2-gramスコアをトレリス上の単語から差し引く.
static int compare_wid (TRELLIS_ATOM **a, TRELLIS_ATOM **b)
 bt_sort_rw()用のqsortコールバック.
void bt_sort_rw (BACKTRELLIS *bt)
 bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.
TRELLIS_ATOMbt_binsearch_atom (BACKTRELLIS *bt, int t, WORD_ID wkey)
 単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.

説明

単語トレリスの保存・参照

第1パスの結果を単語トレリスとして保存し,第2パスで参照するための関数群 です. Julius では,第1パスで探索中に終端が生き残っていた単語は全て, その始終端フレーム,始端からの累積尤度および単語履歴とともに 保存され,第2パスでその集合の中から再探索が行われます. この第1パスでフレームごとに残される単語情報のことを「トレリス単語」, トレリス単語の集合全体を「単語トレリス」と呼びます.

トレリス単語は,第1パスの認識中に各フレームごとに保存されます. 第1パス終了後,トレリス全体の整形・再配置とフレームごとのインデックス を作成します.

第2パスでは,この単語トレリスを参照して 各時間(入力フレーム)における展開可能な仮説のリストを得るとともに, その第1パスでの(後ろ向きの)累積尤度を,第2パスにおける仮説の未展開部分の 推定スコアとして用います. このしくみから,単語トレリスは「バックトレリス」 とも呼ばれています.

作者:
Akinobu LEE
日付:
Tue Feb 22 15:40:01 2005
Revision:
1.3

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


関数

void bt_init ( BACKTRELLIS bt)

単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)

引数:
bt[in] 初期化する 単語トレリス 構造体へのポインタ

backtrellis.c79 行で定義されています。

参照元 j_launch_recognition_instance().

呼出しグラフ:

void bt_prepare ( BACKTRELLIS bt)

次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).

引数:
bt[in] 対象とする単語トレリス構造体へのポインタ

backtrellis.c104 行で定義されています。

参照元 get_back_trellis_init().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_free ( BACKTRELLIS bt)

単語トレリスのメモリを開放する.

引数:
bt[out] pointer to the word trellis structure.

backtrellis.c131 行で定義されています。

参照元 j_recogprocess_free().

関数の呼び出しグラフ:

呼出しグラフ:

TRELLIS_ATOM* bt_new ( BACKTRELLIS bt)

トレリス単語を新たに割り付ける.

引数:
bt[out] pointer to the word trellis structure.
戻り値:
pointer to the newly allocated trellis word.

backtrellis.c154 行で定義されています。

参照元 save_trellis().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_store ( BACKTRELLIS bt,
TRELLIS_ATOM tatom 
)

第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.

ここでは格納だけ行い,第1パス終了後に bt_relocate_rw() で フレーム順に再配置する.

引数:
bt[i/o] トレリス単語を格納するバックトレリス構造体
tatom[in] 出現したトレリス単語へのポインタ

backtrellis.c190 行で定義されています。

参照元 save_trellis().

呼出しグラフ:

void bt_relocate_rw ( BACKTRELLIS bt)

第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.

引数:
bt[i/o] 単語トレリス構造体

backtrellis.c218 行で定義されています。

参照元 finalize_1st_pass().

関数の呼び出しグラフ:

呼出しグラフ:

void set_terminal_words ( RecogProcess r)

逐次デコーディング時, 第1パス終了後に, 入力セグメントの両端に残った最尤単語仮説を取り出し, それらを 第2パスにおける初期/最終仮説としてセットする.

引数:
r[in] 認識処理インスタンス

backtrellis.c295 行で定義されています。

参照元 finalize_segment().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_discount_pescore ( WCHMM_INFO wchmm,
BACKTRELLIS bt,
HTK_Param param 
)

第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.

第2パスでは,仮説接続時には 接続仮説を考慮して接続点の状態の尤度が再計算される.

引数:
wchmm[in] 木構造化辞書
bt[in] 単語トレリス構造体
param[in] 入力パラメータ情報

backtrellis.c367 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_discount_lm ( BACKTRELLIS bt)

第2パスのために2-gramスコアをトレリス上の単語から差し引く.

引数:
bt[in] word trellis

backtrellis.c401 行で定義されています。

参照元 j_recognize_stream_core().

呼出しグラフ:

static int compare_wid ( TRELLIS_ATOM **  a,
TRELLIS_ATOM **  b 
) [static]

bt_sort_rw()用のqsortコールバック.

引数:
a[in] 要素1
b[in] 要素2
戻り値:
昇順ソートに必要な値

backtrellis.c439 行で定義されています。

参照元 bt_sort_rw().

void bt_sort_rw ( BACKTRELLIS bt)

bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.

引数:
bt[i/o] 単語トレリス構造体

backtrellis.c468 行で定義されています。

参照元 finalize_1st_pass().

関数の呼び出しグラフ:

呼出しグラフ:

TRELLIS_ATOM* bt_binsearch_atom ( BACKTRELLIS bt,
int  t,
WORD_ID  wkey 
)

単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.

引数:
bt[in] 単語トレリス構造体
t[in] 検索する終端時刻(フレーム)
wkey[in] 検索する単語の単語ID
戻り値:
見つかった場合そのトレリス単語へのポインタ,見つからなければ NULL.

backtrellis.c509 行で定義されています。

参照元 next_word(), と start_word().

呼出しグラフ: