音声認識を最適化してみる

・騒がしい場所ではなかなかうまく音声認識されないものです。人間にとってさほど騒がし感じない場所でも、天井に空調の吹き出し口があったりすると、意外に機械は敏感で、音声認識の障害になってしまったりします。

・ここでは音声認識の精度を向上させるための方法をいくつかご紹介します。


julius設定ファイルの編集

・エディターでjuliusの設定ファイル「julius.jconf」を編集してみましょう。

・空調音など一定の音がし続けている場所で音声認識が上手くいかない場合は、最後の行の行頭の「#」を取ってみてください。鳴り続けている音の無効化(垂直成分の除去)を行います。

・物音などにいちいち反応してしまって困っているなら、「rejectshort」の値を長めにすると、短い音は無視されるようになります。

・小さな音にいちいち反応してほしくないなら、「lv」の値を大きくしてみると、改善するかもしれません。

・他にも調整パラメータはたくさんあります。julius公式のリファレンスマニュアルには詳しい説明が書かれています。


マイクの変更

・べゼリーに付属しているUSBマイクは非常にコンパクトなものですが、より集音性のよいUSBマイクに変えることで、音声認識の精度も向上するかもしれません。


対話データを直接編集してみる

・ブラウザを使わず、テキストエディターで対話データ編集してみましょう。
・まずは辞書ファイルの元となるcvsファイル(chatEntity.cvs)をテキストエディターで開きます。

・以下のようなリストが表示されたと思います。(長いので一部分だけ引用します)

・ユーザーの意図(インテント)とその言い回し(ひらがな)がTABで区切って羅列されています。
・TABの代わりにスペースが入っていたり、最終行に空行が入っていたりすると、エラーになってしまうので注意してください。
・認識させたい意図以外の言葉も、ある程度登録しておいたほうが認識精度が上がります。
・編集を終え、セーブしたら、これを変換して辞書ファイルを更新しましょう。変換のためのプログラムを用意しました。

・これでchatEntity.cvsを元に辞書ファイルchatEntity.dicが更新されたはずです。
・サンプルプログラムを実行し、自分なりの辞書が反映されたかどうか確認してみましょう。
・次に、自分なりに会話内容を追加・修正してみましょう。まず返答リストをテキストエディターで開きます。

・以下のようなリストが表示されたと思います(長いので一部分だけ引用します)。

・カンマで区切られたCSV形式のリストです。第1項目がユーザの意図(インテント)で、第2項目がベゼリーからの返答候補です。
・意図はchatEntity.cvs内で定義していないと無効です。
・同じ意図に対して複数の返答を用意しておくことができます。どの返答が選ばれるかはランダムで決まります。
・意図「不一致」は、該当するキーワードが無かった場合に選ばれます。
・このファイルを編集して保存したら、またサンプルプログラムを実行してみてください。


応用

・音声認識の精度を上げたい場合は、chatEntity.cvsに多数の言い回しを登録したり、実際には使用しないキーワードを登録しておくことが簡単かつ有効です。
・さらに高みを目指したいかたはJuliusのドキュメントを読んでみてください。(The Julius Book)


tips

・Juliusの発音には諸説あるそうですが、開発チームでは「ジュリアス」と発音しているそうです。(The Julius book