int ndim = 31;
float eps = 0.2;
string SOURCEKIND = USER;

# "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 = 4* smack:+ | 4* quiet:+:m=mquiet$p ;
macro s2 = 5* breath:+ | 5* quiet:+:m=mquiet$p ;
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 zsil = silence:+ ;
phone zshortsil = 1* misc:+ | 2* omisc:+ | 3* oomisc:+ ;

macro sonorant = 3* semiclosure:+ ;
macro stop = 4* stop_sequence:+ ;
macro voiced_fricative = 3* v_frication:+ ;
macro unvoiced_fricative = 2* unv_frication:+ ;
macro c = stop | voiced_fricative | unvoiced_fricative | sonorant ;
phone zc = c ;
phones zm = c ;


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

macro junk = 2* junks:+ ;
phones zjunk = junk;
