int ndim = 26;
float eps = 0.2;
string SOURCEKIND = MFCC_E_D;

# "Silence" is defined as a cough, a breath, a lip smack, or quiet.
# This chunk is at least 50ms long (the "+" signs mean that the states
# loop back to themselves, and can therefore be as long as desired).
# Of course, there is nothing that enforces that the states labelled "cough"
# are actually coughs.   It's really just four different kinds of silence.
macro s1 = 3* smack:+:v=quiet:m=$s$i | 3* quiet:+:v=vquiet:m=mquiet ;
macro s2 = 4* breath:+:v=quiet | 4* quiet:+:v=vquiet:m=mquiet ;
macro silence = s1 s2 s1 ;
# All the "v=", "m=", and "s=" stuff involves sharing of variances,
# means, or entire state definitions.     For instance, all the "cough"
# states share a comon variance.    All the "cough0" states share a
# common mean, so they will be the same whether the "silence" macro
# is an initial silence or a silence within an IWS.

# So, a "S" phoneme can include multiple coughs, breaths, quiet, etc.
# We require two silences so that the total duration is >100ms,
# which is what differentiates an audible pause from a stop.
phone S = silence:+ ;

macro sonorant = 3* semiclosure:+:v=C ;
macro stop = 3* stop_sequence:+:v=C ;
macro voiced_fricative = 3* v_frication:+:v=C ;
macro unvoiced_fricative = 3* unv_frication:+:v=C ;
macro c = stop | voiced_fricative | unvoiced_fricative | sonorant ;
phone C = c ;


# Here we have 5 vowels, all sharing the same variance, but each with
# their own mean acoustic properties. 
macro v = 3* v1:+:v=V:m=$s$i | 3* v2:+:v=V:m=$s$i | 3* v3:+:v=V:m=$s$i | 3* v4:+:v=V:m=$s$i |
		3* v5:+:v=V:m=$s$i | 3* v6:+:v=V:m=$s$i ;
macro thong1 = 2* v1:+:v=V:m=$s$i | 2* v2:+:v=V:m=$s$i | 2* v3:+:v=V:m=$s$i | 2* v4:+:v=V:m=$s$i |
		2* v5:+:v=V:m=$s$i | 2* v6:+:v=V:m=$s$i ;
macro thong2 = 2* v1:+:v=V:m=$s$I | 2* v2:+:v=V:m=$s$I | 2* v3:+:v=V:m=$s$I | 2* v4:+:v=V:m=$s$I |
		2* v5:+:v=V:m=$s$I | 2* v6:+:v=V:m=$s$I ;
phone V = v | thong1 thong2 ;
