こんにちは、コンスキです。
juliusで認識する言葉を制限したくて調べていたときに、次のようなことが書かれた記事をよく見かけました。
「mkdfa.plを使ってdictファイルとdfaファイルを作ります」
僕はこの方法を変化を加えながら何度も試しました。
しかし、僕の場合はエラーが出てなかなかdictファイルとdfaファイルを作成できませんでした。
途方に暮れていた時、大学の先生が単語だけを認識させるならdictファイルだけで認識の制限ができることを教えてくれました。
実際にできました。
認識する制限したい言葉が単語であればこの方法で解決できるかもしれません!
サンプルのdictファイルを使用してみる
自分でdictファイルを作成する前に、サンプルのdictファイルが使えるか試してみます。
juliusのgrammar-kitの中にdictファイルのサンプルがありました。
今回はこちらにあった「attendant.dict」というdictファイルを使わせてさせていただきます。
attendant.dictはjuliusの実行ファイルがある場所に保存します。
また、dictation-kitの中から「am-gmmm.jconf」を見つけてjuliusの実行ファイルあるがある場所に保存してください。
最初から存在していたら、新しく保存しなくて結構です。
次のようなオプションをつけてjuliusを実行します。
julius.exe -C am-gmm.jconf -nostrip -w C:\works\dictation-kit-4.5\dictation-kit-4.5\work\attendant.dict -input mic
attendant.dictに書かれている言葉だけを認識されればdictファイルが使えています。
自分でdictファイルを作る
これからやるのは自分でdictファイルを作るというよりも、attendant.dictを編集する感じに近いです。
attendant.dictの一番上に次のような行を挿入していきます。
0タブ文字[好きな単語]タブ文字その単語の音素
一番左の「0」は数字のゼロです。
タブ文字と書かれた部分はキーボードのTabキーを押して入力してください。
例えば「こんすき」と言えば「コンスキ」と表示できるようにしたい場合は、次の表記を一番上の行に挿入します
0 [コンスキ] k o N s u k i
自分で作った(編集した)このdictファイルを使ってjuliusを実行する方法は、先ほどと何も変わりません。
次のようなオプションをつけてjuliusを実行してください。
julius.exe -C am-gmm.jconf -nostrip -w C:\works\dictation-kit-4.5\dictation-kit-4.5\work\attendant.dict -input mic
dictファイルの中身を調査する
attendant.dictファイルの中身を見てみると意外とシンプルに書かれて、どんな規則で書かれているのかがわかりそうです。
0 [小泉] k o i z u m i
0 [片山] k a t a y a m a
0 [森山] m o r i y a m a
0 [田中] t a n a k a
0 [塩川] sh i o k a w a
0 [遠山] t o: y a m a
0 [坂口] s a k a g u ch i
0 [武部] t a k e b e
0 [平沼] h i r a n u m a
0 [扇] o: g i
0 [川口] k a w a g u ch i
0 [福田] f u k u d a
0 [村井] m u r a i
0 [中谷] n a k a t a n i
0 [尾身] o m i
0 [柳澤] y a n a g i s a w a
0 [竹中] t a k e n a k a
0 [石原] i sh i h a r a
0 [安倍] a b e
0 [上野] u e n o
0 [古川] f u r u k a w a
0 [津野] ts u n o
1 [お願い] o n e g a i
1 [お願いします] o n e g a i sh i m a s u
1 [さん] s a N
1 [さんお願い] s a N o n e g a i
1 [さんお願いします] s a N o n e g a i sh i m a s u
2 [えー] e:
2 [えーと] e: t o
2 [えーと] e: q t o
2 [あのー] a n o:
3 [ええ] e:
3 [はい] h a i
3 [いいえ] i i e
4 [silB] silB
5 [silE] silE
6 [sp] sp
とりあえず各行の一番最初に書かれている数字を見てみます。
0 [小泉] k o i z u m i
意味がわかりません。
調べてみるとn-gramという解析の方法があってそのnに入る数字を意味しているみたいです。
「言葉を何文字ごとに解析するのか」という意味らしいです。
次に、タブ文字が1つ入力さて、次に[ ]の中に言葉書かれていますよね。
0 [小泉] k o i z u m i
これは認識した時に表示する言葉の表記です。
その後にもう1つタブ文字が入力されてから言葉の音素が書かれています。
0 [小泉] k o i z u m i
音素についてはこちらのページの「音素ファイルを作成する」の部分をみるとわかりやすいかも知れません。
おわりに
この記事を通して、辞書ファイルを使ったjuliusの実行ができるようになっていただけたのならとても嬉しいです。
結構長めの単語や言葉も追加できたので是非やってみてください。
コメント