alphacep / vosk-api

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

Incorrect Japanese words recognition #1601

Open tuan-jason opened 5 months ago

tuan-jason commented 5 months ago

@nshmyrev We tested Japanese small model, which is downloadable here: https://alphacephei.com/vosk/models/vosk-model-small-ja-0.22.zip, in an Android app.

However, it seems some Japanese words are incorrectly recognized.

If we say "こんにちはKonnichiwa", it is recognized as 今日は by Vosk SDK ( Which means "today is…(Kyou ha)" .)

"今日は" doesn't mean "こんにちは" ("今日は" can be pronounced "Konnichiwa", but usually pronounced "Kyouwa".

It's expected that the words output is "こんにちは", not 今日は.

The problem seems to be that inappropriate hiragana-to-kanji conversion is taking place. However, the Vosk model does not output hiragana and then convert it to kanji, but outputs kanji from the beginning, hence making this issue happens.

There's a previous issue that we think being related here: https://github.com/alphacep/vosk-api/issues/1047

We'd like to attach a video demonstrating the issue here:

https://github.com/alphacep/vosk-api/assets/168809162/3718f5c1-d399-4472-9d45-1e90adcc4049

Could you take a look into this issue when you have some free time? We really appreciate your help.

BishopJohnson commented 4 months ago

Hi, I'm having a similar issue in a Unity app I'm working on, and I agree that it may be useful to have a Japanese model that produces the phonetics instead of the kanji, especially in some cases where the words (kanji or borrowed words in katakana) are not present in the word graph or have very minor deviations from the existing words in the word graph.

One example of these deviations I've encountered is a word like "固まった" (かたまった), which itself doesn't appear in the word graph for either the big or small models, but a similar variation, "固まっ" does appear, but then I have to worry about what the model will do with the leftover "た" if another word comes after it.

I would really appreciate it as well if it were possible to have an option to output the phonetics of what the user said instead of the kanji conversion.

aehlke commented 3 months ago

just combine it with mecab and pair it to the jmdict reading you prefer based on your own heuristics