HTK Speech Recognition Toolkit
 [ Home | Register | Mailing Lists | Documentation ]

Getting HTK
Registration Issues
Change Password
Retrieve Login

HTK Book
Installation & Testing
History of HTK
CUED LVR Systems

Mailing Lists

Get involved
Future Plans
Report a Bug
Bug Status

HTK Extensions
ASR Toolkits/Software
ASR Research Sites
Speech Companies
Speech Conferences
Speech Journals
ASR Evaluations



Bug Status

Outstanding bugs (not included into the 3.4.1 release)

Date Author Description Response Status Patch
24 Oct 2009 Anton Ragni Dependence on non-zero value of the first element of bVector (RegAcc structure) in HAdapt.c, affected methods: UpdateBaseAccs(Vector svec), UpdateBaseAccsWithPaac(void) Add flag to keep track of setting/reseting bVector OPEN -
22 Sep 2009 Mei Na I was attempted to train the HMM using MPE criteria. I encountered the following terrible problem to some input signals, as follow:
Processing Data: c0501.mfc
T=799, pr/fr=-18.177995
[+num] Processing Data: c0501.mfc
ERROR [+5105] AllocBlock: Cannot allocate block data of 20000000 bytes
FATAL ERROR - Terminating program HMMIRest (continued...)
- OPEN -
6 Aug 2009 Malte Lampmann HMMIRest breaks during the update process with TIEDHS (continued...) - OPEN -
29 Jul 2009 Federico Flego HArc.c: initializing tempArcStack more than once. I think the 'StackInitialised' flag is never set to a different value and the 'tempArcStack' stack is initialized multiple times (every time FBLatFirstPass() is called). (continued...) - OPEN -
24 Jul 2009 Fabio Tesser When I try to use the -l option in HCompV, I obtain the following abort error (see below for the full HCompV log and backtrace): *** stack smashing detected ***: HCompV terminated (continued...) - OPEN -
17 Jul 2009 Brian Teaman No support in configure for FreeBSD 7.1 running on x86 32-bit - OPEN -
22 Jun 2009 Antoni Abella Vendrell Bugs are related with using static prior for MPE training within HMMIRest:
1) The prior MMF and the source MMF cannot have both an INPUTXFORM defined, even if the transform is the same. The solution is to remove the transform from the prior MMF. (continued...)
- OPEN -
11 Jun 2009 Federico Flego There's a memory leakage in HVite when phone-marking lattices (continued...) - OPEN -
11 Jun 2009 Federico Flego Currently HTK V3.4.1 can't load compressed HMMs and TMFs. The same problems arises for compressed lattices. If the wrong filename or path is given at the command line, a file descriptor is returned anyway and the program crashes when it tries to load it. (continued...) - CLOSED patch
09 Jun 2009 Nickolay V. Shmyrev A typo in HTKbook: -w is missing on page 54 - CLOSED patch
28 May 2009 Federico Flego in HAdapt.c at line 995 there are this couple of commands
regAcc->bDiagMat = CreateBlockTriMat(x,blockSize);
The second one is not needed because the matrices are already zeroed in CreateBlockTriMat(), called in the first line.
Affected two methods CreateBaseTriMat(...) and *CreateAccCache(...) CLOSED patch
27 May 2009 Federico Flego HTKBook LM section typos/bugs (continued...) - CLOSED patch
22 May 2009 Haitian Xu In HERest.c, during 2-model re-estimation flag-variables controlling the updates of transition probabilities are not synchronised. Local flag-variable dominate over the global one which leads to update of transition probabilities when it is not asked so. Need more information. OPEN ---
22 May 2009 Catherine Breslin The config variable BINARYACCFORMAT is read in HTrain.c and HERest.c and used to set the variable ldBinary. In HMMIRest.c, ldBinary is always set to false. These three ldBinary variables should actually all be set to the same - a global variable that is loaded just once in HTrain.c HERest and HMMIRest now make use of local ldBinary variable fetched from HTrain. HTK book is updated accordingly. CLOSED patch
21 May 2009 Federico Flego In section 3.11.2 there's:
LGPrep -A -D -V -b 500000 -n 2 empty.wmap -d lmdb lmtrain.txt
but I think it should be:
LGPrep -A -D -V -b 500000 -n 2 -d lmdb empty.wmap lmtrain.txt
because otherwise LGPrep waits for ever (without any message or warning) the lmtrain list from std-input. Also In HTK book, section 3.11.2 there's:
LNewMap empty.wmap
but I think it should be:
LNewMap wmap_name empty.wmap
- CLOSED patch
19 May 2009 Federico Flego In HAdapt.c, at the end of function "Boolean UpdateSpkrStats(HMMSet *hset, XFInfo *xfinfo, char *datafn)". Note in the original version if '!keepXFormDistinct' and 'xfinfo->xformTMF == NULL' are both true then SaveAllXForms() is called twice (note there's no '{' after the 'else' and thus the bad alignment of the 2nd instance of SaveAllXForms()) (continued...) - CLOSED patch
19 May 2009 Federico Flego In HAdapt.c, at the end of function "static Boolean GenClassXForm(BaseClass *bclass, AdaptXForm *xform)" vector is not deallocated (continued...) - CLOSED patch
12 May 2009 Federico Flego In V3.4.1 at line 712 of HMMIRest.c it is (as it was in V3.4) (continued...) while in my version of HMMIRest.c I have HError() out of the for loop, and it seems to me it's more correct since variables 'denLatSubDirPat', 'buf1', and 'datafn_lat' don't change in the for loop. Not a bug. File datafn_lat does change in the loop and must match the mask specified in denLatSubDirPat. CLOSED ---
12 May 2009 Federico Flego At page 300 of last HTK manual version (sec 18.15.2) there's: "HMMIRest also supports the standard options -A, -C, -D, -S, -T, and -V as described in section 4.4". I guess there's a missing '-X' since in the HMMIRest.c there's PrintStdOpts("BEFHIMSTJX"); /*K,G,L removed*/ Yes this is supported and should be in the documentation CLOSED patch
20 Apr 2009 Nickolay V. Shmyrev As far as I remember the issue here is that times after multiplication aren't precisely aligned, so little floating point mismatch makes HMMIRest think that frame step is not correct. I solved this problem by using different configs: (continued...) - OPEN -
13 Apr 2009 Nickolay V. Shmyrev Here is the small bug in HLRescore in HTK 3.4.1 found by Xiaodan. If config file has no STARTWORD and ENDWORD, HLRescore just crashes. It could give meaningful warning instead.
(gdb) bt
#0 GetLabId (name=3D0x0, insert=3DFALSE) at HLabel.c:203
#1 0x0804a1be in main (argc=3DCannot access memory at address 0x648
) at HLRescore.c:448
Update GetLabId(char *name, Boolean insert) in HLabel.c to throw error whenever char *name is NULL. Set default values to startWord and endWord in HLRescore.c CLOSED patch
17 Mar 2009 Vlad Magdin I have discovered random behaviour in HDecode when running on a 64-bit Linux system. I have isolated a test case, which gives two different results if run several times. This same test case does not produce different results when running on a 32-bit system. On my 64-bit system, I have tried running HDecode that was compiled on the same 64-bit machine, as well as code that was compiled on a 32-bit machine. In order to compile on the 64-bit platform, I installed the following libraries: libc6-dev-i386, libx11-dev, gcc-multilib. On the 64-bit system, code was compiled with the m32 option. Compiling with the m64 option lead to pointer truncation resulting in runtime errors. The test case can be downloaded at : link and the "" contains the HDecode command. Cannot re-produce the errors claimed. Statically compiled binaries did not show any problems. Off the list until new evidence emerges. CLOSED -
13 Mar 2009 Daniel Povey Just FYI, below describes various configuration issues I had: compiling on cygwin for windows.
  • Ran ./configure --enable-trad-htk but this appeared to not work as it still installed in /usr/local/bin
  • HGraf.c had errors as XWin includes not installed -- configure did not notice? Replaced it myself with HGraf.null.c
  • Compiled HTKLib with warnings (isnan, popen, pclose not declared). isnan is in ieeefp.h on cygwin -- fixed this by adding it in HShell.h under #ifdef CYGWIN. Could not fix the problem for popen and pclose -- they seem to be declared in the header stdio.h
  • HTKTools did not compile as -LX11 failed (configure problem?) Not needed so I am removing it from Makefile... (just removing xHSLab from PROGS)
(On 16 Mar 2009: I discovered that the reason popen doesn't seem to be declared is because of the -ansi flag. In cygwin it's not declared in strict-ansi mode.)
- OPEN -
06 Mar 2009 Junichi Yamagishi I found a small bug of HDecode. In the HDecode/HDecode.mod, a heap named 'modendHypHeap' is created by using CreateHeap if both dec->modAlign and MODALIGN are true. However, in the garbage collection of HDecode, the heap is utilized if MODALIGN is true regardless of dec->modAlign. (continued...) - CLOSED in HTK 3.4.1 -
04 Mar 2009 Roy Wallace I've found that HCopy behaves unexpectedly when coding waveform files with certain sample rates.=A0Specifically, the sample period is rounded off to the nearest multiple of 100ns units, which causes problems. The number of 100ns units per sample is given by 1E7 divided by the sample rate of the WAV file.=A0For a 16000 Hz file, this is=A0625. However, for a 22050 Hz file, this is=A0453.5147 (i.e. not a whole number).=A0HCopy rounds this off to 454 (as shown in output below). (continued...) - OPEN -
04 Mar 2009 Roy Wallace I am creating a phone lattice with HDecode, using the parameter -n i, i.e. "Use i tokens in each state to perform lattice recognition." It's my understanding that each node in the resulting lattice should have, at most, i incoming paths. However, looking at the resulting lattice, this appears to be the case for all nodes except the last node, with label , which has many, many more incoming paths (e.g. 10 to 50 times the value of i). This occurs for any reasonable value of i, e.g. 1, 5, etc. (continued ...) Not a bug. CLOSED -
16 Feb 2009 Li Peng I found a bug in the file HLVRec.c, line 64:
dec->tempTS = (TokenSet **) New (&dec->heap, N * sizeof (TokenSet *));
the number of pointers of which the memory is allocated should NOT be N, but N+1, otherwise the following codes in line 487-488 will course an out of boundary error.
for (i=1; i <= dec->maxNStates; ++i) {
dec->tempTS[i] = NewTokSetArray (dec, i);
- CLOSED patch
28 Jan 2009 Heiga Zen I just found one more tiny bug: -b option exists in HERest but not listed in the help message -b option does really exist, however, it initialises a string variable (scriptFile) which is not used anywhere else. Removed. CLOSED patch
3 Jan 2009 Mark Gales Accumulation of an outer product is performed when the first element of the corresponding accumulator equals zero in HAdapt.c:UpdateAccCache():l1035 Add flag to AccCache structure. Keep track of reseting bTriMat. CLOSED patch
Feb 2009 Federico Flego There is a memory deallocation problem with accumulator cache which becomes apparent when a large number of transform is in use/estimated. - OPEN -

HTK-Developer mailing list (December 2006 - September 2008)

Date Author Description Response Status
5 Dec 2006 Anupa Beharrysingh I am using your software, HTK v3.3 and ATK v1.4.1, on both windows 2000 and XP platform. I have encountered two (2) problems thus far with the software: 1) In using the HSLab function, the .sig file is generated but, the .lab file is not. Furthermore, the function prompt sticks when attempting to save the .lab file and no other command responds after that and the prompt has to be closed. 2) I have used HParse function together with my gram.txt file to create the .slf file, which does generate. However, when I attempt to use this file in the ATK software errors are generated saying that the words are not in the dictionary. When I manually create a grammar file of .slf format the software works perfectly. There are known bugs in ATK 1.4.1 regarding the use of slf's with subnetworks. (Not enough information reported to solve the claimed bugs. In HTK 3.4 label files can be saved without any problems.) CLOSED
2 Jan 2007 Lawrence Wujanto In the latest HTK release, htk_htklib_nt.mkf and htk_htktools_nt.mkf seem to have been converted into windows text files from the HTK3.3 versions, and this upset nmake (syntax errors). Reverting to the older makefiles from HTK3.3 seems to solve the problem in my case (Xp, Visual studio 2003). I know that there have been problems with the windows makefiles provided with 3.4 when used with recent versions of visual studio. I've made a set of new makefiles (including one for HDecode) in the following package on our web/ftp site: Or these URLS: http or ftp CLOSED
19 Jan 2007 Arnab Ghoshal I found an inconsistency in the way the IOFilters are used with baseclasses and regression trees in HTK 3.4. Since the base and regression classes are technically a part of HMM definition, I think HMMDefFilter and HMMDefOFilter should be used while reading and writing the corresponding files. This is not always the case. For example, in the RegClassesCommand() function in HHEd.c, the base classes (as well as the regression trees) are printed with NoOFilter. But when LoadBaseClass is used to load the same files, it ultimately ends up calling HModel:InitScanner, which uses the HMMDefFilter for reading the macros. This generates an error message when running the RC command in HHEd together with an IOFilter like gzip. This can be fixed by using the HMMDefFilter and HMMDefOFilter consistently while reading and writing the base class and regression tree macros. HHEd.c has been modified to reflect that an output filter sometimes does exist. CLOSED
19 Jan 2007 James Nealand I have found a couple of minor bugs in the handling of frame durations other than 10ms in HDecode. The files affected are HDecode.c (and HDecode.mod.c) and HLVRec-traceback.c. (continued...) - CLOSED
22 Jan 2007 James Nealand For the case where there are words in the vocabulary that are missing from the ARPA n-gram, the unigrams[pronid] value is not initialised. Since it looks like there is no support for having an unknown word class, I propose initialising the array to be NGLM_PROB_LZERO.(continued...) - CLOSED
19 Jul 2007 Heiga Zen I found that Vector vv is not disposed in HMath.c:LUDecompose(). It may not cause any problem, but I think they should be disposed within this function. Attached patch just frees this vector at the end of LUDecompose().(continued...) - CLOSED
2 Aug 2007 Arlindo Veiga The tools HMMIRest have a little bug. It does define two times the variable "minVar" (continued...) Corrected in the pre-release version of HTK 3.4.1 CLOSED
9 Jan 2008 Heiga Zen TYPO: I found a minor typo in HERest.c. The following lines:
printf(" -u tmvwap update t)rans m)eans v)ars w)ghts tmvw\n");
printf(" a)daptation xform p)rior used \n");
printf(" s)semi-tied xform \n");

