000000 590000 sil
600000 2090000 a
2100000 4500000 sil
b.lab contains
000000 990000 sil
1000000 3090000 b
3100000 4200000 sil
Then the above two individual label files could be replaced by a single MLF
#!MLF!#
"*/a.lab"
000000 590000 sil
600000 2090000 a
2100000 4500000 sil
.
"*/b.lab"
000000 990000 sil
1000000 3090000 b
3100000 4200000 sil
.oneUsing an MLF containing
#!MLF!#
"*/one.*.lab"
one
.
"*/two.*.lab"
two
.
"*/three.*.lab"
three
.
<etc.>
avoids the need for many duplicate label files. #!MLF!#
"*" -> "/db/dr1/labs"
"*" -> "/db/dr2/labs"
...
"*" -> "/db/dr7/labs"
"*" -> "/db/dr8/labs"
Each attempt to open a label file will result in a linear search
through dr1 to dr8 to find that file. If the sub-directory name
is embedded into the label file name, then this searching can
be avoided. For example, if the label files in directory drx had
the form drx_xxxx.lab, then the MLF would be written as
#!MLF!#
"*/dr1_*" -> "/db/dr1/labs"
"*/dr2_*" -> "/db/dr2/labs"
...
"*/dr7_*" -> "/db/dr7/labs"
"*/dr8_*" -> "/db/dr8/labs"Suppose that a similar hierarchy of label files was constructed on disk3. These label files could be found by any HTK tool by using an MLF containing just
#!MLF!#
"*" => "/disk3"
If for some reason all of the drN directories were
renamed ldrN in the label hierarchy, then this could be
handled by an MLF file containing
#!MLF!#
"*/dr1/*" => "/disk3/ldr1"
"*/dr2/*" => "/disk3/ldr2"
"*/dr3/*" => "/disk3/ldr3"
etc.