int ndim = 39;
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 = 3* smack:+:v=quiet3:m=$s$i | 3* quiet3:+:v=vquiet3:m=$s$i ;
macro s2 = 4* breath:+:v=quiet4:m=$s$i | 4* quiet4:+:v=vquiet4:m=$s$i ;
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:+ ;
phones zshortsil = s1 | s2;

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

macro fourstate = 4* xx:+:v=V4$p ;
macro fourstate_fr = 4* xx:+ ;
macro threestate = 3* xx:+:v=V3$p ;
macro threestate_fr = 3* xx:+ ;
macro twostate = 2* xx:+:v=V2$p ;

phones zqq|zq3_3a_qu = threestate | twostate ;
phones zz|zaqi|zg|zh = fourstate | threestate_fr | twostate ;
phones zt|zp|zk = fourstate_fr | threestate_fr | twostate ;
phones [a-z][a-z0-9_]* = fourstate | threestate | twostate ;