should be:
printf(" -u tmvwaps update t)rans m)eans v)ars w)ghts tmvw\n");
printf(" a)daptation xform p)rior used \n");
printf(" s)semi-tied xform \n");
29 Feb 2008 Rick Cai I met a problem in training word tri-gram. I found that HTK LM training tool would set the probability of sentence start to zero. (continued...) Not a bug. See HTK book, page 213 paragraph 2. CLOSED
25 Mar 2008 Antoni Abella I have found a minor bug when mixing up with HHEd "MU" in HTKv3.1. The bug sets RCLASS indexes to PDFs when mixing up (in my case, the source MMF does not have regression classes). The problem appears in "HUtil.c:CloneMixPDF" since the "rClass" attribute from the target mixture is not initialised. The problem is fixed by adding the line below in "CloneMixPDF": t->rClass = s->rClass I just wonder whether this bug is relevant to version 3.4 because the affected code is the same as the version 3.1 one. Neither HTK 3.4 or HTK 3.1 contain rClass parameter inside the MixPDF structure. Possibly obsolete bug. CLOSED
29 Apr 2008 Annamaria Mesaros HHEd in version 3.4 gives me the warning 'No mixtures to increase' and the resulting hmms are identical with the original ones. In version 3.3, for the exact same command, the resulting hmms have the number of mixtures increased. (continued...) According to diff output from HHEd.c, HUtil.c and HModel.c none of code updates directly or indirectly affects the mixture incrementing procedure. More data is needed to solve this problem. CLOSED
22 May 2008 Heiga Zen I found a bug in HTKBook (continued...) - CLOSED
17 Jun 2008 Junichi Yamagishi I found a function of HAdapt (named CopyLinXForm) did not copy a vector for semi-tied covariance to a new output transform. (continued...) Corrected in the pre-release version of HTK 3.4.1 CLOSED
17 Jun 2008 Ravi Mangal The issue is that the parameter values generated by HCompV show sensitivity to the order in which the input files, to be used for computing the parameters, are listed in .scp file. The sensitivity has been enough to affect my speech recogniser results. (continued...) This problem probably relates to single precision floating-point numbers used during the global variance calculation and has been previously reported. Since it is usually used as the first step during training the influence of it should be marginal if not then further training needs to be done. CLOSED

