Main Page | Class List | Directories | File List | Class Members | File Members

mdef.h File Reference

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 ph_rc_s ph_rc_t
typedef 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_tmdef_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)


Detailed Description

Model definition.


Define Documentation

#define mdef_cd2cisen  )     ((m)->cd2cisen)
 

#define mdef_is_fillerphone m,
 )     ((m)->ciphone[p].filler)
 

Access macros; not meant for arbitrary use

#define mdef_n_ciphone  )     ((m)->n_ciphone)
 

#define mdef_n_emit_state  )     ((m)->n_emit_state)
 

#define mdef_n_phone  )     ((m)->n_phone)
 

#define mdef_n_sen  )     ((m)->n_sen)
 

#define mdef_n_sseq  )     ((m)->n_sseq)
 

#define mdef_n_tmat  )     ((m)->n_tmat)
 

#define mdef_pid2ci m,
 )     ((m)->phone[p].ci)
 

#define mdef_pid2ssid m,
 )     ((m)->phone[p].ssid)
 

#define mdef_pid2tmatid m,
 )     ((m)->phone[p].tmat)
 

#define mdef_sen2cimap  )     ((m)->sen2cimap)
 

#define mdef_silphone  )     ((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


Typedef Documentation

typedef struct ph_lc_s ph_lc_t
 

typedef struct ph_rc_s ph_rc_t
 


Enumeration Type Documentation

enum word_posn_t
 

Union of different type of word position.

Enumeration values:
WORD_POSN_INTERNAL  Internal phone of word
WORD_POSN_BEGIN  Beginning phone of word
WORD_POSN_END  Ending phone of word
WORD_POSN_SINGLE  Single phone word (i.e. begin & end)
WORD_POSN_UNDEFINED  Undefined value, used for initial conditions, etc


Function Documentation

s3cipid_t mdef_ciphone_id mdef_t m,
const char *  ciphone
 

Get the ciphone id given a string name

Returns:
ciphone id for the given ciphone string name
Parameters:
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.

Returns:
: READ-ONLY ciphone string name for the given ciphone id
Parameters:
m  In: Model structure being queried
ci  In: ciphone id for which name wanted

void mdef_dump FILE *  fp,
mdef_t m
 

For debugging: dump the mdef_t structure out.

Parameters:
fp  In: a file pointer
m  In: a model definition structure

S3DECODER_EXPORT void mdef_free mdef_t mdef  ) 
 

Free an mdef_t

Parameters:
mdef  In : The model definition

void mdef_free_recursive_lc ph_lc_t lc  ) 
 

RAH, For freeing memory

Parameters:
lc  In: A list of left context

void mdef_free_recursive_rc ph_rc_t rc  ) 
 

Parameters:
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).

Returns:
0 iff the HMMs are identical, -1 otherwise.
Parameters:
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.

Returns:
pointer to the phone structure created.
Parameters:
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.

Returns:
1 if given triphone argument is a ciphone, 0 if not, -1 if error
Parameters:
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

Returns:
1 if a given senone is a ci senone
Parameters:
m  In: Model structure being queried
s  In: senone id being queried

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().

Returns:
0 if successful, -1 otherwise.
Parameters:
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.

Returns:
: phone id for the given constituents if found, else BAD_S3PID
Parameters:
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.

Parameters:
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 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.

Returns:
0 if successful, -1 if error.
Parameters:
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

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.

Parameters:
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


Generated on Sat Apr 11 00:02:29 2009 by  doxygen 1.3.9.1