Thanks @baconator for quick reply.
I have one question if loss is less as well as validation loss also then why actual prediction result too much poor ?
Yes, 34% Word Error Rate, but your CER is pretty much good (7% Character Error Rate). Try using a Language Model to fix your model’s grammar errors. But, overall, try to have more test samples. Try first something like: 70% of your total data is for train, 15% is for dev and 15% is for test.
Use KenLM to build your own language model. Simply put, if you just want to recognize 10 words, only those should be in there and DeepSpeech will only find them. So by limiting or extending the language model you control what words will be recognized.
And you will probably need more training material.
Yes it is possible. For that to happen, you have to create a .txt file with those 300 commands in differents lines.
Then, you clone the KenLM from github.com/kpu/kenlm and build it. After that, there’s a executable bin/lmplz: the output will be a .arpa file. In your case I will recommend to run something like this:
bin/lmplz -o 1 < text.txt >text.arpa
the -o argument provides the order of the ngram. In most cases should be bigger, but if you just use commands, it should be just unigrams.
After that, transform your .arpa to a .binary. You can find how to do this in the same repo.
Try to change --o 3 with --o 1, just a recommendation.
So, you already have lm.binary from your vocab.txt right? I assume your vocab.txt is the file with your 300 commands and not your alphabet.
That lm.binary file is the one you provide as an argument as of version 0.6.1 of DeepSpeech. Something like this:
and other parameters like the path of your saved model.
The last thing you need to build in 0.6.1 is your trie. For that you have to run a executable file called generate_trie, which you can compile if you follow this:
Remember to checkout to the tag 0.6.1 to use languages models like this.
Yes, you only need, as I said, the trie, is another file that you need to generate by yourself from the lm.binary that you created. Then, given the size of you data, I would recommend you to train with something like -n_hidden 1024 --dropout_rate 0.3 --learning_rate 0.0001.
Respect with the order of your lm, I didn’t know that you can’t use order 1. Did you try with --o 2 ?
Remember that is very important to create your own trie for your own language model binary.