VoxForge
hi Ken,
So, here is my understanding of the solution:
Though our training has been done on MFCC_0_D_N_Z format and we can only create MFCC_0_D format files for our testing data using HCopy, the configuration file used by HVite automatically makes the model and the test data compatible.
Is this correct?
Also, I could run HVite without any errors :D though the recognition was very poor(like pauses getting filled with words.. i hope to understand why and how to improve this).
I can also hopefully do some adaptation and compare.
Thanks a lot for your help! Really appreciate it :)
--- (Edited on 6/10/2009 11:31 pm [GMT-0500] by dsubbu) ---
>Though our training has been done on MFCC_0_D_N_Z format and we
>can only create MFCC_0_D format files for our testing data using
>HCopy, the configuration file used by HVite automatically makes the
>model and the test data compatible.
>Is this correct?
Yes, that is what it seems to be doing... but if you want official confirmation, the best place is to ask in HTK email list (or search the archives).
Ken
--- (Edited on 6/14/2009 10:12 pm [GMT-0400] by kmaclean) ---
Hi, I have encoutered the same problem and it took some time for me to figure it out. The problem is the _N qualifier: there is a line in HCopy.c that tests whether you are saving to a file and use the _N qualifier at the same time, it looks like this:
if (GetConfStr(cParm,nParm,"TARGETKIND",buf)) { tgtPK = Str2ParmKind(buf); if (tgtPK&HASNULLE) HError(1019, "SetConfParms: incompatible TARGETKIND=%s for coding", buf); }
What it means is that if you use the _N (the constant HASNULLE corresponds to _N) qualifier, you cannot save to a file (I have no idea why it is not allowed).
So the solution is either to use two configs, one that creates mfcs with MFCC_O_D (resp. MFCC_O_D_Z is possible as well) and a second one that you supply to HVite with targetkind MFCC_0_D_N_Z.
Or you could just use the config from your third post, but give it to HVite and load wavs directly without creating the mfcs.
As for the recognition errors you have I don't know, this could be due to many different reasons. I would have to see all your config and input files.
--- (Edited on 15.06.2009 09:40 [GMT+0200] by tpavelka) ---
@tpavelka: thanks for that!
and I hope to get the grip of how to train, decode and adapt first before concentrating on accuracies. I'll post if I run into problems. Thanks for the help again.
--- (Edited on 6/15/2009 4:40 am [GMT-0500] by Visitor) ---
Hi,
I followed the tutorial on speaker adaptation and managed to do supervised adaptation of the SI model from the voxforge repository. The results showed significant improvements compared the unadapted model.
Next, I attempted to do unsupervised adaptation using HVite and the same set od data to compare the 2 scenarios. When I ran this command, I got the following errors though I have specified the list of HMMs in the tiedlist
____________________________________________
>> /home/user/htk/bin.linux/HVite -S adapt.scp -H hmmdefs -H macros -K trans.tmf -k unknown mllr -j 1 -i results -w wdnet dict tiedlist
ERROR [+3219] HVite: HMM list file name expected
FATAL ERROR - Terminating program /home/user/htk/bin.linux/HVite
____________________________________________
when i run it without the -k, i get this message
___________________
>>/home/user/htk/bin.linux/HVite -S adapt.scp -H hmmdefs -H macros -K unsupervisedAdapt mllr -j 1 -i results -w wdnet dict tiedlist
ERROR [+3219] HVite: User identifier expected when saving a TMF
FATAL ERROR - Terminating program /home/user/htk/bin.linux/HVite
__________________
can anyone pl. tell me what I am doing wrong here and how to use HVite to do unsupervised adaptation?
@tpavelka: i think i have gotten around the terrible recognition results problem here(or atleast it appears so)
thanks in advance
Cheers!
--- (Edited on 6/16/2009 4:48 am [GMT-0500] by Visitor) ---
Hi,
I had similar problems with figuring out how to run the adaptation. You can find my solution + discussion here.
--- (Edited on 16.06.2009 12:06 [GMT+0200] by tpavelka) ---
Oops, sorry, I just noticed you already have the supervised part figured out. Unfortunatelly I haven't tried unsupervised adaptation so I can't help there.
--- (Edited on 16.06.2009 12:49 [GMT+0200] by tpavelka) ---
--- (Edited on 16.06.2009 12:49 [GMT+0200] by tpavelka) ---
Hi tpavelka,
These commands present in that thread caught my eye immediately
__________________________________________
HERest -C $config -C scripts/config.global -S $trainlist -I MLF/aligned.mlf -H $hmmdir/$dir/macros -u a -J $hmmdir/classes -K $hmmdir/xforms mllr1 -H $hmmdir/$dir/hmmdefs -h *\\%%%%*.mfc tiedlist
HERest -a -C $config -C scripts/config.rc -S $trainlist -I MLF/aligned.mlf -H $hmmdir/$dir/macros -u a -J $hmmdir/xforms mllr1 -J $hmmdir/classes -K $hmmdir/xforms mllr2 -H $hmmdir/$dir/hmmdefs -h *\\%%%%*.mfc tiedlist
___________________________________________
Since there are MLF files present for the adaptation data, it becomes supervised adaptation right?
the HTKbook says that the HVite tool must be used for unsupervised adaptation(i.e. where the adaptation data does not have transcriptions or prompts).
So, my question is how to use HVite for this purpose. I had tried to do it a lot of times but ended up with the error messages I showed in my earlier post.
If anyone has done experiments on this(using HVite for unsupervised adaptation) before, it would be great if you could share the course of action followed. Thanks a ton!
Cheers!
--- (Edited on 6/16/2009 5:51 am [GMT-0500] by Visitor) ---