JuliusForAndroidを動かしてみる

JuliusForAndroidを動かしてみる

作られた当時(2012年頃)はAndroidStudioがCMake、NDK-buildをサポートしていないのもあってその当時の環境構築方法を今試してみても中々うまくいかなかったです.(2012年以降に環境構築をまとめている方が見つかりませんでした.)

現在のバージョン(AndroidStudio2.2から)ではネイティブ(C/C++)コードが利用出来るため、そのやり方で起動と認証ができるようになったのでまとめます.
Android Studio 2.2 が CMake と ndk-build をサポート

ちなみに以前、ラズパイでJuliusを動かす方法についてまとめました.

JuliusForAndroidをダウンロード

以下からダウンロードします.
https://github.com/tech-sketch/JuliusForAndroid

Android端末

JuliusForAndroid>sdcardのjuliusフォルダをAndroid端末のルートフォルダ直下に配置します.

Julius階層Android

julius直下にconfファイル(辞書の読み込みなどの設定を記載)があります.
(今回は「demo-grammar-android.jconf」を使います.)
ちなみに中身はこんな(↓)感じです.使用する辞書とモデルはここに書かれています.

また、grammar直下が辞書ファイル(grammar-kitのfruitが登録されている)です.
中身を見るとなんとなくfruit の辞書だなってわかるかと思います.

ちなみに辞書の作成方法は少し前にまとめています.

そして最後にmodel直下は音響モデルが置いてあります.

Androidプロジェクト作成

AndroidStudioでプロジェクトを作成します.
ちなみに「JuliusForAndroid」のうち、使うファイルは以下になります.
・JuliusForAndroid/src/jp/co/tis/stc/juliusのJuliusActivity.java(要編集)
・JuliusForAndroid/libs/armeabiのlibjulius_arm.so
・JuliusForAndroid/res/layoutのactivity_julius.xml
・JuliusForAndroid/res/valuesのstrings.xml
・JuliusForAndroidのAndroidManifest.xml(要編集)

プロジェクトを作成したら以下の様に、「main」>「jniLibs」>「armeabi」と作成し、そこに「libjulius_arm.so」を置きます.

libjulius_arm

AndroidManifest.xmlから以下を削除します.
(新規作成してストレージとマイクへのアクセス権限を追加すれば良いだけですが)

JuliusActivity.javaは以下のようになります.
必要なファイルをSDカードではなく端末のストレージに置いているためpathを変更しています.

実行画面

「Speech」ボタンを押すと「録音モード」になります.
その状態で何か話した後に「Recording」ボタンを押下すると、一旦wavファイルとして保存したのちにその音声ファイルを使って認証を開始します.

試しに「りんごが1個」と言ってみました.

grammar

続いて「連続音声認識」を選択し、「こんにちは」と言ってみました.

detectation

juliusのバージョンが4.2.2ということもあるのか認識がとにかく悪いです.
悪すぎます…

終わりに

音響モデルを変え、Julius4.5のlibjulius,libsentを共有ライブラリ(.so)として作ることができれば改善するかもしれませんが、今度は共有ライブラリの作成に骨が折れそうです…
とりあえずはAndroidでJuliusが動かすことが今回の目的だったので、次は共有ライブラリの作成目指してぼちぼちとまた調べていこうかと思います.