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

github に派生版を置く。julius 4.1.5 を master として nishimotz ブランチを作った。

変更記録

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

julius_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

libjulius を使う

Ubuntu には libjulius-dev というパッケージがあるようだが、ここでは /usr/local に julius-4.1.5 を make install した上記の作業のつづき。

プログラムを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 すれば動くはず。

julius-simple.tar.gz

$ sudo aptitude install libasound2-dev zlib1g-dev

C++ でコンパイルできるようにして、gram.txt から rake で文法をコンパイルできるようにした。 dialogstudio の GrammarMaker 機能を使っている。

julius-simple-100612v2.tar.gz

progout機能を試す

プラグインを使う

関連情報

julius.txt · 最終更新: 2013/07/24 03:38 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0