HTK-User mailing list (December 2006 - January 2008)

Date Author Description Response Status
15 Jan 2007 Heiga Zen I think config.guess and config.sub scripts in HTK-3.4 are old. After replacing them by the latest ones, running autoconf (remake configure script), I could compile HTK-3.4 successfully on cygwin. You can download them from config.guess and config.sub - CLOSED
12 Apr 2007 Jason Lilley First, the documentation inconsistency. The README file in the HTKDemo directory lists what should be in that directory. Among other things, it says that my /HTKDemo should contain the following directories: accs/, hmms/, proto/, and test/. But all 4 of these directories are missing.continued... I think it's simply (1); you just have to create those directories manually, and after that, HTKDemo would run as it should (like what you observed). We ran into exactly the same problem a while ago, and finally solved it by manually creating the directories which runDemo asks for. Regarding the remaining possible causes you mentioned: (2) If 'make'-ing of HTK Lib/Tools went smoothly without error message, then HTK has already been installed correctly. Installing htk-samples involves only unzipping/untarring the files, so nothing should go wrong during the process. (3) runDemo is not erroneous; it's simply that runDemo assumes those directories exist -- there's no attempt to create them in that script. And as such, possibilities (4) and (5) can be ruled out as well. Your HTK installation seems okay to me, as runDemo eventually generated the correct figures (accuracies). CLOSED
17 Oct 2007 Tony Robinson I'm using HBuild to write a network for HVite that includes a single !NULL node (for the backoff). If I have a pronunciation for !NULL in my dictionary then HVite builds a different network than if !NULL does not have an entry in the dictionary (with associated differences in decodes and WER). This has to be wrong, the backoff should be a NULL node and not consume any frames of audio, therefore the network built with it should ignore any pronunciation for !NULL.I don't recall seeing this bug discussed. I'm interested in the details of the networks built in both cases, does anyone have a clue as to what is going on here? A warning message added when the supplied dictionary contains pronunciation for !NULL entry. CLOSED
14 Dec 2007 Nagendra K Goel I started getting the "Uninitialised memory heap" error from HDecode. So I fired up the debugger and located the source of error in Hamming window generation. Therefore I have Patched HDecode code to include InitSigP(); Instruction right in the beginning of main() in HDecode.c. After that initialisation the Lattices and the MLF were generated. - CLOSED

