I'm new to this, and I've started deviating from the basic example. I'd like
to have a system based on MFCC with a total of 31 filters (to keep 20 after
the Discrete Cosine Transformation).
I've changed the feat.param file to have -ncep 20.
I've also the config file to $CFG_VECTOR_LENGTH = 20;.
My features seem to have extracted fine with a length of 20, and I was able to
train the system.
Testing it however I get this error.
FATAL_ERROR: "kbcore.c", line 640: Feature streamlen(39) != mgau streamlen(60)
Now this is likely due to my CFG_VECTOR_LENGTH being 20 I think. as normally
it would be 13x3=39 (MFCCs and deltas). Now my question is should I have left
$CFG_VECTOR_LENGTH = 13; and why was it able to train with it set improperly?
You need to understand that ncep configures number of cepstrum floats in
output. Vector length is number of features in trainer input. Ideally they
should match.
Testing it however I get this error.
FATAL_ERROR: "kbcore.c", line 640: Feature streamlen(39) != mgau streamlen(60)
This is because test script doesn't respect CFG_VECTOR_LENGHT configuration
variable. You need to modify the script s3decode.pl to fix the problem.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Now this does get the decoding going, but I'm running into another issue:
$CFG_FEAT_TYPE = "MFCC_19_0";
Process started on: 14/02/2012 at: 15:42:32.56
MODULE: DECODE Decoding using models previously trained
Decoding 8700 segments starting at 0 (part 1 of 1)
0%
This step had 1 ERROR messages and 0 WARNING messages. Please check the log
fil
e for details.
Aligning results to find error rate
word_align.pl failed with error code 65280 at scripts_pl/decode/slave.pl line
17
2.
I think it has something to do with the .ug.lm.DMP file but I don't really
understand how the file gets generated. I've simply copied one out of an
existing project. Could anyone give me some information on it or point me in
the right direction?
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here's an example result before it crashes:
*** one TWO (AH-12A)
ONE one ONE (AH-111A)
Words: 2 Correct: 1 Errors: 2 Percent correct = 50.00% Error = 100.00%
Accuracy = 0.00%
Insertions: 1 Deletions: 0 Substitutions: 1
Where a normal result would look like this:
one one one (AH-111A)
one one one (AH-111A)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy
= 100.00%
Any idea what can cause the first result to grab two different tags?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi there,
I'm new to this, and I've started deviating from the basic example. I'd like
to have a system based on MFCC with a total of 31 filters (to keep 20 after
the Discrete Cosine Transformation).
I've changed the feat.param file to have -ncep 20.
I've also the config file to $CFG_VECTOR_LENGTH = 20;.
My features seem to have extracted fine with a length of 20, and I was able to
train the system.
Testing it however I get this error.
FATAL_ERROR: "kbcore.c", line 640: Feature streamlen(39) != mgau streamlen(60)
Now this is likely due to my CFG_VECTOR_LENGTH being 20 I think. as normally
it would be 13x3=39 (MFCCs and deltas). Now my question is should I have left
$CFG_VECTOR_LENGTH = 13; and why was it able to train with it set improperly?
Note: I've found a similar thread, but wasn't certain I was reading into it
properly.
https://sourceforge.net/projects/cmusphinx/forums/forum/5471/topic/4728868
Thanks,
Nathan.
Also I should mention if I switch back to $CFG_VECTOR_LENGTH = 13;
I can no longer train getting:
FATAL_ERROR: "........\src\libs\libio\corpus.c", line 1658: Expected mfcc
vector len of 13
Hello Nathan
You need to understand that ncep configures number of cepstrum floats in
output. Vector length is number of features in trainer input. Ideally they
should match.
This is because test script doesn't respect CFG_VECTOR_LENGHT configuration
variable. You need to modify the script s3decode.pl to fix the problem.
Hi Nickolay,
Thanks for the reply.
So if vector length is the number of inputs for training, then I was right to
set it to 20? So it doesn't have so much to do with MFCCs.
I'll look into modifying s3decode.pl
If you modified ncep in MFCC you also need to change vector length too.
I'm not sure about the value of 20 in particular, it depends on what do you
want to archive.
For anyone looking to do this aswell. It's a very simple change to get this to
work.
Simply add these two lines after:
my $rv = RunTool('sphinx3_decode', $logfile, $ctlcount,
-senmgau => $statepdeffn,
-hmm => $hmm_dir,
add:
-ncep => $ST::DEC_CFG_VECTOR_LENGTH
-ceplen => $ST::DEC_CFG_VECTOR_LENGTH
Now this does get the decoding going, but I'm running into another issue:
$CFG_FEAT_TYPE = "MFCC_19_0";
Process started on: 14/02/2012 at: 15:42:32.56
MODULE: DECODE Decoding using models previously trained
Decoding 8700 segments starting at 0 (part 1 of 1)
0%
This step had 1 ERROR messages and 0 WARNING messages. Please check the log
fil
e for details.
Aligning results to find error rate
word_align.pl failed with error code 65280 at scripts_pl/decode/slave.pl line
17
2.
I think it has something to do with the .ug.lm.DMP file but I don't really
understand how the file gets generated. I've simply copied one out of an
existing project. Could anyone give me some information on it or point me in
the right direction?
Thanks.
Here's an example result before it crashes:
*** one TWO (AH-12A)
ONE one ONE (AH-111A)
Words: 2 Correct: 1 Errors: 2 Percent correct = 50.00% Error = 100.00%
Accuracy = 0.00%
Insertions: 1 Deletions: 0 Substitutions: 1
Where a normal result would look like this:
one one one (AH-111A)
one one one (AH-111A)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy
= 100.00%
Any idea what can cause the first result to grab two different tags?
Oh how I wish I could edit posts. My transcription file doesn't line up. I'll
be fixing that.
Great it's resolved