Juliusで連続音声認識
大語彙連続音声認識エンジンJuliusで遊んでみました。動作環境はMac OS X Mountain Lionです。
準備
コンパイラはXcodeでインストールしたgcc(2013/1/13)を使用しました。
また、Macで動かす場合はPortAudioというライブラリも必要みたいなので、macportsであらかじめインストールしておきました(というか何か別のプロジェクトでインストール済みだった)。
% port installed portaudio The following ports are currently installed: portaudio @19.20111121_4 (active)
julius本体のインストール
Juliusのプロジェクトページからjulius-4.2.3.tar.gzをダウンロードします。サイトの右の方のQUICK DOWNLOADからダウンロードできます。インストールは普通に
% tar xvzf julius-4.2.3.tar.gz % ./configure % make % sudo make install
でできました。/usr/local/binにjuliusのコマンド群がインストールされます。juliusはmacportsにも登録されているのでここからインストールしてもよいかもしれません。
% port search julius julius @4.2.3 (audio, japanese) Large Vocabulary Continuous Speech Recognition (LVCSR) Engine
ディクテーションキットのインストール
次にjuliusの設定ファイルや言語モデル・音響モデルが含まれるディクテーションキットをダウンロードします。
% tar xvzf dictation-kit-v4.2.3.tar.gz
binの中にコンパイル済みのjuliusコマンドがありますが、Linux用なのでMacでは使えないです。代わりに先ほど自分でコンパイルしたコマンドを使います。ディクテーションキットで使うのは、fast.jconf、light.jconfという二つの設定ファイルとmodelディレクトリ以下の言語モデル、音響モデルだけです。
マイクの設定
Macbook Airだと左の方に内蔵マイクがあるようです。ただ、そのままだと顔を近づけないとなかなか認識できませんでした。そのためマイクかヘッドセットが必要なのですがそんなものは家にない!いろいろ調べていたらiPhone5に付属のイヤホンが外部マイクになるという情報を発見。
さっそくMacbook Airにイヤホンを差して、設定のサウンドを見てみると外部マイクとして認識されました。
環境ノイズリダクションを使用のチェックを外しておかないと音声認識の精度ががた落ちします。ついでに入力音量もあげておきました。これでイヤホンを耳にはめて普通にしゃべるだけで音声認識できます。
音声認識を試してみる
juliusコマンドの-Cオプションで設定ファイルを指定して起動します。ターミナルの文字コードがUTF-8なのでデフォルトのEUC-JPから変換しないと文字化けします。
% julius -C fast.jconf -charconv EUC-JP UTF-8
で起動するとドバーっと設定が出力された後にplease speakと表示されてからしゃべると音声認識できます。
<<< please speak >>>Warning: strip: sample 0-191 has zero value, stripped pass1_best: こんにちは 。 sentence1: こんにちは 。 pass1_best: 音声認識 の テスト で 。 sentence1: 音声認識 の テスト です 。 ass1_best: 今日 は 、 七月 六日 です 。 sentence1: 今日 は 、 七月 六日 です 。 pass1_best: とても 暑い です sentence1: とても 暑い です 。 pass1_best: さようなら 。 sentence1: さようなら 。
最初に変なWarningが出てくるけど特に問題はないみたい。pass1_bestが途中認識結果、sentence1というのが最終認識結果のようです。はっきりしゃべればそれなりに認識するといった感じかな。
連続音声認識なので単語だけでなく、文章もちゃんと認識してくれる。ディクテーションキットについてくる音響モデルは不特定話者モデルらしく、誰の声でもそれなりに認識してくれるみたいだが認識精度が少し厳しい印象。自分の声で訓練(話者適応)とかできるのかな?資料や論文をもう少し詳しく調べてみようと思います。