2022年8月8日月曜日

漢字読み取り音読を作った

漢字読み取り音読を作りました。 出題された漢字を音読することで回答できる、漢字練習アプリです。



タブレットがあれば 手書き漢字読み取り も良いですが、 スマホだと UI が厳しいので音読できると良いなと思って作りました。 手で書いたほうが頭に入る気がしますが、解答可能速度はこちらのほうが圧倒的に上です。 海外の日本語学習者の方が、発音の練習に使うことも意識して、多言語対応もしています。

以前作った ダジャレ音読早口音読 の内部で使っている、読み方解析器を使っています。 そのまま転用できるかと思ったのですが、データのパターンが数百から数万まで増えるとさすがに見逃していたバグが出てきたので、きっちり直してからリリースしました。 こういったゴリゴリ系のアルゴリズムは何百回もテストしながら作る必要がある上、最近ほとんど見かけなくなったので割と苦労しました。

問題の解決には、結構色々な基盤ライブラリの改善が必要でした (下)。 ちなみに応用アプリのほうもすべて更新済みです。 形態素解析の仕組みを隅々まで理解するのは大変なので、やはりクロスチェックしないとなかなか良いものは作れないですね。 そしてチェックすればするほど SudachiDict の使いやすさが際立ちます。
読み方解析の精度は 100% なのですが、音声認識で特有の認識ミスが発生するので、多少精度が落ちます。 たとえば「量産→リョーサン」のように「ー」に書き換えてくるケースはそれなりにあって、これは認識に失敗します。 あと形態素解析辞書には登録されていない、間違いの読み結果「差し出し→差し出」を返却されると認識に失敗します。 間違い方は 以前書いた記事 とだいたい一緒です。 体感認識精度は 95% でした。

「ー」の問題は、今回のような単語単位のマッチングなら先頭以外の「あいうえお」を「ー」に変換して完全一致検索すれば良さそうだったので、対応しました。 これで体感認識精度は 98% くらいになったような気がします。 音声認識の間違いは SudachiDict でわざと使っていない誤用ルールを使えば部分的に対応できるかも、 ただ完璧は難しそうだし、面倒くさそう。 許せる認識率にはなっているので、ひとまずは良いかな…。

最近の音声認識技術は適当に考えても読み方解析は弱いので、個人的にはひらがな/カタカナで返却する API が欲しいところです。 ただ日本語の優先度は低いでしょうから期待はできません。今回作ったような仕組みで対応するのが一番良さそうです。 日本語の音声認識の応用は、簡単そうに見えても作り込むのが割と難しいです。

0 件のコメント: