SPRAAK
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
HMM Files
Contents

The parameters describing an HMM, i.e. the transition and observation probabilities, are stored in a set of files.

The parameters for the observation probabilities are organized in two layers:

As SPRAAK by default shares all basis functions over all states, the weight matrix tends to be very sparse (i.e. most weights are '0'). In order to accomodate a flexible sparse weight matrix, the full information is stored in 3 separate files (typically with the same basename):

Obviously the above data concept easily accomodates commonly used extremes of tying:

However, we may point out here that while SPRAAK will function correctly for all types of tying, there are a number of (computational) optimizations from the viewpoint of a tied system, which may not work as efficiently for an untied system.

Keys

Many of the keys are identical for the three types of files:

Data

The MVGAUSS file contains one vector for each gaussian containing:

<COUNT>  <MEANS> <SIGMA's>

The HMM file contains for each unique state a variable length vector with following information:

<K> <COUNT> <UNDEF> <TR_PROB_0> <TR_PROB_1> <WGHT_0> <WGHT_1> ... <WGHT_K-1>

The SELECT file contains the indices of the gaussians for the weights in a .hmm file.

<K> <INDX_0> <INDX_1> <INDX_2> ...

Note that:

Example

The example files, of which small parts are printed, constitute a moderately complex model with

.spr
DATA            MVGAUSS
TYPE            F32
LAYOUT          MATRIX
DIM1            10365
DIM2            79
VLEN            39
NMVG            10365
EXTENDED        PARAMSET
#
165.852 1.39298 -4.01403 -0.498516 2.56224 -1.63849 ...
136.745 0.387589 -2.55462 0.00217978 3.6786 -2.0045 ...
251.085 -0.175839 -1.89165 -0.048543 3.61929 ...
...
[File:  acmod.mvg]
.spr
DATA            HMM
DENSTYPE        SC_HMM
TYPE            F32
LAYOUT          MATRIX
DIM1            71440
DIM2            1
NSTATE          576
NMVG            10365
NUNIT           2131
UNIT_FILE       acmod.arcd
MVG_FILE        acmod.mvg
SELECT_FILE     acmod.sel
#
183.0 5237.0 0.0 -0.720823 -0.0916143 -1.23773 -1.31281 -1.34646 -1.43873 -1.41509 -1.402 ...
65.0 2179.0 0.0 -0.980322 -0.048 -1.01605 -1.05985 -1.03075 -1.07108 -1.0951 -1.11228 ..
189.0 4746.0 0.0 -0.612619 -0.121475 -1.32614 -1.32412 -1.38805 -1.44201 ...
...
[File:  acmod.hmm]
.spr
DATA            SELECT
DENSTYPE        SC_HMM
TOTAL_MIXDIM    68560
TYPE            U16
DIM1            69136
DIM2            1
NSTATE          576
NMVG            10365
#
183 15 19 6 12 17 7 2 14 20 11 25 ...  9385 3057 9384 83 4070
65 36 30 33 35 29 32 ...  9 170 1720 141 7538 212 37 379
189 54 47 52 53 45 40 ...
...
[File:  acmod.sel]
Tools

A whole set of tools is available for initialization, estimation and modification of HMM parameters.

HMM parameter estimation tools:

Postprocessing tools:

A separate tool is provide to convert HTK files to the SPRAAK format in spr_htk2key.c

Internal Data Structures

The above files are close mappings of the data structures used in the Acoustic Model Object.

Bugs and Limitations
  1. Observation Probabilities The fileformats are not limited to the storage of a mixture of gaussians and can easily accomodate other types of basis functions or mixing paradigms.
    • However, the functionality of the programs working with these files has only been extensively tested for sparse mixtures of gaussians.
    • Discrete density models and all related programs and program options are provided 'as is'.
    These worked fine in older versions of the HMM package but were not rigorously tested on a recent version of SPRAAK.
  2. Topologies The HMM system was originally developed to support a number of different topologies, including LEFT_TO_RIGHT, BAKIS, FENONIC (include null arcs), .. This is reflected in the keys TOPOLOGY (which topology) and TPDIM (number of parameters required to describe the transition probabilities) required to describe the transition probabilities). However, in the current version only the LEFT_TO_RIGHT topology is guaranteed to function as expected.