専攻は音響学です。どうもこんにちは


先日バイト先で、前職で音声認識サービスを扱っていたというTさんからjuliusなる音声認識エンジンを教えてもらいました。以前からそういったものがあることは一応小耳に挟んではいたのですが、実際に目の前でデモを見せてもらうとちょっとした感動がありましたんで、自分でもインストールしてここで皆さんに紹介したいと思います。

さて、juliusに何が出来るかと言うと、所謂音声認識です。

具体的にどういう処理をしているかはドキュメントもソースコードもまだちゃんとは追ってないので詳しくは言えませんが、恐らく「音声を入力して、信号処理をして、最終的には辞書ファイルに登録された語とのマッチングをテキストベースで行なっている」と考えればそう遠くはないはずです。

マッチングの処理はともかく、ボクが驚いたのはやはりリアルタイムでの処理ですね。ちょうど今研究でリアルタイムにマルチスレッドな感じで信号処理を行おうとしているのですが、FFT(*1)はやはり早いんだなぁと実感した次第です。


Install Julius

ともあれ、juliusをインストールしてみましょう。

- PortAudio

juliusをインストールするために、まずPortAudioをインストールします。PortAudioとはオープンソースのオーディオ I/O ライブラリで、MacのみならずWindowsやLinuxなど様々な環境に対応していることで知られています。

Macでは普段オーディオ I/Oの際に内蔵のCoreAudioを使って処理しているのですが、今回のjuliusではどうにも対応していないらしいのです。そこでPortAudioの出番というわけです。

インストールにはHomebrew(*2)を使用します。

$ brew install --universal portaudio

homebrewの最新Formulaでは--universalオプションが指定出来るので、今回インストールするPortAudioは--universal付きのユニバーサルバイナリでインストールしましょう。

というのもjuliusは64bit環境では動作しないため、juliusから使うPortAudioは32bit版である必要があるのです。

おそらく特に問題なくPortAudioのインストールは終わるかと思います。

- Julius

さて、いよいよjuliusです。juliusのFormulaは無いようですので公式から落としてきて自分でコンバイルする必要があります。ターミナルで以下を実行してください。

$ wget "http://sourceforge.jp/frs/redir.php?m=keihanna&f=%2Fjulius%2F51820%2Fjulius-4.2.tar.gz" -O julius-4.2.tar.gz
$ tar xzf julius-4.2.tar.gz
$ cd julius-4.2
$ env CFLAGS='-arch i386' ./configure --enable-words-int --with-mictype=portaudio --disable-zlib
$ make
$ sudo make install

Lionには標準ではwget(*3)が入ってなかった気がするんで、無い場合は先に

$ brew install wget

とでもしておきましょう。ここまでうまく行ったら

$ julius

上記juliusコマンドが効くようになっていると思いますので試してみましょう。

julius

とりあえずは何やら怒られますが引数の話なのでこの表示でOKです。

以上でインストール自体は終わりです。

Juliusを使ってみる

julius以外でもそうですが、音声認識には『音響モデル』という所謂信号処理部分と『言語モデル』という単語等の辞書データが必要になります。

juliusの素晴らしいところはこれらモデルのセットを公式にて配布しているところですね。

なんとディクテーションキットを落としてきてjuliusコマンドを以下のように実行するとそれだけで日本語音声認識をスタートできるのです。

$ wget "http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fjulius%2F51158%2Fdictation-kit-v4.1.tar.gz" -O dictation-kit-v4.1.tar.gz
$ tar xzf dictation-kit-v4.1.tar.gz
$ cd dictation-kit-v4.1
$ julius -C fast.jconf -charconv EUC-JP UTF-8

juliusコマンド実行時に設定ファイルと文字コードを指定すると

<<< please speak >>>

と出るので喋ると認識結果を表示してくれるはずです。

簡単なデモもしてみました。

キャプチャの関係でなんか微妙に変なリバーブかかってますが気にしないでください。

とりあえずはうまく認識してくれましたね。安心しました。デフォルトのままでは正答率はそんなによくないみたいですが、カスタマイズすることによって十分実用に耐えうるとのことです。

ちなみにデモでは単語しか話しませんでしたが文章でも大丈夫みたいです。





--------------------------------------------------
*1 FFT=Fast Fourier Transform
*2 Homebrew=パッケージ管理システム。unixツールを簡単にインストールする。
*3 wget=コマンドラインダウンローダー

参考url:
http://ascii.jp/elem/000/000/547/547250/index-2.html
http://keny.b.sourceforge.jp/2011/08/17/mmdagent-macosx/