組込みソフト
Julius 独自辞書をつくる 2020/11/20
認識する言葉を絞り込んだ独自辞書を使うと認識率が向上するらしいのでやってみました。LEDを音声認識でコントロールします。音声認識版のLチカです。
EUC-JPが編集できるエディタを準備する
Juliusのバージョン4.5から文字コードがEUC-JPからUTF-8になりました。これから新規に辞書を作成するなら別にEUC-JPは気にしなくて問題ありません。UTF-8なら編集できるエディタがたくさんあります。しかし、以前のバージョンで作成された辞書を参考にする場合、EUC-JPが編集できるエディタが必要です。EUC-JPのファイルをMousepadで開くと、

こんな派手な表示が出て編集できません。試しに秀丸で開くとちゃんと編集できます。それではラズベリーでEUC-JPを編集できるエディタは?????
Visual Studio Code で編集できます。ただし、設定が必要です。
 [File]-[Prefernces]-[settings]

Auto Guess Encodingと入力します。
チェックボックスにチェックを入れます。
これでVisual Studio CodeでEUC-JPが編集できます。

またVimでは、
$ vim .vimrc

:set ileencodings=iso-2022-jp,euc-jp,sjis,utf-8:set encoding=utf-8
:set fileformats=unix,dos,mac
でEUC-JPを編集できます。
辞書をつくる
辞書ファイルをledctrlとします。ディレクトリはjulius/dictとします。
最初に
ledctrl.voca
ledctrl.grammar
をテキストエディタで作成します。version4.5以上ならUTF-8がOKなので好きなエディタを使って作成してください。

次に、
~/julius-4.6/gramtools/mkdfa/mkdfa.pl
を使って他の辞書ファイルを作成します。策j精されるファイルは、
ledctrl.dfa
ledctrl.dict
ledctrl.term
です。

$mkdir ~/julius-4.6/dict

j辞書に設定することばは、「点灯」「消灯」「点滅」の3つです。最初にledctrl.vocaを作成します。ファイルの内容は、

% COMMAND
点灯	t e N t o u
消灯	sh o u t o u
点滅	t e N m e ts u
% NS_B
[s]             silB
% NS_E
[/s]            silE

独特のローマ字表記になっていてイヤな感じです。読みをローマ字に変換してくれるツールを使うと便利で間違がないです。
最初にledctrl.yomiを作ります。

点灯 てんとう
消灯 しょうとう
点滅 てんめつ
これなら簡単です。
$ julius-4.6/gramtools/yomi2voca/yomi2voca.pl julius-4.6/dict/ledctrl.yomi > julius-4.6/dict/ledctrl.voca
このツールで変換すると、ledctrl.vocaは

点灯	t e N t o u
消灯	sh o u t o u
点滅	t e N m e ts u
ローマ字に変換されています。必要な記述を追加します。先頭行に%でどんな言葉かを記述します。COMMANDとしましたが、MEIREIでもなんでもOKです。
末尾の、
% NS_B
[s]             silB
% NS_E
[/s]            silE
は決まり文句のようです。 NS_Bは先頭、 NS_Eは末尾という意味みたいです。

次にledctrl.grammarの編集です。

S : NS_B COMMAND NS_E
ledctrl.vocaで定義したCOMMANDがここで使われています。
ledctrl.vocaとledctrl.grammarがそろったので他のファイルを生成します。
ツールに不具合があるらしいので正常なファイルをコピーします。

$cp -b ~/julius4.6/gramtools/mkdfa/mkfa-1.44-flex/mkfa ~/julius4.6/gramtools/mkdfa/mkfa
$cp -b ~/julius4.6/gramtools/dfa_minimize/dfa_minimize

辞書を作成します。
$ ~/julius-4.6/gramtools/mkdfa/mkdfa.pl ~/julius-4.6/dict/ledctrl

動作確認します。
$ julius -C ~/julius-4.6/julius-kit/dictation-kit-4.5/am-gmm.jconf -nostrip -gram ~/julius-4.6/dict/ledctrl

次は音声でLEDのコントロールです。