Internal reports

Date Author Description Response Status
24 Nov 2008 Yifan Zhang This patch fixes adding third order to features which have accelerations already in place.patch Corrected in the pre-release version of HTK 3.4.1 CLOSED
24 Nov 2008 Uwe Jost I believe there is s very minor bug in HResults (confusion matrix output, see comment below). So in some cases, it might not output some deletions if this was the only confusion for the particular token.continued... Following the provided code a configuration parameter MAXWORDLEN with a default value of 5 has been introduced. CLOSED
24 Nov 2008 KK Chin HVite patch to allow model marking patch Support for phone alignments can be turned off/on by reseting/setting PHNALG in a Makefile CLOSED
5 Dec 2008 Marcel Katz Bug fix for reading multiple lattices with HMMIRest.c (source code) - CLOSED

Release bug fixes and support code

Date Author Description Response Status
3 Jan 2008 Mark Gales Support for rescoring lattice masks in HDecode.c:DoRecognition():l958 - CLOSED
3 Dec 2008 Anton Ragni Frame duration initialisation using constant (100,000 to make it 10ms) instead of HTK 3.4's sampRate in HLVRec.c:InitDecoderInst():l456 - CLOSED
2 Dec 2008 Mark Gales During HMM parameter adaptation accumulation of statistics of block tridiagonal matrices in HAdapt.c:AccBaseTriMat():l1144, in case where a parent transformation exists, is done based on original parameters, instead of adapting them first using that parent transformation. This is currently inefficient as it is only necessary to change the model parameters if the current and parent transforms are different and the covariance matrix is being altered. The current implementation is inefficient. CLOSED
3 Jan 2008 Mark Gales During semi-tied transform estimation log-likelihood calculation of the objective function in HAdapt.c:GetSemiTiedLike():l2488 is incorrect. Since G is a matrix we have to accumulate the likelihood for each row and column element. - CLOSED
3 Jan 2008 Mark Gales Added support for selecting nuisance dimensions without sorting them according to the Fisher score in HAdapt.c:InitSemiTiedFR():l2845 during semi-tied transform estimation. - CLOSED
3 Jan 2008 Mark Gales Deallocation of allocated memory in HAdapt.c:UpdateSemiTiedVFloor():l3193 - CLOSED
3 Jan 2008 Mark Gales During semi-tied transform estimation the global covariance matrix is not calculated if the number of nuisance dimensions is smaller or equal to 0 in HAdapt.c:EstSemiTXForm():l3400 - CLOSED
28 Nov 2008 Ahmed Ali A defunct component issue during HLDA transform generation
In the meantime an inelegant solution is to alter SetIndex in HModel.c to a version that doesn't count defunct components
Mostafa Ali reported the same error to the HTK-Developer mailing list on 17 Jan 2008 with no response.
3 Jan 2008 Mark Gales During semi-tied transform estimation if there are multiple baseclasses and a semi-tied transform is already being used a variance floor of the semi-tied transform to be estimated has to be updated from the global covariance not from the average state variance. - CLOSED
3 Jan 2008 Mark Gales During semi-tied transform estimation if parameter SEMITIEDVFLOOR is not set to TRUE then the variance floor of the estimated transformation is set to NULL in HAdapt.c:EstSemiTXForm():l3392. - CLOSED
3 Jan 2008 Mark Gales Update to HAdapt.c:CopyLinXForm():l4100 to reflect that the semi-tied transform does have a variance floor with no regard to the value of SEMITIEDVFLOOR parameter (see previous bug fix). - CLOSED
1 Oct 2008 Mark Gales During output probability calculation in HFBLat.c:Setotprob():l853 in case of multiple streams their probability was calculated but always set as the probability of the first stream hence missing all the values except for the last stream (set as the probability of the first stream). - CLOSED
30 Mar 2007 Mark Gales Added definition of NAN for WIN32 architecture in HMath.h:l28. - CLOSED
3 Dec 2008 Mark Gales Added initialisation to a pointer in HModel.c:GetMixPDF():l1667 - CLOSED
11 Sep 2007 Mark Gales Intermediate parameter kind is used to obtain the total number of components of the parameter vector instead of the source parameter kind in HParm.c:AddQualifiers():l1645 - CLOSED
3 Dec 2008 Mark Gales Added support of semi-tied mixture models when mixture cloning is performed. - CLOSED
22 May 2007 Mark Gales Increased the maximum number of pronunciations per word in HDMan.c:l63 from 200 to 400. - CLOSED
15 Dec 2006 Mark Gales Added support for rescoring lattice masks in HVite.c:DoAlignment():l854 analogous to HDecode - CLOSED
9 Mar 2007 Mark Gales Added global constant saveHMMSet set by default to TRUE to HHEd.c:l130 to control whether given (and possibly modified) HMM set will be saved or not at the exit. - CLOSED
9 Mar 2007 Mark Gales During the split of observation vector into n independent streams if the variance floor was set then the slicing of the vector was also performed for the last stream in HHEd.c:SplitStreamCommand():l4552. - CLOSED
9 Mar 2007 Mark Gales When the regression class parameter is supplied to HHEd.c no HMM set saving is performed by setting saveHMMSet to FALSE. - CLOSED
3 May 2008 Mark Gales Global variable minVar is defined twice in HMMIRest.c:l211 - CLOSED
27 Jan 2009 Mark Gales A bug in HParm fails to load and update a transformation specified not as an XForm but via parametrisation macros during single-pass re-training with HLDA transform - CLOSED
27 Jan 2009 Heiga Zen In HAdapt.c if the number of baseclasses is large, then xform estimation becomes very slow. This problem is related to UpdateBaseAccs(). (continued) - CLOSED
Feb 2009 Federico Flego A memory deallocation problem with observation cache. - CLOSED
6 Mar 2009 Junichi Yamagishi In the HDecode/HDecode.mod, a heap named 'modendHypHeap' is created by using CreateHeap if both dec->modAlign and MODALIGN are true. However, in the garbage collection of HDecode, the heap is utilised if MODALIGN is true regardless of dec->modAlign. This can cause the following segmentation error since this garbage collection is called at every 100 frames (by default GCFREQ is set to 100 in HLVRec.c). - CLOSED
Last updated on 26 October 2009.

Comments and suggestions to