音声認識

音声認識の設定・カスタマイズ

現在のシステムは日本語の音声認識モデルしか含まれておらず、日本語しか認識しません。英語を含む他の言語の対応は、近日中に行われる予定です。

MMDAgent-EX はデフォルトで 音声認識エンジン Julius を用いた音声認識を行います。基本辞書や設定等の必要なファイルはあらかじめシステムに含まれており、特に設定なしでもコンテンツで音声認識を用いることができますが、下記のファイルを作成してコンテンツに含めることで、コンテンツに合わせた音声認識のチューンアップができます。

  • ユーザ辞書ファイル (.dic)
  • エンジン設定ファイル (.jconf)

これらのファイルをコンテンツに含める場合、全て スタートアップ・設定ファイル(.mdf)と同じ名前で作成します. 例えば、foobar.mdf というスタートアップ・設定ファイルがコンテンツにあるとき、各ファイルの名前は以下のようになっている必要があります。

  foobar.mdf
  foobar.dic
  foobar.jconf

.dic ファイル

音声認識のための追加ユーザ辞書です。認識したい単語がうまく出てこないとき、このファイルに単語を登録します。 また、出やすさの調整も可能です。書き方は Julius の辞書と同一です。以下に例を示します。

<unk> @1.0 <unk> [MMDAgent] e m u e m u d i: e: j e N t o
<unk> @2.0 <unk> [おっはー] O q h a:
第1カラム
出現確率をアサインする言語モデル上の単語名。分からなければ <unk> でもOK。
第2カラム
@” + 出現確率(対数)の補正値。0.0がデフォルト(言語モデルに従う)で、1.0, 2.0 と大きくすると認識結果に候補として出やすくなる(ただし大きすぎると湧き出すので注意)。
第3カラム
(この欄は何を書いても結果に影響しないダミー。 <unk> と指定しておく)
第4カラム
[” と “]” で括られた単語の文字列。”[” と “]” は必須。認識されたらこの文字列が出力される。
第5カラム以降
読みの音素列(ひらがな→音素列の対応は Julius の yomi2voca.pl を参考に)

読みの音素列を書くときは、実際の発音に合わせて書くのがコツです。以下の点にご注意ください。同じ単語に複数の発音がある場合はそれぞれ読みだけが異なる別の単語として個別に登録します。

  • 係助詞の「は」は、 “h a” ではなく “w a
  • 格助詞の「を」は、 “w o” ではなく “o
  • 格助詞の「へ」は、 “h e” ではなく “e
  • “o u” → “o:” 「今日」は “ky o u” でなく “ky o:”
  • “e i” → “e:” 「携帯」は “k e i t a i” だけでなく “k e: t a i” もあり

※ファイルの漢字コードは UTF-8 である必要があります。

.jconf ファイル

音声認識エンジンJulius の設定ファイルです。このファイルに記述した内容はそのまま内蔵のJuliusに読み込まれます。具体的には、Juliusのエンジン起動時、まずシステムのデフォルト設定が読み込まれた後に、この設定ファイルが読み込まれます。

MMDAgent-EX はフルの Julius を内蔵しており、単体の Julius で使える機能はすべて使えます。全てのJulius設定を記述可能です。音声入力の検出条件(トリガレベルや無音長)の変更や探索パラメータのチューニングもできますが、それだけでなく、例えば入力をネットワーク経由に変更したり、独自の言語モデル・音響モデルを指定することも可能です。全ての設定可能なパラメータの最新の一覧は Julius の GitHub の Options にあります。

## example of .jconf file
# set lower audio trigger level threshold
-lv 120
# set duration time to reject too long input
-rejectlong 6000

最終更新 2021.01.15: update till julius (5d37b5a)