But bootstrapping is not the only situation where labels can come handy. Labels are also a quick way to do most kinds of training phases. As long as you have labels you can save the time for computing them. Reading a Viterbi-path from file is usually much faster than computing it.
So, many Janus scripts are based on labels. We often do training along labels over several iterations. You might object that this is suboptimal, because a computed Viterbi gives a better alignment than some labels of some previous iteration. But experience has found that this is not very important. We usually take care of this argument by writing new and better labels once in a while, and benifit from the short training times by conducting more experiments which can also lead to better performance.
In Janus, we can define a Path object, and an HMM object. The HMM object describes the topology of the HMM, it's states and transitions, the transition probabilities and the acoustic models that are used to model the states. When the path object is created we have to tell it for which HMM it will be used. After creation, the path object is initally empty. There are a couple of different ways how it can be "filled". On way is to run a Viterbi or a forward-backward algorithm and have it write the found aligment into the path object. Another way is to simply load a previously save path, ich which case we must make sure that the HMM that was used by the stored path has the same architecture as the one used be the path object that we are filling. Finally a third way, is to write 'manually' into the data structure. Manually means to use Janus and Tcl commands to do the job. This approach is useful, when you do have some kind of labels, but they are not in a format that Janus likes. As long as they are machine-readable you can write a script to extract the desired information and store it in the path object. You can even do this by defining only an uncomplete path. You don't necessarily have to fix every frame of the acoustic features to some acoustic model, it is possible to define only where some words start or end, and have a Viterbi-algorthm find the rest. In the do-it-yourself pages to this topic you can find some example for using non-Janus labels.