Max/MSP上で日本語音声認識 (Quick Hack)

2006 BLOG

Phonethicaインスタレーション用に実装した音声認識について。Max/MSP上で日本語の音声認識が可能になりました。

音声認識に関しては、以前からMacintosh標準の音声認識エンジンを利用したオブジェクトがいくつか知られている。OpenDragon.comのlistenオブジェクトや、Max関連本の著者としても知られる赤松さんのaka.listenなどがそれだ。Macintosh標準の音声認識は、コンピュータを言葉でコントロールすることを目的として作られているため、あらかじめ登録した候補となる英語の単文(例えば「Make a new folder」とか 「Open the browser」)から実際に発音された文章に近いものを選択する機能しかないため、いわゆるディクテーション(文章の書き起こし)のようにユーザの自由な発声に対応したい場合には使えない。特に日本語にはいまのところ全くと言っていいほど役に立たない(次期OS、Leopardで対応するかも?!)

今回のPhonethicaインスタレーションでどうしても音声による検索を実現したかったために、外部の音声認識エンジンをMax上のShellから呼び出す方法を考えた。(Mac OS X/PPC上での利用についてのみなので、Windows、Intel Macの方はあしからず)


利用するのは、オープンソースの日本語音声認識エンジンJulius。名古屋工業大学 徳田・李研究室と京都大学 河原研究室を中心に開発されたものらしい。

1. Juliusのインストール
ここからソースコードをダウンロード。ターミナルを使って通常のコンパイル方法であっさりインストールできるはず。

./configure
make
sudo make install

2. 言語モデルを用意
Juliusを使うには適切な言語モデルが必要。簡単なディクテーション用のモデルがここに準備されている。Linux版をダウンロードして解凍する。fast.jconfが高精度の認識用の設定ファイル、light.jconfが認識スピードを重視した設定用のファイルである。設定ファイルを利用するには、-Cオプションを使ってjuliusを起動する。

3. Juliusのテスト
ターミナルで以下のコマンドを入力する。

/usr/local/bin/julius -C (ダウンロードした言語モデルのディレクトリ)/fast.jconf

でJuliusが動くことを確認(パスが適切に設定してあれば, juliusのみでよい)。音声認識が始まるまで言語モデルの読み込みなどにしばらく時間がかかる。何も指定しなければ、システム設定で設定したデフォルトの音声入力デバイスがつかわれるはず。
Juliusは認識のプロセスが複数の段階にわかれているため(詳しくはホームページ参照)、認識途中の結果が順次出力されるはずである。最終結果は “sentence1:”の後に出力される。

2. shellオブジェクト
ここまでできたらMax側の準備をする。Max上でshell(ターミナル)を利用するオブジェクトとしては、Bill Orcuttのshellオブジェクト(Universal版はJeremy Bernstein)、赤松さんのaka.shellなどがある。赤松さんも書いているように、Intel Mac上ではshell、aka.shellともにコマンドは実行できるがその結果をみることができないようだ(なんで?)。

shellオブジェクトが用意できたらあとはシンプル。juliusを起動するコマンドをshellオブジェクトに渡し、認識結果が帰ってきたら適宜routeオブジェクトなどで振り分けて利用したい出力のみをとりだせばよい。

ここで注意したいのが、文字コードの問題。デフォルトでは、EUCで結果が帰ってきてしまうので、Max上では文字化けしてしまう。

-charconv EUC-JP SHIF_JIS

というオプションをつけて、Shift JISに変換してやるとよい。Message Boxで表示したいときは、Osakaなどの日本語フォントを設定することをお忘れなく。

Picture 2