#include <julius.h>
beam.cのインクルード依存関係図
マクロ定義 | |
#define | SD(A) tindex[tn][A-1] |
Index locater for sort_token_*(). | |
#define | SCOPY(D, S) D = S |
Content copier for sort_token_*(). | |
#define | SVAL(A) (tlist[tn][tindex[tn][A-1]].score) |
Score locater for sort_token_*(). | |
#define | STVAL (tlist[tn][s].score) |
Indexed score locater for sort_token_*(). | |
関数 | |
static void | put_atom (TRELLIS_ATOM *atom, WORD_INFO *winfo) |
static LOGPROB | trace_backptr (WORD_ID wordseq_rt[MAXSEQNUM], int *rt_wordlen, TRELLIS_ATOM *atom, BACKTRELLIS *backtrellis, WORD_INFO *winfo) |
認識結果の単語トレリス上の最尤単語系列を求める. | |
static LOGPROB | print_1pass_result (BACKTRELLIS *backtrellis, int framelen, WORD_INFO *winfo) |
第1パスの認識処理結果を出力する. | |
static void | bt_current_max (BACKTRELLIS *bt, int t, WORD_INFO *winfo) |
static void | bt_current_max_word (BACKTRELLIS *bt, int t, WORD_INFO *winfo) |
static void | malloc_nodes (int n, int ntoken_init, int ntoken_step) |
static void | expand_tlist () |
static void | free_nodes () |
static void | clear_tlist (int tt) |
static void | clear_tokens (int tt) |
static TOKENID | create_token () |
static void | node_assign_token (int node, TOKENID tkid) |
木構造化辞書のノードにトークンを割り付ける.. | |
static TOKENID | node_exist_token (int tt, int node, WORD_ID wid) |
木構造化辞書上のあるノードが,現在なんらかのトークンを 保持しているかをチェックする.. | |
static void | sort_token_upward (int neednum, int totalnum) |
トークンスペースをスコアの大きい順にソートする. | |
static void | sort_token_downward (int neednum, int totalnum) |
トークンスペースをスコアの小さい順にソートする. | |
static void | sort_token_no_order (int neednum, int *start, int *end) |
トークンスペースをソートしてビーム内に残るトークンを決定する | |
static void | init_nodescore (HTK_Param *param, WCHMM_INFO *wchmm) |
void | get_back_trellis_init (HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis) |
フレーム同期ビーム探索:最初の1フレーム目 | |
boolean | get_back_trellis_proceed (int t, HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis) |
フレーム同期ビーム探索:2フレーム目以降 | |
void | get_back_trellis_end (HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis) |
フレーム同期ビーム探索:最終フレーム | |
LOGPROB | finalize_1st_pass (BACKTRELLIS *backtrellis, WORD_INFO *winfo, int len) |
第1パスの終了処理を行う.. | |
void | get_back_trellis (HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis, LOGPROB *backmax) |
フレーム同期ビーム探索:メイン | |
変数 | |
static boolean | idc_on |
set to TRUE when activating tty progress indicator | |
static int | progout_interval_frame |
Local work area to hold the output interval in frames for progressive output. | |
static TOKEN2 * | tlist [2] |
Token space to hold all token entities. | |
static TOKENID * | tindex [2] |
Token index corresponding to tlist for sort. | |
static int | maxtnum = 0 |
Allocated number of tokens (will grow). | |
static int | expand_step = 0 |
Number of tokens to be increased per expansion. | |
static int | tnum [2] |
Current number of tokens used in tlist. | |
static int | n_start |
Start index of in-beam nodes on tindex. | |
static int | n_end |
end index of in-beam nodes on tindex | |
static int | tl |
Current work area id (0 or 1, swapped for each frame). | |
static int | tn |
Next work area id (0 or 1, swapped for each frame). | |
static TOKENID * | token |
Active token list that holds currently assigned tokens for each tree node. | |
static int | totalnodenum |
Allocated number of nodes in token. | |
static TRELLIS_ATOM | bos |
Special token for beginning-of-sentence. | |
static boolean | nodes_malloced = FALSE |
Flag to check if tokens already allocated. | |
static TRELLIS_ATOM * | tre |
Local workarea to hold the generated trellis word. | |
static int | node |
Temporal work to hold the current node number on the lexicon tree. | |
static int | stid |
Temporal worl to specify beginning-of-word nodes on the lexicon tree. | |
static A_CELL * | ac |
Temporal work to hold the next states of a node. | |
static int | next_node2 |
Temporal work to hold the next node. |
入力データ全体があらかじめ得られている場合は,一括で計算を 行う関数 get_back_trellis() がメインから呼ばれます.オンライン認識 の場合は realtime_1stpass.c から get_back_trellis_init(), get_back_trellis_proceed(), get_back_trellis_end() などがそれぞれ 入力の進行状況にあわせて個別に呼ばれます.
単語履歴近似は 1-best 近似がデフォルトですが,単語対近似も使用可能です.
Julius では単語間の接続制約は 1-gram factoring (2-gram factoring も 選択可)を用いて計算されます.Julianの場合,木構造化辞書は文法の カテゴリ単位で作成され,単語間の接続(単語対制約)は単語間遷移で 適用されます.
beam.c で定義されています。
|
あるトレリス単語の情報をテキストで出力 (デバッグ用)
参照元 trace_backptr(). |
|
認識結果の単語トレリス上の最尤単語系列を求める. 与えられたトレリス単語から入力始端に向かって単語トレリス上を トレースバックし, その最尤単語系列候補およびその言語スコアを返す. 起点となる最初のトレリス単語が与えられる必要がある.
参照元 bt_current_max(), と print_1pass_result(). |
|
第1パスの認識処理結果を出力する. 第1パスの計算結果である単語トレリスから,第1パスでの最尤候補を求めて 出力する.内部では,最終フレームに残った中から起点となるトレリス単語 を求め,trace_backptr() を呼び出して第1パスの尤仮説系列を求めて その結果を出力する. この第1パスの最尤仮説列は 大域変数 pass1_wseq, pass1_wnum, pass1_scoreにも保存される. これらは第2パスで探索が失敗したときに第1パスの結果を最終結果として 出力する際に参照される. またWORD_GRAPH 定義時は,この関数内でさらに generate_lattice() を呼び出し 単語グラフの抽出を行う.
参照元 finalize_1st_pass(). |
|
第1パスの処理中に,あるフレームまでのベストパスを表示する.
|
|
第1パスの処理中に,あるフレーム上の最尤単語を表示する(デバッグ用)
|
|
第1パスのビーム探索用の初期ワークエリアを確保する. 足りない場合は探索中に動的に伸長される.
|
|
第1パスのビーム探索用のワークエリアを伸ばして再確保する. 参照元 create_token(). |
|
第1パスのビーム探索用のワークエリアを全て解放する. 参照元 finalize_1st_pass(). |
|
トークンスペースをリセットする.
|
|
アクティブトークンリストをクリアする.
|
|
トークンスペースから新たなトークンを取りだす.
|
|
木構造化辞書のノードにトークンを割り付ける.. 木構造化辞書のノードのアクティブトークンリストにトークンを保存する. またトークンスペースにおいてトークンからノード番号へのリンクを保存する. 既にトークンがある場合は,新たなトークンによって上書きされる.なお WPAIR 指定時はそのリストに新たなトークンを追加する.
|
|
木構造化辞書上のあるノードが,現在なんらかのトークンを 保持しているかをチェックする.. WPAIR が定義されている場合,ノードは直前単語ごとに異なるトークンを複数 保持する.この場合, 指定された単語IDを直前単語とするトークンが そのノードに保持されているかどうかがチェックされる.すなわち,既にトークン が存在しても,そのトークンの表すパスの直前単語が指定した単語と異なって いれば未保持 (TOKENID_UNDEFINED) を返す.
|
|
トークンスペースをスコアの大きい順にソートする. heap sort を用いて現在のトークン集合をスコアの大きい順にソートする. 上位 neednum 個のトークンがソートされればそこで処理を終了する.
|
|
トークンスペースをスコアの小さい順にソートする. ビームのしきい値決定のために,heap sort を用いて 現在のトークン集合をスコアの小さい順にソートする. 下位 neednum 個のトークンがソートされればそこで処理を終了する.
|
|
トークンスペースをソートしてビーム内に残るトークンを決定する heap sort を用いて現在のトークン集合をソートし,上位スコアのトークン 集合を求める.上位 neednum 個のトークン集合が得られれば良いので, 全体が完全にソートされている必要はない.よって 上位 neednum 個のトークンのみをソートする.実際には,全体のトークン 数と必要なトークン数から sort_token_upward() と sort_token_downward() の早い方が用いられる.
|
|
ビームサーチ用の初期化を行う.出力確率キャッシュの 初期化および初期仮説の生成を行う.初期仮説の初期スコア設定のため, 最初の1フレーム目の入力が得られている必要がある.
|
|
フレーム同期ビーム探索:最初の1フレーム目 ここではビームサーチに用いるノードやトークン,単語トレリス構造体などの 初期化,および最初のフレームの計算を行う.2フレーム目以降は get_back_trellis_proceed() を用いる.
参照元 get_back_trellis(), RealTimeParam(), と RealTimePipeLine(). |
|
フレーム同期ビーム探索:2フレーム目以降 フレーム同期ビーム探索のメイン部分です.与えられた1フレーム分計算を 進め,そのフレーム内に残った単語を単語トレリス構造体の中に保存する. 第1フレームに対しては get_back_trellis_init() を用いる. 詳細は関数内のコメントを参照のこと.
参照元 get_back_trellis(), get_back_trellis_end(), RealTimeParam(), と RealTimePipeLine(). |
|
フレーム同期ビーム探索:最終フレーム 第1パスのフレーム同期ビーム探索を終了するために, (param->samplenum -1) の最終フレームに対する終了処理を行う.
参照元 get_back_trellis(), RealTimeParam(), と RealTimeTerminate(). |
|
第1パスの終了処理を行う.. この関数は get_back_trellis_end() の直後に呼ばれ,第1パスの終了処理を 行う.生成した単語トレリス構造体の最終的な後処理を行い第2パスで アクセス可能な形に内部を変換する.また, 仮説のバックトレースを行い第1パスのベスト仮説を出力する.
参照元 get_back_trellis(), RealTimeParam(), と RealTimeTerminate(). |
|
フレーム同期ビーム探索:メイン 与えられた入力ベクトル列に対して第1パス(フレーム同期ビーム探索)を 行い,その結果を出力する.また全フレームに渡る単語終端を,第2パス のために単語トレリス構造体に格納する. この関数は入力ベクトル列があらかじめ得られている場合に用いられる. 第1パスが入力と並列して実行されるオンライン認識の場合, この関数は用いられず,代わりにこのファイルで定義されている各サブ関数が 直接 realtime-1stpass.c 内から呼ばれる.
|