Model definition. More...
#include <stdio.h>
#include <hash_table.h>
#include "s3types.h"
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 |
Get the ciphone id given a string name
m | In: Model structure being queried | |
ciphone | In: ciphone for which id wanted |
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().
void mdef_dump | ( | FILE * | fp, | |
mdef_t * | m | |||
) |
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 |
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 |
Decide whether the phone is ci phone.
m | In: Model structure being queried | |
p | In: triphone id being queried |
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().
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 |