Speech Recognition Engines

Nested
Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/14/2008 11:06 am
Views: 14193
Rating: 21

Hi all, First of all, thanks you very much for allinfo that Voxforge give to the community. I have an error in Julius v4.0 but I don't know what's the matter :

Error: voca_load_wordlist: line 1: phone "silB" not found

Error: voca_load_wordlist: line 1: phone "silE" not found

I'm using julius as an isolated word recognizer. I used to use Julian with this command :

julian -input mic -h all_words_23_hmmsdef.mmf -v all_words_23.dict -dfa all_words_23.dfa -rejectshort 150 -output 4 -progout -1pass -headmargin 50 -tailmargin 50

Now I use the option in Julius 4.0 that allow isolated word recognition :

/julius-4.0 -input mic -h all_words_23_hmmsdef.mmf -w all_words_23.dict -rejectshort 150 [....]

I tried to add silB and silE in my dictionnary, but julius still complains. Does anyone have an idea or could tell a place to find the info? Thks a lot for your help. Bruno.

--- (Edited on 1/14/2008 11:06 am [GMT-0600] by brunal2496) ---

 

--- (Edited on 1/14/2008 10:21 pm [GMT-0500] by brunal2496) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: nsh
Date: 1/14/2008 1:17 pm
Views: 310
Rating: 36

I suppose that complain means that silB is missing in .mmf file. The solution to this problem is not to add silB in the dictionary but to remove them from a dictionary and from grammar file.

 

--- (Edited on 1/14/2008 1:17 pm [GMT-0600] by nsh) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: kmaclean
Date: 1/14/2008 2:28 pm
Views: 268
Rating: 29

Hi

