mdef.h File Reference

Model definition. More...

`#include <stdio.h>`
`#include <sphinxbase/hash_table.h>`

Go to the source code of this file.

## Data Structures

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
| The main model definition structure. More...

## Macros

#define | N_WORD_POSN 4
| total # of word positions (excluding undefined)
#define | WPOS_NAME "ibesu"
| Printable code for each word position above.
#define | S3_SILENCE_CIPHONE "SIL"
| Hard-coded silence CI phone name.
#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)
#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

mdef_t * | mdef_init (char *mdeffile, int breport)
| Initialize the phone structure from the given model definition file. More...
int | mdef_ciphone_id (mdef_t *m, char *ciphone)
| Get the ciphone id given a string name. More...
const char * | mdef_ciphone_str (mdef_t *m, int ci)
| Get the phone string given the ci phone id. More...
int | mdef_is_ciphone (mdef_t *m, int p)
| Decide whether the phone is ci phone. More...
int | mdef_is_cisenone (mdef_t *m, int s)
| Decide whether the senone is a senone for a ci phone, or a ci senone. More...
int | mdef_phone_id (mdef_t *m, int b, int l, int r, word_posn_t pos)
| Decide the phone id given the left, right and base phones. More...
int | mdef_phone_str (mdef_t *m, int pid, char *buf)
| Create a phone string for the given phone (base or triphone) id in the given buf. More...
int | mdef_hmm_cmp (mdef_t *m, int p1, int p2)
| Compare the underlying HMMs for two given phones (i.e., compare the two transition matrix IDs and the individual state(senone) IDs). More...
void | mdef_report (mdef_t *m)
| Report the model definition's parameters. More...
void | mdef_free_recursive_lc (ph_lc_t *lc)
| RAH, For freeing memory. More...
void | mdef_free_recursive_rc (ph_rc_t *rc)
void | mdef_free (mdef_t *mdef)
| Free an mdef_t. More...

## Detailed Description

Model definition.

Definition in file mdef.h.

## Enumeration Type Documentation

## word_posn_t

enum word_posn_t

Union of different type of word position.

Enumerator
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.

Definition at line 72 of file mdef.h.

## Function Documentation

## mdef_ciphone_id()

int mdef_ciphone_id | ( | mdef_t * | m,
|  | 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

Definition at line 176 of file mdef.c.

References mdef_t::ciphone_ht.

## mdef_ciphone_str()

const char* mdef_ciphone_str | ( | mdef_t * | m,
|  | int | 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

Definition at line 186 of file mdef.c.

References mdef_t::ciphone, and ciphone_t::name.

Referenced by mdef_phone_str().

## mdef_free()

void mdef_free | ( | mdef_t * | mdef | ) |

Free an mdef_t.

Parameters

  mdef | In : The model definition

Definition at line 720 of file mdef.c.

References mdef_t::cd2cisen, mdef_t::ciphone, mdef_t::ciphone_ht, mdef_free_recursive_lc(), mdef_free_recursive_rc(), mdef_t::n_ciphone, N_WORD_POSN, ciphone_t::name, mdef_t::phone, mdef_t::sen2cimap, mdef_t::sseq, and mdef_t::wpos_ci_lclist.

Referenced by bin_mdef_read_text().

## mdef_free_recursive_lc()

void mdef_free_recursive_lc | ( | ph_lc_t * | lc | ) |

RAH, For freeing memory.

Parameters

  lc | In: A list of left context

Definition at line 688 of file mdef.c.

References mdef_free_recursive_rc().

Referenced by mdef_free().

## mdef_free_recursive_rc()

void mdef_free_recursive_rc | ( | ph_rc_t * | rc | ) |

Parameters

  rc | In: A list of right context

Definition at line 703 of file mdef.c.

Referenced by mdef_free(), and mdef_free_recursive_lc().

## mdef_hmm_cmp()

int mdef_hmm_cmp | ( | mdef_t * | m,
|  | int | p1,
|  | int | 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

## mdef_init()

mdef_t* mdef_init | ( | char * | mdeffile,
|  | int | 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

Referenced by bin_mdef_read_text().

## mdef_is_ciphone()

int mdef_is_ciphone | ( | mdef_t * | m,
|  | int | 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

Definition at line 251 of file mdef.c.

## mdef_is_cisenone()

int mdef_is_cisenone | ( | mdef_t * | m,
|  | int | 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

Definition at line 260 of file mdef.c.

References mdef_t::cd2cisen, and mdef_t::n_sen.

## mdef_phone_id()

int mdef_phone_id | ( | mdef_t * | m,
|  | int | b,
|  | int | l,
|  | int | 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

Definition at line 219 of file mdef.c.

References mdef_t::ciphone, ciphone_t::filler, N_WORD_POSN, mdef_t::sil, and mdef_t::wpos_ci_lclist.

## mdef_phone_str()

int mdef_phone_str | ( | mdef_t * | m,
|  | int | 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

Definition at line 196 of file mdef.c.

References mdef_ciphone_str(), mdef_t::phone, phone_t::rc, phone_t::wpos, and WPOS_NAME.

## mdef_report()

void mdef_report | ( | mdef_t * | m | ) |

Report the model definition's parameters.

Parameters

  m | In: model definition structure

Definition at line 665 of file mdef.c.

References mdef_t::n_ci_sen, mdef_t::n_ciphone, mdef_t::n_emit_state, mdef_t::n_phone, mdef_t::n_sen, and mdef_t::n_sseq.