[FeatureSet fs] setDesc   @../step2/featDesc
            fs  setAccess @../step2/featAccess

[CodebookSet cbs fs]                read ../step2/codebookSet
[DistribSet  dss cbs]               read ../step2/distribSet
[PhonesSet ps]                      read ../step2/phonesSet
[Tags tags]                         read ../step2/tags
[Tree dst ps:phones ps tags dss]    read ../step2/distribTree

SenoneSet sns [DistribStream str dss dst]

[TmSet tms]                         read ../step2/transitionModels
[TopoSet tps sns tms]               read ../step2/topologies
[Tree tpt ps:phones ps tags tps]    read ../step2/topologyTree

cbs load ../step3/codebookWeights

[DBase db] open ../step1/db.dat ../step1/db.idx -mode r

Dictionary dict ps:phones tags
catch { dict read ../step1/convertedDict } msg

AModelSet amo tpt ROOT
HMM hmm dict amo
Path path

proc viterbi utt {
  set uttInfo [db get $utt]
  makeArray arr $uttInfo
  hmm make $arr(text) -optWord SIL
  path viterbi hmm -eval $uttInfo
}

catch { mkdir labels }

foreach utt [db] {
  puts  "$utt [viterbi $utt]"
  path bsave labels/$utt
}

exit