I vaguely remember getting this error when I was first starting out with HTK/Julius ... The Julius 3.2 manual (check the 4.0 manual to make sure this still applies) says this:

   Word Dictionary
       -v dictionary_file
              Word dictionary file (required).
 
       -silhead {WORD|WORD[OUTSYM]|#num}
 
       -siltail {WORD|WORD[OUTSYM]|#num}
              Sentence  start  and  end silence word as defined in the dictio-
              nary.  (default: "<s>" / "</s>")
 
              Julius deal these words as  fixed  start-word  and  end-word  of
              recognition.   They  can  be defined in several formats as shown
              below.
 
 
                                       Example
           Word_name                     <s>
           Word_name[output_symbol]   <s>[silB]
           #Word_ID                      #14
 
            (Word_ID is the word position in the dictionary
             file starting from 0) 

Therefore your problem might be related to the default silence start and end words in Julius - maybe change it to"silB" and "SilE".

Please let us know if this fixes it.

thanks,

Ken 

--- (Edited on 1/14/2008 3:28 pm [GMT-0500] by kmaclean) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/15/2008 9:11 am
Views: 345
Rating: 20
I tried to modify my mmf file by duplicating the HMM for "sil" and I renamed them "silE" and "silB" and I added this two word to the dictionnary : julius now launch without error but the recognition doesn't work at all : i always get something like "no survived word found".... Which means the way it did it doesn't work. Do I misunderstand what you've written?

--- (Edited on 1/15/2008 9:11 am [GMT-0600] by brunal2496) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/15/2008 9:32 am
Views: 266
Rating: 29

The fatc is that my hmm is not phoneme based but word based : I learnt the models on a labelled corpus, each label for each word (close to the yes/no tutorial). As all words where pronounciated one after and other with a pause of 2sec between, there is idea of begin and end silence. So the only one model that I have for silence is a model named "sil". So when I specify the silhead and siltail option, I get :

WARNING: m_chkparam: "-silhead" only for N-gram, ignored WARNING: m_chkparam: "-siltail" only for N-gram, ignored

Next I treid with the -wsil option, like this : -wsil sil sil sp I also added the word

SIL sil

to my dictionnary in the first line (julius was complaining about :

Error: voca_load_wordlist: line 1: phone "silB" not found

Error: voca_load_wordlist: line 1: phone "silE" not found

Error: voca_load_wordlist: the line content was: 0 [ACTIVATION] activation

) Even if I don't have a sp model, Julius now doesn't complain and launch. But the result is that recognition doesn't work, giving me a constant "input processed, but no survived word". I'm a bit confused and now I don't what else to try....

--- (Edited on 1/15/2008 9:41 am [GMT-0600] by brunal2496) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/15/2008 9:42 am
Views: 287
Rating: 27
Sorry, I don't know why the forum doesn't want to format my message as I'm trying...

--- (Edited on 1/15/2008 9:42 am [GMT-0600] by brunal2496) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: nsh
Date: 1/15/2008 10:39 am
Views: 361
Rating: 28

Why do you want to use Julius for isolated words? HVite should be enough. Btw, does it work fine for you?

Can you just share your data files - mmf, dfa and dictionary. except silB there could be a lot  of problems, say it feature extraction and so on. Try to decode mfc files you were training on to test recognition.

 

--- (Edited on 1/15/2008 10:39 am [GMT-0600] by nsh) ---

Re: Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/15/2008 11:21 am
Views: 250
Rating: 25
I want to use Julius because I'm running Julius in real-time, using it for a prototype which controls a robot in real-time by the voice. And to my knowledge HVite doesn't run in real-time. I don't think the problem comes from feature extraction because my mmf file, the dictionnary and and very basic grammar (i.e. S : COMMAND , where COMMAND is the whole dictionnary) work fine together with the old fashion way to launch recognition with Julian i.e. by specifiying in the Julius v4.0 command -h allwords.mmf -v allwords.dict -dfa allwords.dfa I was just curious if the recognition in isolated word mode works better for my purpose in Julius 4.0. Here are in attachment the dictionnary and the grammar. I have to ask if I can publish the mmf file because of legal reasons. Thanks a lot for your help.

--- (Edited on 1/15/2008 11:21 am [GMT-0600] by brunal2496) ---

all_words.voca all_words.voca
Re: Julius v4.0 : isolated word reco : phone silB not found
User: brunal2496
Date: 1/15/2008 11:23 am
Views: 247
Rating: 28
and the grammar.

--- (Edited on 1/15/2008 11:23 am [GMT-0600] by brunal2496) ---

all_words.grammar all_words.grammar
Re: Julius v4.0 : isolated word reco : phone silB not found
User: kmaclean
Date: 1/15/2008 11:50 am
Views: 529
Rating: 43

Hi brunal2496,

OK, let's backup a step to make sure I understand what is going on here ... 

Your errors were as follows:

Error: voca_load_wordlist: line 1: phone "silB" not found

Error: voca_load_wordlist: line 1: phone "silE" not found

These were in Julius v4.0, using a grammar file (not a language model).  You've compiled a *word* based acoustic model using HTK.  You've defined a silence hmm and called it "sil".

Then, as part of your grammar file (which is actually two files in Julius/Julian) you created a ".voca" file that looks something like this (see Step 1 - Task Grammar in the tutorial):

% NS_B
silB        sil

%
NS_E
silE        sil

% DIAL_V
DIAL        dial

% DIGIT
FIVE       five
FOUR        four
NINE        nine
EIGHT        eight
ONE       one
SEVEN        seven
SIX        six
THREE        three
TWO        two
ZERO       zerow

And then created a ".grammar" file that looks something like this:

S : NS_B SENTENCE NS_E
SENTENCE: DIAL_V DIGIT

And then compiled your grammar with mkdfa.pl

From Step 1 in the tutorial:

... "S" is the initial sentence symbol.   NS_B and NS_E correspond to the silence that occurs just before the utterance you want to recognize and after.   "S", "NS_B" and "NS_E" are required in all Julian grammars.

Since you've replaced <s> and </s> (the julius defaults) with "silB" and "silE" in your voca file, then I think you need to use the -silhead and -siltail parameters to tell Julius what you silence models are.  

Ken 

--- (Edited on 1/15/2008 12:50 pm [GMT-0500] by kmaclean) ---

PreviousNext