Julius 辞書の作成手順

  • 2020.08.27
  • IoT
Julius 辞書の作成手順

前回、Juliusの環境構築を行い、簡単な動作確認まで行った.

今回は独自辞書を作成し、それをJuliusで読み込ませて認識させてみる.

環境

・Raspberry pi 4

・Webカメラ(マイク付き)

また、以下をラズパイ内で扱う.(https://julius.osdn.jp/index.php?q=newjulius.html)
・Julius 4.5
・dictation-kit 4.5

作成するファイル

  1. 「読み」ファイル:test.yomi
  2. 「音素」ファイル:test.phone
  3. 「構文」ファイル:test.grammar
  4. 「語彙」ファイル:test.voca
  5. 「辞書」ファイル:test.dfa、test.dict

それぞれのファイル名のプレフィックスはtestとする.
また各ファイルはdictディレクトリ以下に保存し、文字コードは一律「UTF-8」とする(Raspbianの標準文字コード).

以上の順番でこれからファイルを作成していく.

「読み」ファイル

test.yomiを作成する.

以下は注意点.
・中央のスペースはTABキー1回で空ける.
・平仮名で入力 ・「おはようございます」と「おはよう」のうち、重複する「おはよう」の箇所は1語にまとめる.
・「こんにちは」は実際には「こんにちわ」と発生するため以下のように設定している.
・最後は改行しないようにする.

「音素」ファイル


dictディレクトリに移動し、以下のコマンドを実行することでtest.phoneファイルを作成できる.

※ iconvコマンドを噛ませてyomiファイルをEUC-JPに変換させているサイトが多いが、Julius4.5より標準でUTF-8をサポートする様になったため不要.

test.phoneが以下の様になっていれば成功

「構文」ファイル


test.grammarを作成する.

1行目が構文定義というもので、その内「NS_B」は開始位置、「NS_E」は終了位置を表すシンボルとなっている.
2行目以降の「:」の左側のシンボルは1行目の構文定義で主に参照として用いられる.
また、右側のシンボルは「読み」ファイルを基に単語を組み合わせて文字列を設定しており、後述の「vocaファイルで参照する変数みたいなもの」という認識.(以降、サブシンボルと呼ぶ).
ちなみに「ございます」は単体では使用しないので「おはよう」と組み合わせて、「OHAYOU GOZAIMASU」としている.
例えば「ありがとう」という単語も登録しているなら「ARIGATOU GOZAIMASU」も記載できる.

「語彙」ファイル


test.vocaを作成する.
音素ファイル(.phone)から作る.

「%」の行は「構文」ファイルのサブシンボルを記載.
次の行ではその単語の表記と発音音素列を記載していく.

 NS_B,NS_Eには, それぞれ文頭・文末の無音に対応する無音音響モデル(Julius の標準音響モデルでは “silB”, “silE”)を割り当てる.

また、文中の「N」は「な行」と「ん」の区別に用いられている.

「辞書」ファイル


以下のコマンドを実行することでtest.dfaとtest.dictを作成.

「独自辞書」をJuliusで実行


以下のコマンドで実行.

※ -inputオプションにrawfileを指定することでwaveファイルから認証を行える.

辞書読み込み

終わりに

手順が多く、複雑なためファイル一つ一つの理解に時間がかかってしまった.
辞書を作ると認識をあげることができる、とのことだったが確かに認識はよくなった(気がする)が、登録していない単語や咳払いなどでも単語から何かしら引っ張ってくるためsiriのような対話は難しいと思う.
ちなみに今回はyomi、phoneのようなファイルを作成しているが、実際にはgrammarとvocaファイルがあれば辞書は作成できる.
単にphoneファイルを作ればvocaファイルが作りやすくなるってだけです.

参考:
Julius:第7章 言語モデル
Juliusの独自辞書を使って音声を認識させる
ラズパイ4日目①:Juliusで独自辞書を作成する