dict2pid.c File Reference

Implementation of dict2pid. More...

#include <string.h>
#include "dict2pid.h"
#include "logs3.h"

Functions

void compress_table (s3ssid_t *uncomp_tab, s3ssid_t *com_tab, s3cipid_t *ci_map, int32 n_ci)
int32 get_rc_nssid (dict2pid_t *d2p, s3wid_t w, dict_t *dict)
s3cipid_tdict2pid_get_rcmap (dict2pid_t *d2p, s3wid_t w, dict_t *dict)
dict2pid_tdict2pid_build (mdef_t *mdef, dict_t *dict, int32 is_composite, logmath_t *logmath)
void dict2pid_free (dict2pid_t *d2p)
void dict2pid_report (dict2pid_t *d2p)
void dict2pid_comsenscr (dict2pid_t *d2p, int32 *senscr, int32 *comsenscr)
void dict2pid_comsseq2sen_active (dict2pid_t *d2p, mdef_t *mdef, uint8 *comssid, uint8 *sen)
void dict2pid_dump (FILE *fp, dict2pid_t *d2p, mdef_t *mdef, dict_t *dict)

Detailed Description

Implementation of dict2pid.

A general remark, notice "comsseq" sometimes means compressed sequence. It should be understood as differnet thing as composite in the source code.


Function Documentation

void compress_table ( s3ssid_t uncomp_tab,
s3ssid_t com_tab,
s3cipid_t ci_map,
int32  n_ci 
)

Compress this map

References BAD_S3CIPID, and BAD_S3SSID.

dict2pid_t* dict2pid_build ( mdef_t mdef,
dict_t dict,
int32  is_composite,
logmath_t *  logmath 
)

Build the dict2pid structure for the given model/dictionary

This segments of code take care of the initialization of internal[0] and ldiph[b][r][l]

This part will take care of the initialization of internal[pronlen-1] and rdiph[b][l][r]. Notice that this is symmetric to the first part of the code.

Parameters:
mdef A model definition
dict An initialized dictionary
is_composite Whether composite triphones will be built

References BAD_S3SENID, BAD_S3SSID, dict2pid_t::comsseq, dict2pid_t::comstate, dict2pid_t::comwt, dict_pron, dict_pronlen, dict_size, dict_wordstr, dict2pid_t::internal, dict2pid_t::is_composite, IS_S3SENID, dict2pid_t::ldiph_lc, logs3(), dict2pid_t::lrdiph_rc, dict2pid_t::lrssid, mdef_n_ciphone, mdef_phone_id_nearest(), mdef_pid2ssid, dict2pid_t::n_ci, mdef_t::n_ciphone, dict2pid_t::n_comsseq, dict2pid_t::n_comstate, dict2pid_t::n_dictsize, mdef_t::n_emit_state, NOT_S3SSID, dict2pid_t::rdiph_rc, dict2pid_t::rssid, dict2pid_t::single_lc, WORD_POSN_BEGIN, WORD_POSN_INTERNAL, and WORD_POSN_SINGLE.

void dict2pid_comsenscr ( dict2pid_t d2p,
int32 *  senscr,
int32 *  comsenscr 
)

Populate composite senone score array.

The composite senone score is the maximum of its component senones' scores, scaled down by the number of component senones.

Parameters:
d2p In: a dict2pid_t structure
senscr In: Ordinary senone scores
comsenscr Out: Composite senone scores

References dict2pid_t::comstate, dict2pid_t::comwt, dict2pid_t::n_comstate, and NOT_S3SENID.

void dict2pid_comsseq2sen_active ( dict2pid_t d2p,
mdef_t mdef,
uint8 *  comssid,
uint8 *  sen 
)

Mark senones active based on a set of active composite senones.

Parameters:
d2p In: a dict2pid_t structure
mdef In: a mdef_t structure
comssid In: Active flag for each comssid
sen In/Out: Active flags set for senones indicated by the active comssid

References dict2pid_t::comsseq, dict2pid_t::comstate, IS_S3SENID, mdef_n_emit_state, and dict2pid_t::n_comsseq.

void dict2pid_dump ( FILE *  fp,
dict2pid_t d2p,
mdef_t mdef,
dict_t dict 
)
void dict2pid_free ( dict2pid_t d2p  ) 
s3cipid_t* dict2pid_get_rcmap ( dict2pid_t d2p,
s3wid_t  w,
dict_t dict 
)

Get RC map

Parameters:
d2p In: a dict2pid
w In: a wid
dict In: a dictionary

References xwdssid_t::cimap, dictword_t::ciphone, dict2pid_t::lrssid, dictword_t::pronlen, dict2pid_t::rssid, and dict_t::word.

void dict2pid_report ( dict2pid_t d2p  ) 

Report a dict2pid data structure

Parameters:
d2p In: a dict2pid_t structure

References dict2pid_t::is_composite, dict2pid_t::n_comsseq, and dict2pid_t::n_comstate.

int32 get_rc_nssid ( dict2pid_t d2p,
s3wid_t  w,
dict_t dict 
)

ARCHAN, A duplicate of get_rc_npid in ctxt_table.h. I doubt whether it is correct because the compressed map has not been checked.

Parameters:
d2p In: a dict2pid
w In: a wid
dict In: a dictionary

References dictword_t::ciphone, dict2pid_t::lrssid, xwdssid_t::n_ssid, dictword_t::pronlen, dict2pid_t::rssid, and dict_t::word.


Generated on 7 Mar 2010 by  doxygen 1.6.1