参考
Raspberry PiとJuliusで特定の単語を認識させる | パソコン工房 NEXMAG
辞書ファイル用ディレクトリを作成します
cd ~/julius
mkdir dict
cd dict
##単語とその読みがなを定義するファイルを作成
nano monafuwa.yomi
もなふわすいーとるーむ もなふわすいーとるーむ
助けて たすけて
##音素ファイル(.phone)を作成
(ハマリポイント1 入力元のファイルはUTF-8のままでOK)
~/julius/julius-4.6/gramtools/yomi2voca/yomi2voca.pl ./monafuwa.yomi > ./monafuwa.phone
できたファイルがこちら
もなふわすいーとるーむ m o n a f u w a s u i: t o r u: m u
助けて t a s u k e t e
##構文ファイル(.grammar)を作成
nano monafuwa.grammar
S : NS_B W1 NOISE W2 NS_E
W1 : TASUKETE
W2 : MONAFUWASUITORUMU
grammarファイルの文法は第7章 言語モデルより引用
"NS_B" と "NS_E" はそれぞれ文頭および文末の「無音区間」に対応する単語カテゴリである.文の最初と最後に必ず挿入すること.
Julius で発声の休止位置を記述するには,まず grammarファイルで,休止の出現しうる単語間にカテゴリ名「NOISE」を挿入する.
この場合では、"文頭の無音”、”たすけて”、”発声の休止”、”もなふわすいーとるーむ”、”文末の無音”のワンセットとなる。
W1とW2に列挙したシンボル列”MONAFUWASUITORUMU”と”TASUKETE”で次に作成する語彙ファイルから音素を引っ張ってくる。
ハマリポイント2 このシンボル列に.phoneファイルの文字列をそのまま使ってはいけない。今回のように伸ばす音を示すコロンなど記号は使ってはいけないため、コンパイル時にエラーが出ることになる。
##認識用文法の語彙ファイル(.voca)を作成
nano monafuwa.voca
.grammarファイルで使用する単語を定義する。定義内容は.phoneファイルの中身。
NS_B,NS_Eには,それぞれ文頭・文末の無音に対応する無音音響モデル"silB", "silE"を割り当てる。
NOISEは無音の音響モデル"sp"を割り当てる
% MONAFUWASUITORUMU
もなふわすいーとるーむ m o n a f u w a s u i: t o r u: m u
% TASUKETE
助けて t a s u k e t e
% NOISE
[sp] sp
% NS_B
[s] silB
% NS_E
[/s] silE
##コンパイル
cd ~/julius/julius-4.6/gramtools/mkdfa
mkdfa.py ~/julius/dict/monafuwa
monafuwa.dfa、monafuwa.term、monafuwa.dict、monafuwa.dfa.forwardの4ファイルが生成される。
##作成した辞書を使って認識を試す
cd ~/julius/dict
julius -C ../julius-kit/dictation-kit-4.5/am-gmm.jconf -nostrip -gram ./monafuwa -input mic