目次
Julius
Juliusはオープンソースの汎用大語彙連続音声認識エンジン。
バージョン4からJulianと統合。
2011年12月にバージョン 4.2.1 がリリースされた。
2013年6月にバージョン 4.2.3 がリリースされた。
性能向上の試み
since 2012-03-22
ネットで見つけた情報:
ルールベースの juliusと精度 - お前の血は何色だ!! 4 http://bit.ly/GKkt53
ルールベースjuliusの誤認識対策にSVMを利用してみよう - お前の血は何色だ!! 4 http://bit.ly/GM10vc
OLL によるオンライン学習を試してみた - 凹みTips http://bit.ly/GFghmB
Juliusの認識結果をOLLでオンライン学習させてみたら結構良かった - 凹みTips http://bit.ly/GERL1H
rti7743/rtilabs · GitHub https://github.com/rti7743/rtilabs/tree/master/files/asobiba/juliustest
日経Linux 2012年5月号「Linuxで家電を自由に操る」
Mac での動作
since 2011-10-12
http://en.nishimotz.com/julius に書いたが、PortAudio を使えば MacOSX (i386) で動く。
github project
Decoder VAD に関する覚書
#http://julius.sourceforge.jp/index.php?q=newjulius.html cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4 #cvs update -Pd
http://julius.sourceforge.jp/juliusbook/ja/desc_vad.html#id2532814
デコーダに基づく VAD は,デフォルトでは無効化されており, 使用するにはコンパイル時に configure オプションで --enable-decoder-vad を指定し, 実行時に -spsegmentを指定する. sudo apt-get install cvs flex libdb-dev cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4 cd julius4 sh configure --enable-decoder-vad
progout
モジュールモード で利用可能。 コールバックそのものは demo モードで使われている。 後述のように libjulius で progout 相当の情報を取り出せる。
JuliusのPythonラッパー
モジュールモードの出力を受け取るラッパーを作った。
Windows で動作確認。サーバとして dictation-kit-v3.2-win を使用。
内部処理はUTF-8で行う。出力をDOMパーザで処理する。
ディクテーションの場合は <s> などの記号が属性値に含まれるため、<s> などに置換している。
Julian および 4.x 系での検証、Linux での確認はこれから。
主な仕様
- receive() はメッセージを受けるまで待機し、届いた(1つまたは複数の)メッセージを読み出して DOM の配列として返す。
- wait_for_elem(name) は name で指定された要素が来るまでメッセージを読み飛ばし、見つかった要素を DOM で返す。
- これらの読み出しメソッドはブロッキングなので、入力が来るまで処理が止まってしまう。(今後の課題)
未解決の問題
- Popen で標準入出力のPIPEおよび非ブロッキングを行っていない。このあたりを下手にいじると socket の I/O に支障が出る。Windows 版 Python の実装の問題だろうか。
ソースはこちら private gist : https://gist.github.com/9f927195fa3df2228160
recordオプション
認識対象とする音声を wav ファイルで保存するオプション。
julius -record (DIR)
ディレクトリ DIR の中に YYYY.MMDD.HHMMSS.wav という形式のファイルを作る。
debパッケージを作る
Ubuntu 9.04 (i386 vmware) で julius-4.1.5.tar.gz を。
$ tar xvfz julius-4.1.5.tar.gz $ cd julius-4.1.5 $ sudo aptitude install flex $ sh configure $ make $ sudo mkdir /usr/local/share/man # これをやらないと make install で /usr/local/man に書き込みができない $ sudo checkinstall make install
- julius_4.1.5-1_i386.deb : 上記の手順によるデフォルトのバイナリ
- julius_4.1.5-2_i386.deb : 下記のjulius_progoutパッチをあてて、configure –without-readline で make したバイナリ
libjulius を使う
Ubuntu には libjulius-dev というパッケージがあるようだが、ここでは /usr/local に julius-4.1.5 を make install した上記の作業のつづき。
- iconv 関連は入っていないらしい http://d.hatena.ne.jp/ofk/20090807/1249608805
プログラムをmakeする
src に含まれているサンプルプログラムを別の場所に移動して作業のベースにする。
$ cp -a julius-simple ../ $ cd ../julius-simple
このままだと隣のディレクトリの中身に依存しているので、 /usr/local に make install したファイルを参照するように Makefile の最初の2行を変える
LIBSENT=/usr/local/bin LIBJULIUS=/usr/local/bin # あるいは下記を有効にする # CPPFLAGS=`libjulius-config --cflags` `libsent-config --cflags` # LDFLAGS=`libjulius-config --libs` `libsent-config --libs`
これで make できる。
galateaの音響モデルで動かす
galatea のエンジンに同梱されているモデルで動かす。 dialogstudioのエンジン(galatea-engine)が必要。
# julius.conf -dfa /usr/local/galatea-engine/SRM/GramJulian/vfr/vfr.dfa -v /usr/local/galatea-engine/SRM/GramJulian/vfr/vfr.dict -gmmreject "noise,laugh,cough" -gmm /usr/local/galatea-engine/SRM/AcousticModel/gmmdefs.binhmm -hlist /usr/local/galatea-engine/SRM/AcousticModel/logicalTri -h /usr/local/galatea-engine/SRM/AcousticModel/hmmdefs,ptm,gid.binhmm -input alsa
これで julius-simple -C julius.conf すれば動くはず。
$ sudo aptitude install libasound2-dev zlib1g-dev
C++ でコンパイルできるようにして、gram.txt から rake で文法をコンパイルできるようにした。 dialogstudio の GrammarMaker 機能を使っている。
progout機能を試す
プラグインを使う
関連情報
Voice Launcher - マイク音声によってアプリケーションを起動する音声認識型 アプリケーション起動ソフト Adobe AIR との連携