2020年12月11日金曜日

タッチ50音ドリル、タッチABCドリルを作った

最近は自動採点付きの漢字ドリルをたくさん作ってきましたが、50音 や ABC は作ってなかったなあと思い、作ってみました。 あまりひねりはないので、単純にきちんと覚えているかどうかの確認に使うのが良いかと思います。



特色が何もないとつまらないので、発音確認できるようにしてみました。 同じようなもので手書きできない系の市販品のガジェットが 3,000〜6,000円で売られてるので、地味に使いやすいと思う。 最近は Web Speech API という便利なものがあるので、簡単に作れました。 念のため結構色々な Deep Learning モデルも試してみたのですが、英語だったらどれを使ってもイケてます。 ただ日本語は Deep Learning モデルも Web Speech API も単独音だと駄目駄目です。 そこで UTAU 音源を利用させてもらいました。


英語の書き順について

50音はやはり書き順を重視しますが、アルファベットは書き順を強要しない作りにしました。 日本だとアルファベットも書き順を強要させたがるけど、本来アルファベットには書き順がありません。 複雑な形状の漢字は綺麗に書くためのコツが必要と思いますが、アルファベットは形状も簡単なので書き順はいらないと思ってます。 筆記体にすると書き順とかぐちゃぐちゃになるしなあ。

他にも理由はあります。 AI 文字認識の観点から語ると、ひらがな/カタカナ/漢字/簡体字/繁体字 は極めて高い認識率を誇ります。 ひらがな/カタカナは98%以上、簡体字は 96% 以上 (人間は 96.13%) 出ることがわかっています。 文字種の多さから考えるとこれはかなり高い数字です。 さらに「くずし字」のような現代人では読めない文字でさえ、同じくらいの精度が出るのです。 くずし字は一見ぐちゃぐちゃに見えても、読める人が読めば見分けられるということで、地味に驚くべきことだったりします。

なぜかというとアルファベットは 92% しか認識できず、数字が混ざると 75% しか認識できない文字だからです (EMNIST で検証)。 筆記体のせいで形状変化が大きかったり、形の似た文字が多いので、コンテキストを利用しないと文字認識できないんですよねえ。 ちなみにコンテキストを利用すると OCR では 98% の認識精度が出ます。 まあ手書き認識と微妙に差異があるので一緒にするのはよくないかも知れないけど、とにかく手書き文字の認識精度が本質的に低いことは間違いない。

つまり、ひらがな/カタカナ/漢字/簡体字/繁体字は文字単体が読み取れることが大事であるのに対し、 アルファベットは本質的に文字単体の綺麗さが重視されず、おそらくコンテキストベースでの見分けやすさが重要ということです。 このような技術的知見からも、書き順を強要する意味はあまりないように思います。

筆記体について

筆記体は複数文字を一緒に書くからこそ意味があると思うので、今回は作りませんでした。 あと筆記体のなぞり練習を作るのはけっこう難しいです。 だいたいの原因は、フォントの仕様がバラバラなところにあります。 大きさが一定なら横幅を取得してセンタリングすれば良いですし、それは実際にやってます。

ただ筆記体は文字の大きさがバラバラ、立幅も横幅も位置もバラバラだったりします。 推定はできるけど正方形に収めるのが難しい。 レンダリングを繰り返してサイズを調整するか、フォントごとに調整するか。 ついでに言えば a,h,g みたく文字ごとに表示位置が異なる問題があるため、なんか意外と面倒くさい。 初学者用のアプリなので、そこまでしなくてもいいかなあと思いました。 まずはゴシック体で綺麗に書くところからですね。

0 件のコメント: