alphacep / vosk-api

Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node
Apache License 2.0
7.57k stars 1.06k forks source link

Pass set of words to be recognized only does not work as expected #1335

Open asperator7 opened 1 year ago

asperator7 commented 1 year ago

Hi i would like to "concentrate" the recognition on certain words which are already part of the english/german models. E.g the word "Whatsapp" is often recognized as "what's up". Its better for me to get nothing returned than "what's up". I know that I can replace 'what's up' with 'Whatsapp' in postprocessing, but this defies the purpose.

I found in previous issues the following suggestions e.g. :

KaldiRecognizer(model, 16000, "zero oh one two three four five six seven eight nine whatsapp")

and

KaldiRecognizer(model, wf.getframerate(), '[ "whatsapp", "[unk]" ]')

So how i understand, this way you only get one of the words provided or nothing: https://github.com/alphacep/vosk-api/issues/107#issuecomment-756640282

This way i was hoping

A. to get a word e.g. "whatsapp" more "frequent" in my recognition result as it's specifically specified without the need to finetune the model B. never the word "what's up" in my results as i didn't specify it in the set of words C. better performance (?) D. load the same model only once and only pass the words "to be concentrated on" to the KaldiRecognizer function with every request

But in my case i get all possible words of the model recognized instead of the provided only. It's pretty much the same as if i didn't provide any words at all. What am i doing wrong here?

ilyamiro commented 6 months ago

@asperator7 Hello, have you found the solution? I have the exact same problem and i wonder if it is possible