Test Acoustic Model Using HTK

1. You need to tell HTK where all your feature vector files are located (those are the mfcc files you created in the last step).  You do this with with a script file. 

Therefore, create a file called:  test.scptest.scp

2. You also need a configuration file.  Create a file called 'config' in your 'voxforge/test' directory and add the following data:

TARGETKIND = MFCC_0_D_N_Z
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12

3. Next use HTK's HVite command to recognize the test data as follows:

a) If you created your Acoustic Model using the How-to or the the Tutorial, execute the following command:

$HVite -A -D -T 1 -H macros -H hmmdefs -C config -S test.scp -l '*' -i recout.mlf -w wdnet -p 0.0 -s 5.0 ../lexicon/voxforge_lexicon tiedlist

b) if you Adapted the VoxForge Speaker Independent Acoustic Models to your voice using the adaptation tutorial, the execute this command (because you adapted using HTK version 3.2.1, then you must use the HTK-3.2.1 version of HVite):
$/htk/htk-3.2.1/HVite -A -D -T 1 -H macros -H hmmdefs -C config -S test.scp -l '*' -i recout.mlf -w wdnet -p 0.0 -s 5.0 ../lexicon/voxforge_lexicon tiedlist

This will create the following file: recout.mlfrecout.mlf

4. Finally, run the following command to determine the actual recognition performance of the Acoustic Model:
$HResults -I testref.mlf tiedlist recout.mlf

which will display output similar to this (note: these are results for the 8kHz:16-bit VoxForge Speaker Independent Acoustic Model - build 396):

====================== HTK Results Analysis =======================
  Date: Thu Sep 14 14:11:46 2006
  Ref : testref.mlf
  Rec : recout.mlf
------------------------ Overall Results --------------------------
SENT: %Correct=60.00 [H=30, S=20, N=50]
WORD: %Corr=96.83, Acc=76.19 [H=183, D=0, S=6, I=39, N=189]
===================================================================

What this means is that:

  • for the line starting with SENT, there were 50 test sentences and 60% were correctly recognized. 
  • for the line starting with WORD, there were 189 words in total, of which 96.83% were recognized correctly.  But because Julius recognized words that are not in the audio file (i.e. insertion errors) it only gets a 76.19% accuracy rating.
  • Count definitions:
    • D - Deletion Error
    • S - Substitution Error
    • I - Insertion Error


Comments

Click the 'Add' link to add a comment to this page.

Note: You need to be logged in to add a comment!

Search

By Mona Salem - 3/22/2020 - 574 Replies

Read 1818 physical / 2361 logical HMMs
  ERROR [+8251]  ReadLattice: Word A3 not in dict
  ERROR [+3210]  DoAlignment: ReadLattice failed
 FATAL ERROR - Terminating program HVite

By Masoud - 4/25/2016 - 224 Replies

I have followed the HTKbook tutorial and voxforge.org to create the HMMs. Now, I'd like to test these HMMs with the test files.

I use this command to test HMMs with some wav files

 

HVite -A -D -T 1 -H hmm15/macros-H hmm15/hmmdefs -C config -S test.scp -l '*' -i recout.mlf -w wdnet -p 0.0 -s 5.0 dict tiedlist

My config file like this:

TARGETKIND = MFCC_0_D_N_Z

TARGETRATE = 100000.0

SAVECOMPRESSED = T

SAVEWITHCRC = T

WINDOWSIZE = 250000.0

USEHAMMING = T

PREEMCOEF = 0.97

NUMCHANS = 26

CEPLIFTER = 22

NUMCEPS = 12

test.scp contain feature vectors of my wav files that want to test.


wdnet and dict and tiedlist make according to tutorial.

Now, when I run this command I see the belowe error.

ERROR [+3219] HVite: HMM list file name expected FATAL ERROR - Terminating program HVite

What's this error and how can I fix it?

By bad result? - 3/26/2016 - 262 Replies

hi

can any one help me plz?

I used the recognizer to recognise monophones model as following :

HResults -t -I testref.mlf ( tiedlist)  recout.mlf

instead of (tiedlist) I used 

HResults -t -I testref.mlf monophones1  recout.mlf

 

before this step I used gram1,wdnet1 which contain only one sentence from prompotstest.....

i defined gram1 as following :

$WORD= dubay  tuxaTiTu ltazwydi rijAli  AlOiTfA` biOjhzpi TyrAnK  maHmwlp ;

 

 ( {SENT-START} <$WORD> {SENT-END} )

and I;ve got this bad result?
====================== HTK Results Analysis =======================
  Date: Sat Mar 26 19:15:58 2016
  Ref : testref1.mlf
  Rec : recout1.mlf
------------------------ Overall Results --------------------------
SENT: %Correct=0.00 [H=0, S=1, N=1]
WORD: %Corr=0.00, Acc=-625.00 [H=0, D=0, S=8, I=50, N=8]
===========================
why?

By person - 9/21/2008 - 589 Replies

In this tutorial you are doing  the recognition by words.
Is it is possible with the same stages to do the recognition by phoneme,  of course  we change the  grammar and the dictionary
 
I tried to do that but the result (recout.mlf) was only the phoneme "sil" for each sentence in test file.
Is the problem that each sentence is begins and finished by a "sil" !!  And the rate of recognition was 2% !!!!

How to make the decoding with the phoneme in htk?? is there a forum to do that in this site web??

 

please help me and thans befor