UNDERSTANDING HTK ERROR MESSAGES

Various problems & solutions I've come across in using HTK for building a WSJ recognizer and for my dissertation work in Language Modeling. If you're here to find answers for your own project, consider posting your problems & solutions on your own website, for others to learn from, too.

PROBLEMSOLUTION
HLEd -d prondict -i monophone.mlf mkphones0.led words.mlf
Does nothing, only #!MLF!# is returned in the output.
There need to be double quotes around the lab filename in the words.mlf file: "*/xxx.LAB" instead of '*/xxx.lab'
HDMan -l hdman.log -w lists/all.wordlist lists/all.words.monophones.dict lists/cmudict.sort
ERROR [+1452] ReadDictProns: word A out of order in dict lists/cmudict.sort
FATAL ERROR - Terminating program HDMan
Unix sort doesn't seem to match the sort HTK is looking for. Python's sort function seems to work. Numbers are sorted with '.' before 0, shorter before longer (1 < 1.0 < 10 < 100)
HLEd -l '*' -d lists/allwords.prons.dict -i lists/all.phonemlf src/mkphones0.led lists/all.wordmlf
ERROR [+5013] ReadString: String too long
FATAL ERROR - Terminating program HLEd
Make changes to the pronunciation dictionary:
Replace all multiple spaces with single space;
Replace all tabs with single space;
Put a '\' before every double quote ("); %"
Put a '\' before any dictionary entry beginning with single quote (')
HLEd -l '*' -d lists/allwords.prons.dict.notabnospace -i lists/all.phonemlf src/mkphones0.led lists/all.wordmlf
ERROR [+1232] NumParts: Cannot find word ~ in dictionary
FATAL ERROR - Terminating program HLEd
Add that word to the dictionary, resort if necessary
ERROR [+1232] NumParts: Cannot find word MR.
STEINBERG in dictionary
FATAL ERROR - Terminating program HLEd
In the MLF file, the line "MR." ended with a slash, remove the slash from the MLF file.
HLEd -l '*' -d prondict -i train.monophone.mlf mkphones0.led train.rem.mlf
ERROR [+6550] LoadHTKList: Label Name Expected
FATAL ERROR - Terminating program HLEd
For all numbers in train.rem.mlf, precede them with \ so they don't look like a time.
HLEd -d train.prondict -i train.monophone.mlf mkphones0.led tdt4.arabicBN.mlf
ERROR [+1232] NumParts: Cannot find word #(tdAxl in dictionary
FATAL ERROR - Terminating program HLEd
some of these words ended in \) in the mlf, which was screwing with how it appears in the dictionary. I took out the \) in the mlf, now have to make sure everything has its correct entry in the prondict.
HLEd -d train.prondict -i train.monophone.mlf mkphones0.led tdt4.arabicBN.mlf
ERROR [+6550] LoadHTKLabels: Junk at end of HTK transcription
FATAL ERROR - Terminating program HLEd
Add -T 1 to the command line. Where it stops, look in the .mlf file for that transcription. There may be a blank line or something kooky in it. This will help you find a lot of the errors that HLEd comes up with.
HCopy -C configall -S wav2mfcc.scp
ERROR [+6270] OpenParmChannel: Cannot read parameterised WAV data
ERROR [+6313] OpenAsChannel: OpenParmChannel failed
ERROR [+6316] OpenBuffer: OpenAsChannel failed
ERROR [+1050] OpenParmFile: Config parameters invalid
FATAL ERROR - Terminating program HCopy
moved the HCopy configurations out of configall and into their own configuration file without the HCopy: prefixes
HCopy -C confighcopy -S wav2mfcc.arabicBN.scp -T 1
data2/20000610_0330_0430_voa_arb_spl0.wav -> data2/20000610_0330_0430_voa_arb_spl0.mfcc
ERROR [+6251] Input file is not in RIFF format
ERROR [+6213] OpenWaveInput: Get[format]HeaderInfo failed
ERROR [+6313] OpenAsChannel: OpenWaveInput failed
ERROR [+6316] OpenBuffer: OpenAsChannel failed
ERROR [+1050] OpenParmFile: Config parameters invalid
FATAL ERROR - Terminating program HCopy
seems to work if I put a single file on the command line
couldn't figure out the problem, but it worked when I used a different computer
maybe it's a 64-bit vs 32-bit problem?
HCompV -C src/ConfigHVite -f 0.01 -v 0.01 -m -S lists/train.plp.list -M hmm0 proto/hmm0/prototype_base
ERROR [+7032] FreezeOptions: vecSize not set
ERROR [+5105] AllocBlock: Cannot allocate block data of 4294967288 bytes
FATAL ERROR - Terminating program HCompV
Was using the wrong hmm0/prototype; make sure it has the appropriate lines at the top (how the MFCCs were defined, E_Z_A_D etc, means of one, variances of zero
HCompV -C src/ConfigHVite -f 0.01 -v 0.01 -m -S lists/train.plp.list -M hmm0 proto/hmm0/prototype
ERROR [+7031] GetTransMat: Bad Trans Mat Sum in Row 3
HMM Def Error: GetTransMat failed at line 40/col 14/char 1028 in proto/hmm0/prototype
ERROR [+7050] HMError:
ERROR [+7032] LoadHMMSet: GetHMMDef failed
ERROR [+2028] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HCompV
In the prototype file, at the matrix, the copy and paste had split up the lines, so the rows did not add up to one. Make sure each row fits on a single line.
HCompV -C configall -T 1 -A -D -m -M hmm0 -f 0.01 -S train_mfcc.list hmm0/prototype
ERROR [+5050] ReadConfigFile: = expected line 1/col 8/char 7 in configall
ERROR [+5020] InitShell: ReadConfigFile failed on file configall
ERROR [+2000] HCompV: InitShell failed
FATAL ERROR - Terminating program HCompV
If the first column of the config file lists the program name (HVite, HCopy, etc), make sure there is a colon after the name.
HCopy: TARGETKIND=MFCC_0_D_A
Also make sure any '#' for comments come at the beginning of the line, not the second column.
HCompV -c ConfigHVite -T 1 -A -D -m -M hmm0 -f 0.01 -S train_mfcc.list hmm0/prototype
No HTK Configuration Parameters Set
HCompV: Computing side based cepstral mean .....
ERROR [+2039] HCompV: AccGenUtt: speaker pattern matching failure on file: hmm0/prototype
The -c needs to be -C, or else the config file isn't read.
HCompV -C ConfigHVite -T 1 -A -D -m -M hmm0 -f 0.01 -S train_mfcc.list hmm0/prototype
ERROR [+2050] CheckData: Parameterisation in ./20001001_10.mfcc is incompatible with hmm hmm0/prototype
In hmm0/prototype, change USER to MFCC_0_D_A (when HCopy is run with MFCC_0 as the TARGETKIND
HCompV -C ConfigHVite -T 1 -A -D -m -M hmm0 -f 0.01 -S train_mfcc.list hmm0/prototype
ERROR [+2050] CheckData: Vector size in /data/data3/bromberg/fisher/segmented/fla_0069_122.mfcc[39] is incompatible with hmm hmm0/proto[13]
In the first line of hmm0/proto, which you need to create by hand in order to run HCompV, make sure the vecSize is the same as the size of the mfccs. Here its saying that the mfcc has 39 dimensions but the proto only calls for 13. Here is a sample script for making the proto file.
HCompV -A -T 1 -S trainsets/training-extfiles0 -l lineObservations -I labels.mlf -o lineObservations -m -M models/hmm0.0 hmmdefs/version1-hmm-top-23vec
Calculating Fixed Variance
HMM Prototype: hmmdefs/version1-hmm-top-23vec
Segment Label: lineObservations
Num Streams : 1
UpdatingMeans: Yes
Target Direct: models/hmm0.0
*** stack smashing detected ***:
HCompV terminated
HTK is 32-bit program. Install GCC 3.4 for it to run it on a 64 bit machine. .. otherwise some part works / some gets stack overflow.
HERest -C src/ConfigHVite -I lists/train.phonemlf -t 250.0 150.0 1000.0 -S train.mfcc.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
ERROR [-7324] StepBack: File ... bad data or over pruning
Possible problems include corrupt mfcc, non-matching or non-existent labels. In this case, I had to re-calculate the mean & variance for the prototype hmm using only 1/2 the data, and the problem went away. If every file is considered bad data, you may have derived the features wrong. Go back to HCopy and check the parameters (config file).
HERest -C src/ConfigHVite -I lists/train.phonemlf -t 250.0 150.0 1000.0 -S train.mfcc.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
Saving hmm's to dir hmm1
ERROR [+7031] PutTransMat: Row 4 of transition mat sum = 1.064684
FATAL ERROR - Terminating program HERest
Too much data. Use the -p option, splitting the input and processing over several machines, then doing a separate HERest pass with -p 0 to accumulate the accumulators. Or, as above, use a smaller portion of the data. Also, make sure that the file durations are spread evenly across lists. Don't put all the long files together, mix them up with short ones.
HERest -C src/ConfigHVite -I lists/train.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
ERROR [+5010] InitSource: Cannot open source file hmm0/macros
ERROR [+7010] LoadAllMacros: Can't open file
ERROR [+5010] InitSource: Cannot open source file hmm0/hmmdefs
ERROR [+7010] LoadAllMacros: Can't open file
ERROR [+7050] LoadHMMSet: Macro name expected
ERROR [+2321] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HERest
Need to make 'macros' file in hmm0 directory. Copy first few lines of the prototype into macros, then append to it the vFloors file.
HERest -C src/ConfigHVite -I lists/train.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
ERROR [+5010] InitSource: Cannot open source file hmm0/hmmdefs
ERROR [+7010] LoadAllMacros: Can't open file
ERROR [+7050] LoadHMMSet: Macro name expected
ERROR [+2321] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HERest
Need to manually create hmmdefs file. From htkbook: "...hmmdefs containing a copy for each of the required monophone HMMs is constructed by manually copying the prototype and relabeling it for each required monophone (including sil)." Use the build_hmmdefs.py script. Add another copy of the hmm at the bottom with the label 'sil'.
HERest -C src/ConfigHVite -I lists/all.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
Pruning-On[250.0 150.0 1000.0] ERROR [+6510] LOpen: Unable to open label file /scratch/ilana/wsj/data/WSJ0/SI_TR_S/01G/01GC020X.lab
FATAL ERROR - Terminating program HERest
The label file names in the all.phonemlf file were not in all caps. Changed the script that made the word-mlf file to have the filenames in all caps, then HLEd does the phone-mlf correctly.
HERest -A -C configall -p 3 -I train.monophone.mlf -S train.list3 -t 250.0 150.0 1000.0 -H hmm0/hmmdefs -M hmm1 monophones
ERROR [+6510] LOpen: Unable to open label file /data/data3/fisher/segmented/fla_0069_122.lab
FATAL ERROR - Terminating program HERest
In the mlf file, the filenames (utterance names) did not begin with */, so they couldn't be matched to the filenames in train.list3. Make sure filenames in the mlf begin with */ and are wrapped in quotation marks.
HERest -C src/ConfigHVite -I lists/all.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
Pruning-On[250.0 150.0 1000.0]
WARNING [-7325] LoadUtterance: No labels in file
/scratch/ilana/wsj/data/WSJ0/SI_TR_S/01G/01GO031F.lab in HERest
Segmentation fault
Rework prompts2mlf_word.py to not let a file begin with '.'; redo word and phone mlfs.
HERest -C src/ConfigHVite -I lists/all.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 lists/monophones1
Pruning-On[250.0 150.0 1000.0]
ERROR [+7011] SaveHMMSet: Cannot create MMF file hmm1/macros
mkdir hmm1
HERest -C ConfigHVite -I 20001001_1.monophone.mlf -t 250.0 150.0 1000.0 -S train_plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones
HMM Def Error: GetToken: Symbol expected at line 1/col 4/char 3 in hmm0/macros
ERROR [+7050] HMError:
HMM Def Error: GetOptions: GetToken failed at line 1/col 5/char 4 in hmm0/macros
ERROR [+7050] HMError:
HMM Def Error: LoadAllMacros: GetOptions Failed at line 1/col 0/char -1 in hmm0/macros
ERROR [+7050] HMError:
HMM Def Error: LoadAllMacros: Macro sym expected at line 1/col 0/char -1 in hmm0/hmmdefs
ERROR [+7050] HMError:
ERROR [+7050] LoadHMMSet: Macro name expected
ERROR [+2321] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HERest
hmmdefs file is screwy, the line ~h 'aa' needs to come before the BEGINHMM line.
HERest -C ConfigHVite -I 20001001_1.monophone.mlf -t 250.0 150.0 1000.0 -S train_plp.list -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones
Pruning-On[250.0 150.0 1000.0]
ERROR [+6510] LOpen: Unable to open label file 20001001_1.plp.lab
FATAL ERROR - Terminating program HERest
The filenames have to be matching within the mlf files and the individual names of the pfiles. xxx.lab and xxx.pf, no variations.
HERest -A -C configall -p 1 -I train.monophone.mlf -S train.list1 -t 250.0 150.0 1000.0 -H hmm0/hmmdefs -M hmm1 monophones
ERROR [+5105] AllocBlock: Cannot allocate block data of 5000000 bytes
FATAL ERROR - Terminating program HERest
One of the training files is too large for the system to process. Rerun the HERest command with -T 1, see what file it fails on, remove it from train.list1, and try again. (Alternatively split up that file and its transcript and replace the original file with its splits in the training list and the mlf.)
HHEd -H hmm4/macros -H hmm4/hmmdefs -M hmm5 sil.hed lists/monophones1
ERROR [+7030] GetHMMDef: Trans Mat Dimensions not 3 x 3
HMM Def Error: LoadAllMacros: GetHMMDef failed at char 188656 in hmm4/hmmdefs
ERROR [+7050] HMError:
ERROR [+7050] LoadHMMSet: Macro name expected
ERROR [+2628] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HHEd
Add sp to monophones 1; To make hmmdefs4, use this script: sil2sp.pl, which I got from this htk tutorial website.
HHEd -H hmm4/macros -H hmm4/hmmdefs -M hmm5 src/sil.hed lists/monophones1
WARNING [-2631] EditTransMat: No trans mats to edit! in HHEd
Was using wrong monophones list; must use the one updated with 'sp'
HERest -A -C configall -I train.monophone.sp.mlf -S train.list -t 250.0 150.0 1000.0 -H hmm5/hmmdefs -M hmm5 monophones.sp
Pruning-On[250.0 150.0 1000.0]
ERROR [+7332] Create Insts: Cannot have Tee models at start or end of transcription
FATAL ERROR - Terminating Program HERest
There is an 'sp' short pause as the last symbol before '.' in the mlf. In a previous step there was an HLEd command with a set of commands in a file like 'mkphones1.led'. Make sure 'IS sil sil' is in that .led file, which puts the 'sil' at beginning and end of each utterance.
HERest -C src/ConfigHVite -I lists/all.sp.phonemlf -t 250.0 150.0 1000.0 -S lists/train.plp.list -H hmm5/macros -H hmm5/hmmdefs -M hmm6 lists/monophones1.sp
Pruning-On[250.0 150.0 1000.0]
ERROR [+7332] CreateInsts: Cannot have Tee models at start or end of transcription
FATAL ERROR - Terminating program HERest
Recreate phone mlf to have 'sil' before and after each utterance; use "IS sil sil" in the .led file for HLed; if it still doesn't work, find by hand the utterances that end in 'sp' and add 'sil' before the period; or use the python command line to fix it.
HVite -l '*' -o SWT -b SILENCE -C ConfigHVite -a -H hmm7/macros -H hmm7/hmmdefs -i 20001001_1.realigned.monophone.mlf -m -t 250.0 -y lab -I 20001001_1.mlf -S train_plp.list prondict.sort.sp monophones
ERROR [+6510] LOpen: Unable to open label file 20001001_1.lab
FATAL ERROR - Terminating program HVite
name of .lab file in 20001001_1.mlf (word mlf) was wrong
HVite -l '*' -o SWT -b SILENCE -C ConfigHVite -a -H hmm7/macros -H hmm7/hmmdefs -i 20001001_1.realigned.monophone.mlf -m -t 250.0 -y lab -I 20001001_1.mlf -S train_plp.list prondict.sort.sp monophones
nothing appears in new transcription
Trying to realign the transcription using the current hmms. This may be the fault of me not training with enough data. Try just copying the original monophone transcript to realigned.monophone.mlf and continue
HERest -C configall -I 20001001_1-10.realigned.monophone.mlf -t 250.0 150.0 1000.0 -S train_mfcc.list -H hmm7/macros -H hmm7/hmmdefs -M hmm8 monophones
Pruning-On[250.0 150.0 1000.0]
ERROR [+6510] LOpen: Unable to open label file 20001001_5.lab
FATAL ERROR - Terminating program HERest
The HVite process did not create a label file for every utterance; some had no tokens surviving, including file 5. Need to go back to HVite and change some parameters to make sure it can get through all utterances. For instance, change the beam searching parameters with the -t flag (htkbook pg 301)
HERest -C configall -I train.realigned.monophone.mlf -t 250.0 150.0 1000.0 -p 0 -H hmm7/macros -H hmm7/hmmdefs -M hmm8 hmm8/HER1.acc hmm8/HER2.acc hmm8/HER3.acc hmm8/HER4.acc hmm8/HER5.acc hmm8/HER6.acc
ERROR [+7060] InitHMMSet: Expected newline after 2'th HMM
ERROR [+2321] Initialise: MakeHMMSet failed
FATAL ERROR - Terminating program HERest
forgot to put 'monophones' on the command line before the list of .acc files
HVite -T 1 -C configall -H hmm9/macros -H hmm9/hmmdefs -S train_mfcc.list -l '*' -i recog_mono2/monophones.mlf -o S -w wdnet -p 0.0 -s 5.0 prondict.sort.final monophones
Read 37 physical / 37 logical HMMs
WARNING [-8520] CreateSEIndex: No transitions to state 5 in HVite
WARNING [-8520] CreateSEIndex: No transitions to state 5 in HVite
Read lattice with 859 nodes / 1713 arcs
Created network with 6391 nodes / 7245 links
I'm doing recognition at the hmm9 stage as part of debugging. There are a few hmms in hmm8/hmmdefs and hmm9/hmmdefs that have no transition from state 4 to state 5, including 'O' and 'silst'. This is a problem. It start occurring after realignment. So for the two iterations of HERest after realignment, use -u mv
HHEd -B -H hmm9/macros -H hmm9/hmmdefs -M hmm10 src/mktri.hed lists/monophones1.sp
ERROR [+2635] FindBaseModel: Cannot Find HMM sl in Current List
FATAL ERROR - Terminating program HHEd
Found and removed 'sl' from lists/triphones1
HHEd -T 1 -H hmm9/hmmdefs -M hmm10 mktri.hed monophones
HHEd 34/34 Models Loaded [5 states max, 1 mixes max]
CL triphones
Cloning current hmms to produce new set
{(*-.
Error ) expected
ERROR [+7230] EdError: item list parse error
FATAL ERROR - Terminating program HHEd
Because '.' is in the monophones list, the first triphone code in mktri.hed is invalid. remove it.
HERest -B -A -C configall -s stats -p 0 -I train.triphone.cw.mlf -t 250.0 150.0 1000.0 -H hmm11/macros -H hmm11/hmmdefs -M hmm12 triphones hmm12/HER1.acc hmm12/HER2.acc
Pruning-On[250.0 150.0 1000.0]
ERROR [+7191] Infinite WtAcc!
(or) ERROR [+7191] Infinite MuAcc!
FATAL ERROR - Terminating program HERest
Comes up in the accumulation process when doing a split re-estimation. WtAcc due to a row sum error on the transition matrix.(?)
Tried: -u mv in the command, gave me MuAcc instead
Tried: using files less than a minute in length
Tried: splitting data up into more parallel sections (4)
Tried: remove -B from the combining step in HERest, making the resulting hmm text form rather than binary. This worked, but I don't know why...
HHEd -H hmm12/macros -H hmm12/hmmdefs -M hmm13 tree.hed triphones
ERROR [+2662] AssignStructure: cannot find tree for U-r+sil state 5
FATAL ERROR - Terminating program HHEd
I'm using 5 middle states but tree.hed only has TB lines for 3 middle states. Add more TB lines to tree.hed for states 5 & 6
HHEd -B -H hmm12/hmmdefs -M hmm13 tree.hed triphones
ERROR [+2662] AssignStructure: cannot find tree for t2-ay+D2 state 2
FATAL ERROR - Terminating program HHEd
One of the phonemes in the triphone listed has no indication of how to cluster it in tree.hed. Remove it from the prondict and start over (with a shortened monophone list), or remove it from fulllist and the HHEd command will run. If you have one like this you probably have a few, look carefully.
HHEd -B -H hmm12/macros -H hmm12/hmmdefs -M hmm13 src/tree.hed lists/triphones1 > log
ERROR [+2662] AssignStructure: cannot find tree for ax-sp+d state 2
FATAL ERROR - Terminating program HHEd
Recreate tree.hed using local monophone list, mkclscript from tutorial, then add to that QS part of tree.hed
HHEd -H hmm12/macros -H hmm12/hmmdefs -M hmm13 tree.hed triphones
ERROR [+2662] FindProtoModel: no proto for z-sp+A in hSet
FATAL ERROR - Terminating program HHEd
In the cross-word triphone models, the sp causes problems, so remove it from the monophone list, from the extra triphones, from tree.hed
HERest -B -C ConfigHVite -I 20001001_1.triphone.mlf -t 250.0 150.0 1000.0 -S train_plp.list -H hmm13/macros -H hmm13/hmmdefs -M hmm14 triphones
ERROR [+5010] InitSource: Cannot open source file Q-n+A
ERROR [+7010] LoadHMMSet: Can't find file
ERROR [+2321] Initialise: LoadHMMSet failed
FATAL ERROR - Terminating program HERest
The state-tying actually caused some states to be tied, meaning they get renamed. This is shown in the tiedlist created in the previous step with HHEd and CO "tiedlist" at the end of tree.hed. In the tiedlist output file, there are two columns in some places; the second column names the new label for the hmm in the first. It means those two are tied. So Q-n+A is tied to another triphone and thereby renamed. REPLACE TRIPHONES WITH TIEDLIST ON THE COMMAND LINE.
HERest -B -C configall -I train.triphone.mlf -t 250.0 150.0 1000.0 -S train.realigned.list -H hmm13/macros -H hmm13/hmmdefs -M hmm14 tiedlist
ERROR [+7231] InitSource: Cannot open source file y-l-A
FATAL ERROR - Terminating program HERest
There is a triphone that HERest is trying to reestimate that does not appear in the tiedlist. Recreate the fulllist (all possible triphones) and redo the HHEd step for decision tree tying etc.
HERest -T 1 -D -A -C configall -p 1 -I train.triphone.mlf -S train.mfcc.norm.list -t 250.0 150.0 1000.0 -H hmm15/hmmdefs -M hmm16 tiedlist
HERest ML Updating: Transitions Means Variances
Parallel-Mode[1] System is SHARED
51987 Logical/15201 Physical Models Loaded, VecSize=39
1 MMF input files
Pruning-On[250.0 150.0 1000.0]
Processing Data: fla_0130_96.mfcc; Label fla_0130_96.lab
Utterance prob per frame = -5.125980e+01
Processing Data: fla_0530_22.mfcc; Label fla_0530_22.lab
ERROR [+7321] CreateInsts: Unknown label m+H
FATAL ERROR - Terminating program HERest
add a line to the mktri.led file that has 'NB sp' or 'NB garbage' or 'NB whatever' for whatever monophone for which you don't want the biphone context to be made. Go back and remake the triphone transcript, then try the re-estimation again.
HHEd -A -H mix_moreA/hmmdefs -M mix_moreA 10.hedscript tiedlist
WARNING [-2637] HeaviestMix: mix 4 in n2-O+sh2 has v.small gConst [-200000045056.000000] in HHEd
WARNING [-2637] HeaviestMix: mix 1 in n2-O+sh2 has v.small gConst [-170000023552.000000] in HHEd
WARNING [-2637] HeaviestMix: mix 3 in n2-O+sh2 has v.small gConst [-109999996928.000000] in HHEd
WARNING [-2637] HeaviestMix: mix 4 in n2-O+sh2 has v.small gConst [-140000002048.000000] in HHEd
ERROR [+2697] HeaviestMix: heaviest mix is defunct!
FATAL ERROR - Terminating program HHEd
Trying to increase the number of Gaussian mixtures for each hmm at the end of training, incrementing by 2 each time. From htkbook: "Defunct mixture components can be prevented by setting the -w option in HERest so that all mixture weights are floored to some level above MINMIX."
HVite -H hmm15/macros -H hmm15/hmmdefs -S lists/dt.list -l '*' -i recog/dt.out.mlf -w wdnet -p 0.0 -s 5.0 lists/allwords.prons.dict.final lists/tiedlist
ERROR [+8251] ReadLattice: Word worrisome not in dict
ERROR [+3210] DoAlignment: ReadLattice failed
FATAL ERROR - Terminating program HVite
Made sure vocab, wordnet were all uppercase; dictionary is all uppercase;
HVite -H hmm15/macros -H hmm15/hmmdefs -S lists/dt.list -l '*' -i recog/dt.out.mlf -w wdnet.upper -p 0.0 -s 5.0 lists/allwords.prons.dict.final lists/tiedlist ERROR [+8251] ReadLattice: Word -PAU- not in dict ERROR [+3210] DoAlignment: ReadLattice failed FATAL ERROR - Terminating program HVite add it to the pronunciation dictionary
HVite -H hmm15/macros -H hmm15/hmmdefs -S lists/dt.list -l '*' -i recog/dt.out.mlf -w wdnet.upper -p 0.0 -s 5.0 lists/allwords.prons.dict.addrecog lists/tiedlist
WARNING [-8221] InitPronHolders: Total of 77 duplicate pronunciations removed in HVite
ERROR [+8231] GetHCIModel: Cannot find hmm [???-]IY[+???]
FATAL ERROR - Terminating program HVite
Change dictionary and wdnet to all lowercase
HVite -T 1 -C src/ConfigHVite -H hmm15/hmmdefs -H hmm15/macros -S lists/dt.list -i recog/dt.out.mlf -o S -w wdnet.lower -p -10.0 -s 15.0 -t 450.0 250.0 40000.0 lists/allwords.rons.dict.addrecog.lower lists/tiedlist > recog.log
ERROR [+8250] ReadLattice: Premature end of lattice file before header
ERROR [+3210] DoAlignment: ReadLattice failed
FATAL ERROR - Terminating program HVite
Go back into wdnet.lower and uppercase the first line and the J,I,W,S,L etc
HVite -T 1 -C src/ConfigHVite -H hmm15/hmmdefs -H hmm15/macros -S lists/dt.list -i recog/dt.out.mlf -o S -w wdnet.lower -p -10.0 -s 15.0 -t 450.0 250.0 40000.0 lists/allwords.rons.dict.addrecog.lower lists/tiedlist > recog.log
ERROR [+8231] GetHCIModel: Cannot find hmm [l-]e[+sh]
FATAL ERROR - Terminating program HVite
Changed pronunciation of [inhalation] to l ey sh
There is a monophone somewhere in the dictionary, or in the monophone set, that is not represented as an hmm (try "cat hmm0/hmmdefs | grep '~h'" to see what is represented). You may need to either change pronunciations in the dictionary to eliminate barely-used monophones or retrain with all of the monophones intact. It's possible if you generated the monophone list from the monophone transcript that some monophones in the prondict were left out, b/c they never occurred in the first pronunciation of any word. Try regenerating the monophone list from the dictionary using shell scripting instead of HLEd.
HVite -T 1 -C src/ConfigHVite -H hmm15/hmmdefs -H hmm15/macros -S lists/dt.list -i recog/dt.out.mlf -o S -w wdnet.lower -p -10.0 -s 15.0 -t 450.0 250.0 40000.0 lists/allwords.rons.dict.addrecog.lower lists/tiedlist > recog.log ERROR [+6313] OpenParmChannel: cannot read HTK Header in File /u/drspeech/data/WSJ0/SI_DT_05/050/050A0503.nst ERROR [+6313] OpenAsChannel: OpenParmChannel failed ERROR [+6316] OpenBuffer: OpenAsChannel failed ERROR [+3250] ProcessFile: Config parameters invalid FATAL ERROR - Terminating program HVite Changed dt.list to dt.plp.list
HVite -z lat -l $expname -C ../configall -t 150.0 -A -D -T 1 -w $expname.htk.lm -s 12.0 -p -10.0 -H ../hmmdefs.16 -S ../dev.mfcc0.list1 prondict.norm8.sort.sp ../tiedlist
ERROR [+8231] GetHCIModel: Cannot find hmm [u-]n[+???]
FATAL ERROR - Terminating program HVite
Haven't figured this one out. Can't find a pronunciation with fishy phonemes as mentioned. HDecode has no problem with all of the same inputs except for ARPA-based lm, and I don't see anything wrong with the htk-lattice-lm. So, I dunno.
HHEd -B -H hmm15/macros -H hmm15/hmmdefs -M hmm16 src/train_mix_inc_2.hed lists/train+cv.triphonemlf
ERROR [+7036] CreateHMM: multiple use of logical HMM name sp
ERROR [+7060] InitHMMSet: Error in CreateHMM
ERROR [+2628] Initialise: MakeHMMSet failed
FATAL ERROR - Terminating program HHEd
Reading dictionary from diss/lib/myprondict
ERROR [+8050] ReadDict: Probability malformed 2
ERROR [+8013] ReadDict: Dict format error
ERROR [+9999] Initialise: ReadDict failed
FATAL ERROR - Terminating program HDecode.long
problems in the pronunciation dictionary:
quotations and double quotes need backslash
brackets possibly need backslash
narrow down problem by reducing prondict to only a few lines and gradually adding until the error comes up
one of the last pronunciations has a non-existent phoneme (2), change it.
HDecode.long -z lat -l decodeLCA_nonums_wordLM -C configall -t 150.0 -A -D -T 1 -w lev.alltext.word.lm -s 12.0 -p -10.0 -H mix_moreA/hmmdefs -S lev.dev.mfcc.list4 levtrain.prondict.ver3 tiedlist
Reading dictionary from levtrain.prondict.ver3
Reading acoustic models...
Read 4163 physical / 230643 logical HMMs
ERROR [+9999] HLVNet: no model label for phone (uw-gar+gar)
FATAL ERROR - Terminating program HDecode.long
I have a 'gar'bage model that is like sp, should not belong to any triphones. In HDecode, only the phonemes associated with start and/or endnode are allowed to be monophone-only. Go back and add gar triphones to full_list, remake the tiedlist. Might need to add some info for gar to tree.hed. Re-estimate from there forward.
HDecode.long -z lat -l * -C ConfigHVite -t 150 -A -D -T 1 -w 20001001_1.lm -s 12.0 -p -10.0 -H hmm15/hmmdefs -S train_plp.list prondict.sort tiedlist
ERROR [+4019] HDecode: beam width expected
FATAL ERROR - Terminating program /u/drspeech/opt/htk-3.4/i586-linux/bin/HDecode.long
The value after the -t flag must be a float. Change to 150.0
HDecode.long -z lat -l * -C ConfigHVite -t 150.0 -A -D -T 4 -w 20001001_1.lm -s 12.0 -p -10.0 -H hmm15/hmmdefs -S train_plp.list prondict.sort tiedlist
ERROR [+9999] HDecode: cannot find STARTWORD '<s>'
FATAL ERROR - Terminating program /u/drspeech/opt/htk-3.4/i586-linux/bin/HDecode.long
add <s> and <\s> to the pronunciation dictionary with a pronunciation of sil
HDecode.long -z lat -l * -C ConfigHVite -t 150.0 -A -D -T 4 -w 20001001_1.lm -s 12.0 -p -10.0 -H hmm15/hmmdefs -S train_plp.list prondict.sort tiedlist
ERROR [+9999] HDecode: cannot find file 'sp'
FATAL ERROR - Terminating program /u/drspeech/opt/htk-3.4/i586-linux/bin/HDecode.long
add
sp sil
to the end of the prondict
HDecode.long -z lat -l decodeA -C ../configall -t 150.0 -A -D -T 1 -w mix2.unk.knd.lm -s 12.0 -p -39.0 -H ../hmmdefs.16 -S ../dev.mfcc0.list4 prondict.expand ../tiedlist
FATAL ERROR - Terminating program HDecode.long
ERROR [+5010] InitSource: Cannot open source file f-uw+x
ERROR [+7010] LoadHMMSet: Can't find file
ERROR [+4128] Initialise: LoadHMMSet failed
There is a mismatch between the hmms that are defined in the hmmdefs file and those that are listed in the tiedlist. One or the other needs to change, probably the tiedlist. This may involve going back far enough to re-create the hmms used in the last HHEd command, so to recreate the tiedlist.
HDecode.long -z lat -l * -C ConfigHVite -t 150.0 -A -D -T 4 -w 20001001_1.lm -s 12.0 -p -10.0 -H hmm15/hmmdefs -S train_plp.list prondict.sort tiedlist
WARNING [-9999] no token survived to sent end! in HDecode.long
Segmentation fault
This is the model I built on a single sound file, so maybe that's the right answer...
ERROR [+9999] HLVNet: no model label for phone (.-q+r)
FATAL ERROR - Terminating program /u/drspeech/opt/htk-3.4/i586-linux/bin/HDecode.long
Remove '. .' from the pronunciation dictionary
HDecode.long -z lat -l decodeA -C configall -t 150.0 -A -D -T 1 -w p.3grams.lm -s 12.0 -p -10.0 -H mix_moreA/hmmdefs.16 -S dev.mfcc0.list3 prondict.norm8.sort tiedlist
ERROR [+9999] HLVNet: no model label for phone (x-sil+S)
FATAL ERROR - Terminating program HDecode.long
It shouldn't be looking for a triphone with 'sil' in the middle. Search for 'sil' in the pronunciation dictionary; the only words it should serve as pronunciation for are <s> and <\s> .
ERROR [+9999] HDecode: Incompatible parm kinds MFCC_0 vs. MFCC_D_A_0
FATAL ERROR - Terminating program /u/drspeech/opt/htk-3.4/i586-linux/bin/HDecode.long
Changed the format of the hmms to mfcc_d_a_0 even though the original files were made into MFCC_0. They've gotta be the same. Use MFCC_D_A_0 in the hcopy config file.
Reading dictionary from diss/lib/myprondict
Reading acoustic models...Read 26745 physical / 250049 logical HMMs
ERROR [+9999] HLVNet: no model label for phone (sil-}+w)
FATAL ERROR - Terminating program HDecode.long
There are still some labels in the pronuncation dictionary that do not have defined acoustic models (}). Change those labels, which may have come in through the pronunciation-building script.
ERROR [+8113] ReadARPAngram: failed reading lm prob at char 1283900 in diss/data/language_model/fsms.4grams.64Kvocab.lm This error can be reproduced by having the wrong number of ngrams present in the lm file as compared to the number defined at the top of the file.
Make sure the LM and prondict have the same encoding.
Make sure all quotes and double quotes have a backslash
Make sure the lm and prondict contain \ and \<\\s\>.
WARNING [-8100] ReadARPAngram: unseen word 'إسأ' in ngram in HDecode.long Words in lm not present in pronunciation dict. Write a script to find them and add them in, being sure to resort the pronunciation dictionary afterwards.
ReadNGrams: 1827th 2Grams out of order The bigrams are not in alphabetical order.
HLRescore -n $lm -f -y crec -r 10.0 -t 150.0 -s 20.0 -p -42.0 -C configall -A -D -T 1 -S unconstrained.list $prondict.expand
Reading LM from mix1.unk.knd.lm
ERROR [+8150] ReadNGrams: 577308th 2Grams out of order
FATAL ERROR - Terminating program HLRescore
Nothing seems out of place in the LM which was made and not messed with. LM worked for HDecode.
HLRescore -n $lm -f -y crec -t 150.0 -s 12.0 -p -10.0 -C configall -A -D -T 1 $prondict $lattice
WARNING [-9999] word 0 not in LM wordlist in HLRescore
HLRescore: HLat.c:415: LatTopSort: Assertion `time+1 == lat->nn' failed.
Got rid of the second error (LatTopSort) by determinizing, minimizing, and topologically sorting the fsm before converting to pfsg & htklat.
Make sure that NULL (or whatever you've substituted for NULL in the lattice) exists in both the pronunciation dictionary and the language model.
HLRescore -n $lm -f -y crec -t 150.0 -s 12.0 -p -10.0 -C configall -A -D -T 1 $prondict $lattice
ERROR [+8250] ReadLattice: Premature end of lattice file before header
ERROR [+4013] HLRescore: can't read lattice
FATAL ERROR - Terminating program HLRescore
In the lattice, change 'NODES' to 'N' and 'LINKS' to 'L'.
HLRescore -n $lm -f -y crec -t 150.0 -s 12.0 -p -10.0 -C configall -A -D -T 1 $prondict $lattice
ERROR [+8251] ReadLattice: Word bEd:bEd not in dict
ERROR [+4013] HLRescore: can't read lattice
FATAL ERROR - Terminating program HLRescore
Needed to use transducer=1 to get the pfsg to print correctly with fsm-to-pfsg, but now the format is messing up HLRescore. Either change to transducer=0 in fsm-to-pfsg, or, use sed to change each term:term to term.
HResults -I reference.mlf /dev/null decoded.mlf
ERROR [+6550] LoadHTKList: Label Name Expected
FATAL ERROR - Terminating program HResults
In the reference.mlf file, there exists either a blank line, or a digit without backslash or quotes, or something else unpalatable to HResults. Use HResults -f to figure out which utterance it's in (the one _after_ the last one listed), and fix it. For instance, put quotations around a number or backslash a quote, etc.
HResults -I reference.mlf /dev/null hypothesis.mlf
ERROR [+6570] Get LabelList: n[1] > numLists[0]
FATAL ERROR - Terminating program HResults
Run the command again with -f to show full results. Look in the reference mlf file at the utterance _after_ the last one listed before the error shows up. It's empty. Put something there or remove it (must be removed from reference).
HResults -I reference.mlf /dev/null hypothesis.mlf
ERROR [+6510] LOpen: Unable to open label file NBCTV_MORNING_20070111.lab
FATAL ERROR - Terminating program HResults
One of the utterances in the hypothesis mlf does not have a corresponding utterance in the reference mlf. Either it's missing entirely or the names don't match, check spelling and capitalization of the filenames in the two mlfs.
HERest -A -D -T 10 -C configall -C hmmadapt6-1/config_adapt -S adapt6.list -I train.triphone.new.mlf -H hmmadapt6-1/hmmdefs.16 -H hmmadapt6-1/glob -K hmmadapt6-2 mllr -u a tiedlist
ERROR [+999] Components missing from Base Class list (4630 74080)
ERROR [+999] BaseClass check failed
FATAL ERROR - Terminating program HERest
Trying to do adaptation. Built regression tree using instructions here. But because my hmm definitions were incremented to 16 mixes, I had to change the last line of the global file to: CLASS 1 {*.state[2-4].mix[1-16]}
HERest -A -D -T 10 -C configall -C hmmadapt6-1/config_adapt -S adapt6.list -I train.triphone.new.mlf -H hmmadapt6-1/hmmdefs.16 -H hmmadapt6-1/glob -K hmmadapt6-2 mllr -u a tiedlist
ERROR [+999] Output xform mask *.%%% does not match filename data2/20001220_1530_1600_NTV_ARB/20001220_1530_1600_NTV_ARB_3.mfcc
FATAL ERROR - Terminating program HERest
Added -h data2/*/*_ARB_??.mfcc to the command line, which matches the filenames being given to HERest. Also take away 'mllr'
HERest -C configall -C hmmadapt6-1/config_adapt -S adapt6.list -I train.triphone.new.mlf -z tmf -h data2/*/*_ARB_??.mfcc -H hmmadapt6-1/hmmdefs.16 -H hmmadapt6-1/glob -u a -K hmmadapt6-2 -M hmmadapt6-2 -d hmmadapt6-1 tiedlist
ERROR [+7060] InitHMMSet: Expected newline after 1'th HMM
ERROR [+2321] Initialise: MakeHMMSet failed
FATAL ERROR - Terminating program HERest
The "-h data2/*/*_ARB_??.mfcc" command is causing a bunch of filenames to come up as part of the command, and it thinks that one of those is the list of hmms. Instead, use data2/*/*, and PUT SINGLE QUOTES AROUND IT: -h 'data2/*/*'
HERest -C configall -C config.global -S adapt6.list -I train.triphone.new.mlf -u a -z tmf -K xforms mllr1 -J classes -h 'data2/*/*' -H hmmorig/hmmdefs.16 tiedlist
no output
No errors, but no new files in xforms or anywhere else.
Change the -h part of the command. Wherever there is a '%', that part will be the name of the output file (plus mllr or whatever comes after the output directory after the -K flag). So if you have two input sources or speakers, put the %% to match the characters that group each speaker's utterances, give only those utterances as input, and you'll get a transform for that speaker with an appropriate name.