VoxForge
Hi everybody,
I would like to evaluate speaker adaptation on a digits corpus in German. I have trained using HTK, a monophone system on another german corpus which work quite well in term of accuracy on the digits corpus. But I have problems in making the adaptation process (MLLR) to run on this corpus ...
So I have multiple questions:
- In the doc and examples, most of the examples for speaker
adaptation given are with triphones models ... I suppose that adapting context independent monophone acoustic models is also possible ?
- If yes, here are the steps that have been followed (following htk doc):
1- training of a 64 mixture monophone system (43 german phones - 3 states per phone - 64 mixture per states)
HERest.exe -B -D -T 4 -L new-seg -S mfcc-list-all.scp -s
statphones -H .\hmm01\hmmdefs -M hmm02\ listphones.txt
2- Tree clustering using following command:
HHEd.exe -B -T 4 -H .\hmm02a\hmmdefs -M classes regtree.hed listphones.txt
where regtree.hed is:
LS "statsphone"
RC 32 "rtree" {sil.state[2-4].mix}
in the class directory I have a file named global
~b ``global''
<MMFIDMASK> *
<PARAMETERS> MIXBASE
<NUMCLASSES> 1
<CLASS> 1 {*.state[2-4].mix[1-64]}
This is creating 3 different files which seems quite ok :
rtree.base; rtree.rtree and hmmdefs in the classes directory
HHEd
43/43 Models Loaded [5 states max, 64 mixes max]
LS statsphone
Loading state occupation stats
Stats loaded for 43 models
Mean Occupation Count = 59334.495429
RC 32 rtree
Building regression tree with 32 terminals
Creating regression class tree with ident rtree.tree and baseclass
rtree.base
Models
sil
1 models in itemlist
sil.state[2].stream[1]
sil.state[3].stream[1]
sil.state[4].stream[1]
Splitting Node 3, score 1.007575e+008
Splitting Node 5, score 6.008558e+007
Splitting Node 6, score 3.361824e+007
Splitting Node 2, score 2.519530e+007
Splitting Node 4, score 2.258807e+007
Splitting Node 7, score 1.867613e+007
Splitting Node 8, score 1.807741e+007
Splitting Node 9, score 1.189350e+007
Splitting Node 13, score 1.053742e+007
Splitting Node 14, score 9.306629e+006
Splitting Node 12, score 8.674780e+006
Splitting Node 16, score 7.772738e+006
Splitting Node 17, score 7.701269e+006
Splitting Node 20, score 7.331825e+006
Splitting Node 15, score 7.193971e+006
Splitting Node 19, score 5.830185e+006
Splitting Node 30, score 4.630366e+006
Splitting Node 18, score 4.581620e+006
Splitting Node 22, score 4.436380e+006
Splitting Node 25, score 4.378486e+006
Splitting Node 29, score 3.968522e+006
Splitting Node 27, score 3.646834e+006
Splitting Node 23, score 3.525451e+006
Splitting Node 32, score 3.492046e+006
Splitting Node 26, score 3.205845e+006
Splitting Node 37, score 3.171115e+006
Splitting Node 35, score 2.855839e+006
Splitting Node 24, score 2.766869e+006
Splitting Node 33, score 2.633669e+006
Splitting Node 38, score 2.627900e+006
Saving new HMM files ...
Edit Complete
3- Adaptation
HERest.exe -L adapt-lab -C config.global -S 001.scp -u a -H
.\hmm02a\hmmdefs -J .\classes -K xform mllr list-phones.txt
ERROR [+999] Components missing from Base Class list (1548 8256)
ERROR [+999] BaseClass check failed
FATAL ERROR - Terminating program HERest.exe
I have checked the following error and this seems to be due to the fact that mixture components were missing in the model; although after having checked it seems that the model is containing the right number of phones with 64 mixtures each
(running a command like cat .\hmm02a\hmmdefs | grep "MIXTURE" | wc -> gives a result of 8256 (43phones*3states*64 mixtures as expected)
I have to say that I don't understand what I'm doing wrong here ... Any help would be useful here.
Thanks for your help.
Best Regards.
--- (Edited on 8/13/2009 2:38 am [GMT-0500] by frenchfrog) ---
since 1548 = 43 * 3 * 12 i really suspect that you first followed htkbook and made global class with 12 mixtures only. then you probably updated the global but didnt rebuild something. can you check your class tree once again please?
--- (Edited on 8/13/2009 5:56 am [GMT-0500] by nsh) ---
Hi and thanks for your help.
That was my first guess (only having 12 instead of 64 mixtures) because I made plenty of test,f ollowing your advice I create a new directory and relaunch the HHed command : So you were right in your assumption.
But launching the HERest command change the error message now :
HERest.exe -L adapt-lab -C config.global -S 001.scp -u a -H .\hmm02a\hmmdefs -K xform mllr -J classes2 -T 4 list-phones
HMM Def Error: <MMFIDMASK> symbol expected in GetBaseClass at line 5/col 35/char
102 in classes2/global
ERROR [+7050] HMError:
The global filename in classes2
~b ``global''
<MMFIDMASK> *
<PARAMETERS> MIXBASE
<NUMCLASSES> 1
<CLASS> 1 {*.state[2-4].mix[1-64]}
Any idea for this last step ?
Thanks.
--- (Edited on 8/13/2009 7:38 am [GMT-0500] by Visitor) ---
OK getting to the last point ... there was a problem with '' and " in my global file ... stupid error
Now it's just a matter of finding the right mask for my mfcc files ...
HERest.exe -L .\adapt-lab -C config.global -S 001.scp -u a -H .\hmm02a\hmmdefs -K xform mllr -J classes2 -h '*\%%%_????????.mfcc' list-phones1
Using baseclass macro "global" from file classes2/global
Attached 8256 XFormInfo structures
Attached 8256 RegAcc structures
Pruning-Off
ERROR [+999] Output xform mask '*\%%%_????????.mfcc' does not match filename
z:\digits-htk\adapt-mfcc\001_stdc0001.mfcc
FATAL ERROR - Terminating program HERest.exe
--- (Edited on 8/13/2009 8:42 am [GMT-0500] by frenchfrog) ---
Y, mask matching was always a pain as well. I think you can work it out with few experiments/adjustments. Here in HTK 3.4.1 it works as expected, this mask matches this filename.
--- (Edited on 8/13/2009 4:21 pm [GMT-0500] by nsh) ---
Hello
Got it worked ... thank you very much for your help.
Best Regards.
--- (Edited on 8/14/2009 4:30 am [GMT-0500] by frenchfrog) ---
The mask works fine on windows if we use " instaed of '
--- (Edited on 12/30/2012 11:53 pm [GMT-0600] by Visitor) ---
I am trying to implement MAP adaptation in htk, but I can not find any example.
Is it enough to set the option "-u p" in HERest? Does MAP modify directly the models or does it generate transforms like MLLR? Because I can not find any transform.
Moreover.. to test the adaptation, can I use HVite normally on the model modified by MAP or should I use the transforms?
Thank you veryc much in advance!!
--- (Edited on 2/22/2013 6:04 am [GMT-0600] by Visitor) ---
I have some similiar problem while trying HLDA
The following is the syntax of the command I am running to get HLDA transform
HERest -C config -C config.hlda -S train.scp -I wintri.mlf -H
hmm15/macros -u stw -H hmm15/hmmdefs -K hmm16 -M hmm16 tiedlist
my config.hlda is as follows
HADAPT:TRANSKIND = SEMIT
HADAPT:USEBIAS = FALSE
HADAPT:BASECLASS = global
HADAPT:SPLITTHRESH = 0.0
HADAPT:SEMITIEDMACRO = HLDA
HADAPT:NUMNUISANCEDIM = 5
HADAPT:SEMITIED2INPUTXFORM = TRUE
HADAPT:MAXXFORMITER = 100
HADAPT:MAXSEMITIEDITER = 20
HADAPT:TRACE = 61
HMODEL:TRACE = 512
and global file
~b "global"
<MMFIDMASK> *
<PARAMETERS> MIXBASE
<NUMCLASSES> 1
<CLASS> 1 {*.state[2-4].mix[1-32]}
the error I am getting is
Pruning-Off
Segmentation fault
Could anyone please help me out with thi
--- (Edited on 7/3/2013 11:29 pm [GMT-0500] by Visitor) ---
What is a stats file? What exactly does it contain?
--- (Edited on 3/18/2015 1:32 am [GMT-0500] by Visitor) ---