libsent/src/hmminfo/write_binhmm.c File Reference

Write a binary HMM definition to a file. More...

#include <sent/stddefs.h>
#include <sent/htk_param.h>
#include <sent/htk_hmm.h>
#include <sent/mfcc.h>

Go to the source code of this file.

Defines

#define wrt(A, B, C, D)   if (wrtfunc(A,B,C,D) == FALSE) return FALSE
#define wrt_str(A, B)   if (wrt_strfunc(A,B) == FALSE) return FALSE

Functions

static boolean wrtfunc (FILE *fp, void *buf, size_t unitbyte, size_t unitnum)
 Binary write function with byte swap (assume file is BIG ENDIAN).
static boolean wrt_strfunc (FILE *fp, char *str)
 Write a string, teminating at NULL.
static boolean wt_header (FILE *fp, boolean emp, boolean inv, boolean mpdfmacro)
 Write header string as binary HMM file (ver.
static boolean wt_para (FILE *fp, Value *para)
 Write acoustic analysis configration parameters into header of binary HMM.
static boolean wt_opt (FILE *fp, HTK_HMM_Options *opt)
 Write HMM option specifications.
static boolean wt_type (FILE *fp, HTK_HMM_INFO *hmm)
 Write HMM type of mixture tying.
static int qsort_tr_index (HTK_HMM_Trans **t1, HTK_HMM_Trans **t2)
 qsort callback function to sort transition pointers by their address for indexing.
static boolean wt_trans (FILE *fp, HTK_HMM_INFO *hmm)
 Write all transition matrix data.
static unsigned int search_trid (HTK_HMM_Trans *t)
 Binary search function to convert transition matrix pointer to a scholar ID.
static int qsort_vr_index (HTK_HMM_Var **v1, HTK_HMM_Var **v2)
 qsort callback function to sort variance pointers by their address for indexing.
static boolean wt_var (FILE *fp, HTK_HMM_INFO *hmm)
 Write all variance data.
static unsigned int search_vid (HTK_HMM_Var *v)
 Binary search function to convert variance pointer to a scholar ID.
static int qsort_dens_index (HTK_HMM_Dens **d1, HTK_HMM_Dens **d2)
 qsort callback function to sort density pointers by their address for indexing.
static boolean wt_dens (FILE *fp, HTK_HMM_INFO *hmm)
 Write all mixture density data.
static unsigned int search_did (HTK_HMM_Dens *d)
 Binary search function to convert density pointer to a scholar ID.
static int qsort_streamweight_index (HTK_HMM_StreamWeight **d1, HTK_HMM_StreamWeight **d2)
 qsort callback function to sort stream weight pointers by their address for indexing.
static boolean wt_streamweight (FILE *fp, HTK_HMM_INFO *hmm)
 Write all stream weight data.
static unsigned int search_swid (HTK_HMM_StreamWeight *sw)
 Binary search function to convert stream weight pointer to a scholar ID.
static void tmix_list_callback (void *p)
 Traverse callback function to store pointers in tm_index.
static int qsort_tm_index (GCODEBOOK **tm1, GCODEBOOK **tm2)
 qsort callback function to sort density pointers by their address for indexing.
static boolean wt_tmix (FILE *fp, HTK_HMM_INFO *hmm)
 Write all codebook data.
static unsigned int search_tmid (GCODEBOOK *tm)
 Binary search function to convert codebook pointer to a scholar ID.
static int qsort_mpdf_index (HTK_HMM_PDF **d1, HTK_HMM_PDF **d2)
 qsort callback function to sort mixture PDF pointers by their address for indexing.
static boolean wt_pdf_sub (FILE *fp, HTK_HMM_INFO *hmm, HTK_HMM_PDF *m)
 Write a mixture PDF.
static boolean wt_mpdf (FILE *fp, HTK_HMM_INFO *hmm)
 Write all mixture pdf data.
static unsigned int search_mpdfid (HTK_HMM_PDF *m)
 Binary search function to convert mixture pdf pointer to a scholar ID.
static int qsort_st_index (HTK_HMM_State **s1, HTK_HMM_State **s2)
 qsort callback function to sort state pointers by their address for indexing.
static boolean wt_state (FILE *fp, HTK_HMM_INFO *hmm, boolean mpdf_macro)
 Write all state data.
static unsigned int search_stid (HTK_HMM_State *s)
 Binary search function to convert state pointer to a scholar ID.
static boolean wt_data (FILE *fp, HTK_HMM_INFO *hmm)
 Write all model data.
boolean write_binhmm (FILE *fp, HTK_HMM_INFO *hmm, Value *para)
 Top function to write HMM definition data to a binary file.

Variables

static char * binhmm_header_v2 = BINHMM_HEADER_V2
 Header string for V2.
static HTK_HMM_Trans ** tr_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int tr_num
 Length of above.
static HTK_HMM_Var ** vr_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int vr_num
 Length of above.
static HTK_HMM_Dens ** dens_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int dens_num
 Length of above.
static HTK_HMM_StreamWeight ** streamweight_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int streamweight_num
 Length of above.
static GCODEBOOK ** tm_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int tm_num
 Length of above.
static unsigned int tm_idx
 Current index.
static HTK_HMM_PDF ** mpdf_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int mpdf_num
 Length of above.
static HTK_HMM_State ** st_index
 Sorted data pointers for mapping from pointer to id.
static unsigned int st_num
 Length of above.


Detailed Description

Write a binary HMM definition to a file.

Julius supports a binary format of HMM definition file. The tool "mkbinhmm" can convert the ascii format HTK HMM definition file to this format. Please note that this binary format is not compatible with the HTK binary format.

Author:
Akinobu LEE
Date:
Wed Feb 16 06:03:36 2005
Revision
1.4

Definition in file write_binhmm.c.


Function Documentation

static boolean wrtfunc ( FILE *  fp,
void *  buf,
size_t  unitbyte,
size_t  unitnum 
) [static]

Binary write function with byte swap (assume file is BIG ENDIAN).

Parameters:
fp [in] file pointer
buf [in] data to write
unitbyte [in] size of a unit in bytes
unitnum [in] number of unit to write

Definition at line 54 of file write_binhmm.c.

Referenced by wrt_strfunc().

static boolean wrt_strfunc ( FILE *  fp,
char *  str 
) [static]

Write a string, teminating at NULL.

Parameters:
fp [in] file pointer
str [in] string to write

Definition at line 83 of file write_binhmm.c.

static boolean wt_header ( FILE *  fp,
boolean  emp,
boolean  inv,
boolean  mpdfmacro 
) [static]

Write header string as binary HMM file (ver.

2)

Parameters:
fp [in] file pointer
emp [in] TRUE if parameter embedded
inv [in] TRUE if variances are inversed
mpdfmacro [in] TRUE if some mixture pdfs are defined as macro

Definition at line 108 of file write_binhmm.c.

Referenced by write_binhmm().

static boolean wt_para ( FILE *  fp,
Value para 
) [static]

Write acoustic analysis configration parameters into header of binary HMM.

Parameters:
fp [in] file pointer
para [in] acoustic analysis configration parameters

Definition at line 142 of file write_binhmm.c.

Referenced by write_binhmm().

static boolean wt_opt ( FILE *  fp,
HTK_HMM_Options opt 
) [static]

Write HMM option specifications.

Parameters:
fp [in] file pointer
opt [out] pointer to the HMM option structure that holds the values.

Definition at line 178 of file write_binhmm.c.

Referenced by write_binhmm().

static boolean wt_type ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write HMM type of mixture tying.

Parameters:
fp [in] file pointer
hmm [out] pointer to the writing HMM definition data

Definition at line 196 of file write_binhmm.c.

Referenced by write_binhmm().

static int qsort_tr_index ( HTK_HMM_Trans **  t1,
HTK_HMM_Trans **  t2 
) [static]

qsort callback function to sort transition pointers by their address for indexing.

Parameters:
t1 [in] data 1
t2 [in] data 2
Returns:
value required for qsort.

Definition at line 218 of file write_binhmm.c.

Referenced by wt_trans().

static boolean wt_trans ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all transition matrix data.

The pointers of all transition matrixes are first gathered, sorted by the address. Then the transition matrix data are written by the sorted order. The index will be used later to convert any pointer reference to a transition matrix into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 237 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_trid ( HTK_HMM_Trans t  )  [static]

Binary search function to convert transition matrix pointer to a scholar ID.

Parameters:
t [in] pointer to a transition matrix
Returns:
the corresponding scholar ID.

Definition at line 273 of file write_binhmm.c.

static int qsort_vr_index ( HTK_HMM_Var **  v1,
HTK_HMM_Var **  v2 
) [static]

qsort callback function to sort variance pointers by their address for indexing.

Parameters:
v1 [in] data 1
v2 [in] data 2
Returns:
value required for qsort.

Definition at line 305 of file write_binhmm.c.

Referenced by wt_var().

static boolean wt_var ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all variance data.

The pointers of all variance vectors are first gathered, sorted by the address. Then the variance vectors are written by the sorted order. The index will be used later to convert any pointer reference to a variance vector into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 324 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_vid ( HTK_HMM_Var v  )  [static]

Binary search function to convert variance pointer to a scholar ID.

Parameters:
v [in] pointer to a variance data
Returns:
the corresponding scholar ID.

Definition at line 356 of file write_binhmm.c.

Referenced by wt_dens().

static int qsort_dens_index ( HTK_HMM_Dens **  d1,
HTK_HMM_Dens **  d2 
) [static]

qsort callback function to sort density pointers by their address for indexing.

Parameters:
d1 [in] data 1
d2 [in] data 2
Returns:
value required for qsort.

Definition at line 388 of file write_binhmm.c.

Referenced by wt_dens().

static boolean wt_dens ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all mixture density data.

The pointers of all mixture densities are first gathered, sorted by the address. Then the densities are written by the sorted order. The pointers to the lower structure (variance etc.) in the data are written in a corresponding scholar id. The pointer index of this data will be used later to convert any pointer reference to a density data into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 409 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_did ( HTK_HMM_Dens d  )  [static]

Binary search function to convert density pointer to a scholar ID.

Parameters:
d [in] pointer to a mixture density
Returns:
the corresponding scholar ID.

Definition at line 449 of file write_binhmm.c.

Referenced by wt_pdf_sub(), and wt_tmix().

static int qsort_streamweight_index ( HTK_HMM_StreamWeight **  d1,
HTK_HMM_StreamWeight **  d2 
) [static]

qsort callback function to sort stream weight pointers by their address for indexing.

Parameters:
d1 [in] data 1
d2 [in] data 2
Returns:
value required for qsort.

Definition at line 480 of file write_binhmm.c.

Referenced by wt_streamweight().

static boolean wt_streamweight ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all stream weight data.

The pointers of all stream weights are first gathered, sorted by the address. Then the stream weights are written by the sorted order. The pointers to the lower structure (variance etc.) in the data are written in a corresponding scholar id. The pointer index of this data will be used later to convert any pointer reference to a data into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 501 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_swid ( HTK_HMM_StreamWeight sw  )  [static]

Binary search function to convert stream weight pointer to a scholar ID.

Parameters:
d [in] pointer to a mixture density
Returns:
the corresponding scholar ID.

Definition at line 533 of file write_binhmm.c.

static void tmix_list_callback ( void *  p  )  [static]

Traverse callback function to store pointers in tm_index.

Parameters:
p [in] pointer to the codebook data

Definition at line 562 of file write_binhmm.c.

Referenced by wt_tmix().

static int qsort_tm_index ( GCODEBOOK **  tm1,
GCODEBOOK **  tm2 
) [static]

qsort callback function to sort density pointers by their address for indexing.

Parameters:
tm1 [in] data 1
tm2 [in] data 2
Returns:
value required for qsort.

Definition at line 579 of file write_binhmm.c.

Referenced by wt_tmix().

static boolean wt_tmix ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all codebook data.

The pointers of all codebook densities are first gathered, sorted by the address. Then the densities are written by the sorted order. The pointers to the lower structure (mixture etc.) in the data are written by the corresponding scholar id. The pointer index of this data will be used later to convert any pointer reference to a codebook into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 600 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_tmid ( GCODEBOOK tm  )  [static]

Binary search function to convert codebook pointer to a scholar ID.

Parameters:
tm [in] pointer to a codebook
Returns:
the corresponding scholar ID.

Definition at line 645 of file write_binhmm.c.

Referenced by wt_pdf_sub().

static int qsort_mpdf_index ( HTK_HMM_PDF **  d1,
HTK_HMM_PDF **  d2 
) [static]

qsort callback function to sort mixture PDF pointers by their address for indexing.

Parameters:
d1 [in] data 1
d2 [in] data 2
Returns:
value required for qsort.

Definition at line 677 of file write_binhmm.c.

Referenced by wt_mpdf().

static boolean wt_pdf_sub ( FILE *  fp,
HTK_HMM_INFO hmm,
HTK_HMM_PDF m 
) [static]

Write a mixture PDF.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data
m [out] mixture PDF to be written
Returns:
TRUE on success, FALSE on error.

Definition at line 695 of file write_binhmm.c.

Referenced by wt_mpdf(), and wt_state().

static boolean wt_mpdf ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all mixture pdf data.

The pointers of all mixture pdfs are first gathered, sorted by the address. Then the mixture pdfs are written by the sorted order. The pointers to the lower structure (variance etc.) in the data are written in a corresponding scholar id. The pointer index of this data will be used later to convert any pointer reference to a data into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 759 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_mpdfid ( HTK_HMM_PDF m  )  [static]

Binary search function to convert mixture pdf pointer to a scholar ID.

Parameters:
m [in] pointer to a mixture pdf
Returns:
the corresponding scholar ID.

Definition at line 792 of file write_binhmm.c.

Referenced by wt_state().

static int qsort_st_index ( HTK_HMM_State **  s1,
HTK_HMM_State **  s2 
) [static]

qsort callback function to sort state pointers by their address for indexing.

Parameters:
s1 [in] data 1
s2 [in] data 2
Returns:
value required for qsort.

Definition at line 824 of file write_binhmm.c.

Referenced by wt_state().

static boolean wt_state ( FILE *  fp,
HTK_HMM_INFO hmm,
boolean  mpdf_macro 
) [static]

Write all state data.

The pointers of all states are first gathered, sorted by the address. Then the state informations are written by the sorted order. The pointers to the lower structure (mixture etc.) in the data are written in a corresponding scholar id. The pointer index of this data will be used later to convert any pointer reference to a state data into scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data
mpdf_macro [in] TRUE if mixture PDFs are already read as separated definitions

Definition at line 846 of file write_binhmm.c.

Referenced by write_binhmm().

static unsigned int search_stid ( HTK_HMM_State s  )  [static]

Binary search function to convert state pointer to a scholar ID.

Parameters:
s [in] pointer to a state
Returns:
the corresponding scholar ID.

Definition at line 913 of file write_binhmm.c.

Referenced by wt_data().

static boolean wt_data ( FILE *  fp,
HTK_HMM_INFO hmm 
) [static]

Write all model data.

The data of all models are written. The order is not important at this top level, since there are no reference to this data. The pointers to the lower structure (states, transitions, etc.) in the data are written by the corresponding scholar id.

Parameters:
fp [in] file pointer
hmm [in] writing HMM definition data

Definition at line 943 of file write_binhmm.c.

Referenced by write_binhmm().

boolean write_binhmm ( FILE *  fp,
HTK_HMM_INFO hmm,
Value para 
)

Top function to write HMM definition data to a binary file.

Parameters:
fp [in] file pointer
hmm [in] HMM definition structure to be written
para [in] acoustic analysis parameter, or NULL if not available
Returns:
TRUE on success, FALSE on failure.

Definition at line 992 of file write_binhmm.c.


Generated on Thu Jul 23 12:14:19 2009 for Julius by  doxygen 1.5.1