PocketSphinxを「無理やり」日本語で使う

やりたかったこと

Androidアプリをスマートスピーカーのように「こんにちは」という音声を認識したら何か処理を始めるようにする。

音声認識にPocketSphinxを選んだ理由

トリガーとなる音声を認識するために連続音声認識をする必要がありますが、Android組込のSpeechRecognizerや、精度が高いGoogle Cloud Speech APIなどは時間制限がありました。ので音声認識エンジンを別途組み込む事にしました。

PocketSphinxとは、フリーの音声認識エンジンです。
音声モデルが英語のものしかないため、本来は日本語には使えません。Juliusが日本語に対応しているので、一般的にはそちらが使われます。

しかしJuliusはネットワークから使用するには、ADINNETで音声を送信して結果は別で受取り...など面倒な事が多く、また、Androidに組み込むのも手軽にはいかなさそうでした。更にリファレンスを読み解くには多くの予備知識が必要そうです。

一方、PocketSphinxは公式がAndroidのサンプルを公開しており、気軽に実行できました。書かなければならないコードも分かりやすいです。

「無理やり」日本語を認識させるためにやったこと

PocketSphinxは単語と発音記号の対応をdictファイルから読み込みます。

 hello HH AH L OW

日本語の発音→英語の発音をそれらしく書き換えてdictファイルに追加します。

konnichiwa K OW N N IY CH IY W AA

うまく認識されない場合は、konnichiwa(1)のように他の発音を追加するか、しきい値を上げます。