Edinburgh Speech Tools  2.1-release
EST_Viterbi_Decoder Class Reference

A class that offers a generalised Viterbi decoder. More...

#include <include/EST_viterbi.h>

Collaboration diagram for EST_Viterbi_Decoder:

Public Member Functions

 EST_Viterbi_Decoder (uclist_f_t a, unpath_f_t b)
 
 EST_Viterbi_Decoder (uclist_f_t a, unpath_f_t b, int num_states)
 
 ~EST_Viterbi_Decoder ()
 
void set_beam_width (int w)
 Only for use in beam search mode: number of paths to consider. More...
 
void set_cand_width (int w)
 Only for use in beam search mode: number of candidates to consider. More...
 
void set_debug (int d)
 Output some debugging information. More...
 
void set_big_is_good (int flag)
 
EST_VTCandidateadd_cand_prune (EST_VTCandidate *newcand, EST_VTCandidate *allcands)
 
bool vit_prune_path (double path_score, double score_cutoff)
 
void initialise (EST_Relation *r)
 Build the initial table from a EST_Relation. More...
 
void set_pruning_parameters (float beam, float ob_beam)
 set beam widths for pruning More...
 
void turn_on_debug ()
 
void turn_on_trace ()
 
void search (void)
 Do the the actual search. More...
 
bool result (const EST_String &n)
 
bool result (EST_VTPath **bestPathEnd)
 
void copy_feature (const EST_String &n)
 Copy named feature from the best path to related stream item. More...
 

Public Attributes

EST_Features f
 For holding values to pass to user called functions. More...
 
const double vit_a_big_number
 Unfortunately using MAX_DOUBLE doesn't do the right thing (e.g. comparison don't work with MAX_DOUBLE on alphas), so we declare our own large number. More...
 

Detailed Description

A class that offers a generalised Viterbi decoder.

This class can be used to find the best path through a set of candidates based on likelihoods of the candidates and some combination function. The candidate list and joining are not included in the decoder itself but are user defined functions that are specified at construction time.

Those functions need to return a list of candidates and score a join of a path to a candidate and (optionally define a state).

Although this offers a full Viterbi search it may also be used as a generalised beam search.

See viterbi_main.cc for an example of using this.

Author
Alan W Black (awb@c.nosp@m.str..nosp@m.ed.ac.nosp@m..uk): July 1996

Definition at line 134 of file EST_viterbi.h.

Constructor & Destructor Documentation

EST_Viterbi_Decoder::EST_Viterbi_Decoder ( uclist_f_t  a,
unpath_f_t  b 
)

Construct a decoder with given candidate function and join function, as number of states is given this implies a beam search

Definition at line 67 of file EST_viterbi.cc.

EST_Viterbi_Decoder::EST_Viterbi_Decoder ( uclist_f_t  a,
unpath_f_t  b,
int  num_states 
)

Construct a decoder with given candidate function and join function with a state size as specified.

Definition at line 86 of file EST_viterbi.cc.

EST_Viterbi_Decoder::~EST_Viterbi_Decoder ( )

Definition at line 107 of file EST_viterbi.cc.

Member Function Documentation

void EST_Viterbi_Decoder::set_beam_width ( int  w)
inline

Only for use in beam search mode: number of paths to consider.

Definition at line 186 of file EST_viterbi.h.

void EST_Viterbi_Decoder::set_cand_width ( int  w)
inline

Only for use in beam search mode: number of candidates to consider.

Definition at line 188 of file EST_viterbi.h.

void EST_Viterbi_Decoder::set_debug ( int  d)
inline

Output some debugging information.

Definition at line 190 of file EST_viterbi.h.

void EST_Viterbi_Decoder::set_big_is_good ( int  flag)
inline

Define whether good scores are bigger or smaller. This allows the search to work for likelihoods probabilities, scores or whatever

Definition at line 196 of file EST_viterbi.h.

EST_VTCandidate * EST_Viterbi_Decoder::add_cand_prune ( EST_VTCandidate newcand,
EST_VTCandidate allcands 
)

Add a new candidate to list if better than others, pruning the list if required.

Definition at line 465 of file EST_viterbi.cc.

bool EST_Viterbi_Decoder::vit_prune_path ( double  path_score,
double  score_cutoff 
)

Definition at line 403 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::initialise ( EST_Relation r)

Build the initial table from a EST_Relation.

Definition at line 112 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::set_pruning_parameters ( float  beam,
float  ob_beam 
)

set beam widths for pruning

Definition at line 186 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::turn_on_debug ( )

Definition at line 196 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::turn_on_trace ( )

Definition at line 201 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::search ( void  )

Do the the actual search.

Definition at line 207 of file EST_viterbi.cc.

bool EST_Viterbi_Decoder::result ( const EST_String n)

Extract the result from the table and store it as a feature on the related EST_Item in the given EST_Relation named as n. Return FALSE if no path is found.

Definition at line 515 of file EST_viterbi.cc.

bool EST_Viterbi_Decoder::result ( EST_VTPath **  bestPathEnd)

Extract the end point of the best path found during search. Return FALSE if no path is found.

Definition at line 539 of file EST_viterbi.cc.

void EST_Viterbi_Decoder::copy_feature ( const EST_String n)

Copy named feature from the best path to related stream item.

Definition at line 556 of file EST_viterbi.cc.

Member Data Documentation

EST_Features EST_Viterbi_Decoder::f

For holding values to pass to user called functions.

Definition at line 168 of file EST_viterbi.h.

const double EST_Viterbi_Decoder::vit_a_big_number

Unfortunately using MAX_DOUBLE doesn't do the right thing (e.g. comparison don't work with MAX_DOUBLE on alphas), so we declare our own large number.

Definition at line 173 of file EST_viterbi.h.


The documentation for this class was generated from the following files: