ngram_search.c File Reference

N-Gram based multi-pass search ("FBS") More...

`#include <string.h>`
`#include <assert.h>`
`#include <sphinxbase/ckd_alloc.h>`
`#include <sphinxbase/listelem_alloc.h>`
`#include <sphinxbase/err.h>`
`#include "pocketsphinx_internal.h"`
`#include "ps_lattice_internal.h"`
`#include "ngram_search.h"`
`#include "ngram_search_fwdtree.h"`
`#include "ngram_search_fwdflat.h"`

Go to the source code of this file.

## Macros

#define | NGRAM_HISTORY_LONG_WORD 2000 /* 20s */

## Functions

ps_search_t * | ngram_search_init (const char *name, ngram_model_t *lm, cmd_ln_t *config, acmod_t *acmod, dict_t *dict, dict2pid_t *d2p)
| Initialize the N-Gram search module.
void | ngram_search_free (ps_search_t *search)
| Finalize the N-Gram search module.
int | ngram_search_mark_bptable (ngram_search_t *ngs, int frame_idx)
| Record the current frame's index in the backpointer table.
void | ngram_search_save_bp (ngram_search_t *ngs, int frame_idx, int32 w, int32 score, int32 path, int32 rc)
| Enter a word in the backpointer table.
int | ngram_search_find_exit (ngram_search_t *ngs, int frame_idx, int32 *out_best_score)
| Find the best word exit for the current frame in the backpointer table.
char const * | ngram_search_bp_hyp (ngram_search_t *ngs, int bpidx)
| Backtrace from a given backpointer index to obtain a word hypothesis.
void | ngram_search_alloc_all_rc (ngram_search_t *ngs, int32 w)
| Allocate last phone channels for all possible right contexts for word w.
void | ngram_search_free_all_rc (ngram_search_t *ngs, int32 w)
| Allocate last phone channels for all possible right contexts for word w.
int32 | ngram_search_exit_score (ngram_search_t *ngs, bptbl_t *pbe, int rcphone)
| Get the exit score for a backpointer entry with a given right context.
void | ngram_compute_seg_score (ngram_search_t *ngs, bptbl_t *be, float32 lwf, int32 *out_ascr, int32 *out_lscr)
void | dump_bptable (ngram_search_t *ngs)
ps_lattice_t * | ngram_search_lattice (ps_search_t *search)
| Construct a word lattice from the current hypothesis.
void | ngram_search_set_lm (ngram_model_t *lm)
| Sets the global language model.

## Detailed Description

N-Gram based multi-pass search ("FBS")

Definition in file ngram_search.c.

## Macro Definition Documentation

## NGRAM_HISTORY_LONG_WORD

#define NGRAM_HISTORY_LONG_WORD 2000 /* 20s */

Definition at line 380 of file ngram_search.c.

## Function Documentation

## dump_bptable()

void dump_bptable | ( | ngram_search_t * | ngs | ) |

Definition at line 756 of file ngram_search.c.

## ngram_compute_seg_score()

void ngram_compute_seg_score | ( | ngram_search_t * | ngs,
|  | bptbl_t * | be,
|  | float32 | lwf,
|  | int32 * | out_ascr,
|  | int32 * | out_lscr
| ) |  |

Definition at line 685 of file ngram_search.c.

## ngram_search_alloc_all_rc()

void ngram_search_alloc_all_rc | ( | ngram_search_t * | ngs,
|  | int32 | w
| ) |  |

Allocate last phone channels for all possible right contexts for word w.

Definition at line 598 of file ngram_search.c.

References ngram_search_s::chan_alloc, chan_s::ciphone, dict2pid_rssid, chan_s::hmm, ngram_search_s::hmmctx, xwdssid_t::n_ssid, chan_s::next, chan_s::rc_id, xwdssid_t::ssid, and ngram_search_s::word_chan.

## ngram_search_bp_hyp()

char const * ngram_search_bp_hyp | ( | ngram_search_t * | ngs,
|  | int | bpidx
| ) |  |

Backtrace from a given backpointer index to obtain a word hypothesis.

Returns
  a read-only string with the best hypothesis.

Definition at line 550 of file ngram_search.c.

References bptbl_s::bp, ps_search_s::hyp_str, and bptbl_s::wid.

## ngram_search_exit_score()

int32 ngram_search_exit_score | ( | ngram_search_t * | ngs,
|  | bptbl_t * | pbe,
|  | int | rcphone
| ) |  |

Get the exit score for a backpointer entry with a given right context.

Definition at line 660 of file ngram_search.c.

References xwdssid_t::cimap, dict2pid_rssid, bptbl_s::last2_phone, bptbl_s::last_phone, bptbl_s::s_idx, and bptbl_s::score.

Referenced by ngram_search_lattice().

## ngram_search_find_exit()

int ngram_search_find_exit | ( | ngram_search_t * | ngs,
|  | int | frame_idx,
|  | int32 * | out_best_score
| ) |  |

