Model definition. More...
Go to the source code of this file.
Classes | |
| struct | ciphone_t |
| CI phone information. More... | |
| struct | phone_t |
| Triphone information, including base phones as a subset. For the latter, lc, rc and wpos are non-existent. More... | |
| struct | ph_rc_s |
| struct | ph_lc_s |
| struct | mdef_t |
| strcture for storing the model definition. More... | |
Defines | |
| #define | N_WORD_POSN 4 |
| #define | WPOS_NAME "ibesu" |
| #define | S3_SILENCE_CIPHONE "SIL" |
| #define | mdef_is_fillerphone(m, p) ((m)->ciphone[p].filler) |
| #define | mdef_n_ciphone(m) ((m)->n_ciphone) |
| #define | mdef_n_phone(m) ((m)->n_phone) |
| #define | mdef_n_sseq(m) ((m)->n_sseq) |
| #define | mdef_n_emit_state(m) ((m)->n_emit_state) |
| #define | mdef_n_sen(m) ((m)->n_sen) |
| #define | mdef_n_tmat(m) ((m)->n_tmat) |
| #define | mdef_pid2ssid(m, p) ((m)->phone[p].ssid) |
| #define | mdef_pid2tmatid(m, p) ((m)->phone[p].tmat) |
| #define | mdef_silphone(m) ((m)->sil) |
| #define | mdef_sen2cimap(m) ((m)->sen2cimap) |
| #define | mdef_sseq2sen(m, ss, pos) ((m)->sseq[ss][pos]) |
| #define | mdef_pid2ci(m, p) ((m)->phone[p].ci) |
| #define | mdef_cd2cisen(m) ((m)->cd2cisen) |
Typedefs | |
| typedef struct ph_rc_s | ph_rc_t |
| typedef struct ph_lc_s | ph_lc_t |
Enumerations | |
| enum | word_posn_t { WORD_POSN_INTERNAL = 0, WORD_POSN_BEGIN = 1, WORD_POSN_END = 2, WORD_POSN_SINGLE = 3, WORD_POSN_UNDEFINED = 4 } |
| Union of different type of word position. More... | |
Functions | |
| S3DECODER_EXPORT mdef_t * | mdef_init (const char *mdeffile, int32 breport) |
| s3cipid_t | mdef_ciphone_id (mdef_t *m, const char *ciphone) |
| S3DECODER_EXPORT const char * | mdef_ciphone_str (mdef_t *m, s3cipid_t ci) |
| int32 | mdef_is_ciphone (mdef_t *m, s3pid_t p) |
| int32 | mdef_is_cisenone (mdef_t *m, s3senid_t s) |
| S3DECODER_EXPORT s3pid_t | mdef_phone_id (mdef_t *m, s3cipid_t b, s3cipid_t l, s3cipid_t r, word_posn_t pos) |
| S3DECODER_EXPORT s3pid_t | mdef_phone_id_nearest (mdef_t *m, s3cipid_t b, s3cipid_t l, s3cipid_t r, word_posn_t pos) |
| S3DECODER_EXPORT int32 | mdef_phone_str (mdef_t *m, s3pid_t pid, char *buf) |
| S3DECODER_EXPORT int32 | mdef_phone_components (mdef_t *m, s3pid_t p, s3cipid_t *b, s3cipid_t *l, s3cipid_t *r, word_posn_t *pos) |
| int32 | mdef_hmm_cmp (mdef_t *m, s3pid_t p1, s3pid_t p2) |
| void | mdef_sseq2sen_active (mdef_t *mdef, uint8 *sseq, uint8 *sen) |
| void | mdef_dump (FILE *fp, mdef_t *m) |
| void | mdef_report (mdef_t *m) |
| void | mdef_free_recursive_lc (ph_lc_t *lc) |
| void | mdef_free_recursive_rc (ph_rc_t *rc) |
| S3DECODER_EXPORT void | mdef_free (mdef_t *mdef) |
Model definition.
| #define mdef_cd2cisen | ( | m | ) | ((m)->cd2cisen) |
Referenced by approx_cont_mgau_ci_eval(), and approx_cont_mgau_frame_eval().
| #define mdef_is_fillerphone | ( | m, | |
| p | |||
| ) | ((m)->ciphone[p].filler) |
Access macros; not meant for arbitrary use
| #define mdef_n_ciphone | ( | m | ) | ((m)->n_ciphone) |
Referenced by dict2pid_build(), and dict2pid_dump().
| #define mdef_n_emit_state | ( | m | ) | ((m)->n_emit_state) |
Referenced by dict2pid_comsseq2sen_active(), and dict2pid_dump().
| #define mdef_n_phone | ( | m | ) | ((m)->n_phone) |
| #define mdef_n_sen | ( | m | ) | ((m)->n_sen) |
| #define mdef_n_sseq | ( | m | ) | ((m)->n_sseq) |
| #define mdef_n_tmat | ( | m | ) | ((m)->n_tmat) |
| #define mdef_pid2ci | ( | m, | |
| p | |||
| ) | ((m)->phone[p].ci) |
| #define mdef_pid2ssid | ( | m, | |
| p | |||
| ) | ((m)->phone[p].ssid) |
Referenced by dict2pid_build().
| #define mdef_pid2tmatid | ( | m, | |
| p | |||
| ) | ((m)->phone[p].tmat) |
| #define mdef_sen2cimap | ( | m | ) | ((m)->sen2cimap) |
| #define mdef_silphone | ( | m | ) | ((m)->sil) |
| #define mdef_sseq2sen | ( | m, | |
| ss, | |||
| pos | |||
| ) | ((m)->sseq[ss][pos]) |
| #define N_WORD_POSN 4 |
total # of word positions (excluding undefined)
| #define S3_SILENCE_CIPHONE "SIL" |
Hard-coded silence CI phone name
| #define WPOS_NAME "ibesu" |
Printable code for each word position above
| enum word_posn_t |
| s3cipid_t mdef_ciphone_id | ( | mdef_t * | m, |
| const char * | ciphone | ||
| ) |
Get the ciphone id given a string name
| m | In: Model structure being queried |
| ciphone | In: ciphone for which id wanted |
| S3DECODER_EXPORT const char* mdef_ciphone_str | ( | mdef_t * | m, |
| s3cipid_t | ci | ||
| ) |
Get the phone string given the ci phone id.
| m | In: Model structure being queried |
| ci | In: ciphone id for which name wanted |
Referenced by dict2pid_dump().
For debugging: dump the mdef_t structure out.
| fp | In: a file pointer |
| m | In: a model definition structure |
| S3DECODER_EXPORT void mdef_free | ( | mdef_t * | mdef | ) |
Free an mdef_t
| mdef | In : The model definition |
| void mdef_free_recursive_lc | ( | ph_lc_t * | lc | ) |
RAH, For freeing memory
| lc | In: A list of left context |
| void mdef_free_recursive_rc | ( | ph_rc_t * | rc | ) |
| rc | In: A list of right context |
| int32 mdef_hmm_cmp | ( | mdef_t * | m, |
| s3pid_t | p1, | ||
| s3pid_t | p2 | ||
| ) |
Compare the underlying HMMs for two given phones (i.e., compare the two transition matrix IDs and the individual state(senone) IDs).
| m | In: Model being queried |
| p1 | In: One of the two triphones being compared |
| p2 | In: One of the two triphones being compared |
| S3DECODER_EXPORT mdef_t* mdef_init | ( | const char * | mdeffile, |
| int32 | breport | ||
| ) |
Initialize the phone structure from the given model definition file. It should be treated as a READ-ONLY structure.
| mdeffile | In: Model definition file |
| breport | In: whether to report the progress or not |
| int32 mdef_is_ciphone | ( | mdef_t * | m, |
| s3pid_t | p | ||
| ) |
Decide whether the phone is ci phone.
| m | In: Model structure being queried |
| p | In: triphone id being queried |
| int32 mdef_is_cisenone | ( | mdef_t * | m, |
| s3senid_t | s | ||
| ) |
Decide whether the senone is a senone for a ci phone, or a ci senone
| m | In: Model structure being queried |
| s | In: senone id being queried |
Referenced by approx_cont_mgau_ci_eval(), and approx_cont_mgau_frame_eval().
| S3DECODER_EXPORT int32 mdef_phone_components | ( | mdef_t * | m, |
| s3pid_t | p, | ||
| s3cipid_t * | b, | ||
| s3cipid_t * | l, | ||
| s3cipid_t * | r, | ||
| word_posn_t * | pos | ||
| ) |
Obtain phone components: inverse of mdef_phone_id().
| m | In: Model structure being queried |
| p | In: triphone id being queried |
| b | Out: base ciphone id |
| l | Out: left context ciphone id |
| r | Out: right context ciphone id |
| pos | Out: Word position |
| S3DECODER_EXPORT s3pid_t mdef_phone_id | ( | mdef_t * | m, |
| s3cipid_t | b, | ||
| s3cipid_t | l, | ||
| s3cipid_t | r, | ||
| word_posn_t | pos | ||
| ) |
Decide the phone id given the left, right and base phones.
| m | In: Model structure being queried |
| b | In: base ciphone id |
| l | In: left context ciphone id |
| r | In: right context ciphone id |
| pos | In: Word position |
| S3DECODER_EXPORT s3pid_t mdef_phone_id_nearest | ( | mdef_t * | m, |
| s3cipid_t | b, | ||
| s3cipid_t | l, | ||
| s3cipid_t | r, | ||
| word_posn_t | pos | ||
| ) |
Like phone_id, but backs off to other word positions if exact triphone not found. Also, non-SILENCE_PHONE filler phones back off to SILENCE_PHONE. Ultimately, backs off to base phone id. Thus, it should never return BAD_S3PID.
| m | In: Model structure being queried |
| b | In: base ciphone id |
| l | In: left context ciphone id |
| r | In: right context ciphone id |
| pos | In: Word position |
Referenced by dict2pid_build().
| S3DECODER_EXPORT int32 mdef_phone_str | ( | mdef_t * | m, |
| s3pid_t | pid, | ||
| char * | buf | ||
| ) |
Create a phone string for the given phone (base or triphone) id in the given buf.
| m | In: Model structure being queried |
| pid | In: phone id being queried |
| buf | Out: On return, buf has the string |
| void mdef_report | ( | mdef_t * | m | ) |
Report the model definition's parameters
| m | In: model definition structure |
| void mdef_sseq2sen_active | ( | mdef_t * | mdef, |
| uint8 * | sseq, | ||
| uint8 * | sen | ||
| ) |
From the given array of active senone-sequence flags, mark the corresponding senones that are active. Caller responsible for allocating sen[], and for clearing it, if necessary.
| mdef | In: The model definition |
| sseq | In: sseq[ss] is != 0 iff senone-sequence ID ss is active |
| sen | In/Out: Set sen[s] to non-0 if so indicated by any active senone sequence |
1.7.6.1