Find the best word exit for the current frame in the backpointer table.

Returns
  the backpointer index of the best word exit.

Definition at line 506 of file ngram_search.c.

References BETTER_THAN, ngram_search_s::n_frame, bptbl_s::score, bptbl_s::wid, and WORST_SCORE.

## ngram_search_free()

void ngram_search_free | ( | ps_search_t * | search | ) |

Finalize the N-Gram search module.

Definition at line 289 of file ngram_search.c.

References ngram_search_s::active_word_list, ngram_search_s::chan_alloc, ngram_search_s::hmmctx, ngram_search_s::latnode_alloc, ngram_search_s::lmset, ngram_fwdflat_deinit(), ngram_fwdtree_deinit(), ngram_search_s::root_chan_alloc, ngram_search_s::word_active, and ngram_search_s::word_chan.

Referenced by ngram_search_init().

## ngram_search_free_all_rc()

void ngram_search_free_all_rc | ( | ngram_search_t * | ngs,
|  | int32 | w
| ) |  |

Allocate last phone channels for all possible right contexts for word w.

Definition at line 647 of file ngram_search.c.

References ngram_search_s::chan_alloc, chan_s::hmm, chan_s::next, and ngram_search_s::word_chan.

Referenced by ngram_fwdtree_finish().

## ngram_search_init()

ps_search_t * ngram_search_init | ( | const char * | name,
|  | ngram_model_t * | lm,
|  | cmd_ln_t * | config,
|  | acmod_t * | acmod,
|  | dict_t * | dict,
|  | dict2pid_t * | d2p
| ) |  |

Initialize the N-Gram search module.

Definition at line 140 of file ngram_search.c.

References acmod_set_grow(), ngram_search_s::active_word_list, ngram_search_s::chan_alloc, dict_size, ngram_search_s::hmmctx, ngram_search_s::latnode_alloc, ngram_search_s::lmset, acmod_s::mdef, ngram_search_s::n_frame_alloc, ngram_fwdflat_init(), ngram_fwdtree_init(), ngram_search_free(), ngram_search_s::root_chan_alloc, bin_mdef_s::sseq, acmod_s::tmat, tmat_t::tp, ngram_search_s::word_active, and ngram_search_s::word_chan.

Referenced by ps_set_lm().

## ngram_search_lattice()

ps_lattice_t * ngram_search_lattice | ( | ps_search_t * | search | ) |

Construct a word lattice from the current hypothesis.

Definition at line 1215 of file ngram_search.c.

References ps_latnode_s::alt, ps_latnode_s::basewid, ngram_search_s::best_score, BETTER_THAN, ps_search_s::dag, ps_search_s::dict, ps_lattice_s::end, ps_latnode_s::fef, ps_lattice_s::final_node_ascr, bptbl_s::frame, ps_lattice_s::latnode_alloc, ps_latnode_s::lef, ngram_search_s::n_frame, ps_lattice_s::n_frames, ps_lattice_s::n_nodes, ps_latnode_s::next, ngram_search_exit_score(), ps_lattice_s::nodes, ps_lattice_delete_unreachable(), ps_lattice_free(), ps_lattice_init_search(), ps_lattice_link(), ps_lattice_penalize_fillers(), ps_latnode_s::reachable, bptbl_s::score, ps_latnode_s::sf, ps_lattice_s::start, bptbl_s::wid, ps_latnode_s::wid, WORSE_THAN, and WORST_SCORE.

## ngram_search_mark_bptable()

int ngram_search_mark_bptable | ( | ngram_search_t * | ngs,
|  | int | frame_idx
| ) |  |

Record the current frame's index in the backpointer table.

Returns
  the current backpointer index.

Definition at line 329 of file ngram_search.c.

References ngram_search_s::frm_wordlist, and ngram_search_s::n_frame_alloc.

Referenced by ngram_fwdflat_finish(), ngram_fwdflat_search(), ngram_fwdtree_finish(), and ngram_fwdtree_search().

## ngram_search_save_bp()

void ngram_search_save_bp | ( | ngram_search_t * | ngs,
|  | int | frame_idx,
|  | int32 | w,
|  | int32 | score,
|  | int32 | path,
|  | int32 | rc
| ) |  |

Enter a word in the backpointer table.

Definition at line 383 of file ngram_search.c.

References bptbl_s::bp, dict2pid_rssid, bptbl_s::frame, bptbl_s::last2_phone, bptbl_s::last_phone, bptbl_s::prev_real_wid, bptbl_s::real_wid, bptbl_s::s_idx, bptbl_s::score, bptbl_s::valid, bptbl_s::wid, WORSE_THAN, and WORST_SCORE.

## ngram_search_set_lm()

void ngram_search_set_lm | ( | ngram_model_t * | lm | ) |

Sets the global language model.

Sets the language model to use if nothing was passed in configuration

Definition at line 1403 of file ngram_search.c.