raspberryPiとJulius(音声認識)を使用する。③辞書作成編

#関連記事
[raspberryPiとjulus（音声認識）を使用する。①マイク編](https://qiita.com/chiapis2/items/347a9b422706c2d8ebe2)
[raspberryPiでjulius（音声認識）を使用する。②インストール編](https://qiita.com/chiapis2/items/7ec1b0b21ee4fef4e8f0)
[raspberryPiとJulius(音声認識)を使用する。③辞書作成編](https://qiita.com/chiapis2/items/f0bd2ccb0f04d18d8a98)
[raspberryPiとJulius（音声認識）を使用する。④Lチカ編](https://qiita.com/chiapis2/items/a2ed64414c9e49b6cb42)
[raspberryPiとJulius（音声認識）を使用する。⑤i2cキャラクタディスプレイ編](https://qiita.com/chiapis2/items/8e02bb591fb7a02274aa)

<h1>辞書ファイルの作成</h1>
これがまたすごく大変だった。
<h2>単語に読み仮名をつけたファイルの作成（.yomi）</h2>

まず辞書ファイルを作成するためのディレクトリを作る。

```
$ cd julius
$ mkdr dict
$ cd dict
```
階層はこんな感じ。

```
~/julius
    |--dict
    |--julius-4.6
          ｜--julius-kit
                ｜--dictation-kit-4.5
                ｜--grammer-kit-4.3.1
```
ファイルを作成して編集するためにvimコマンドを使う。
vimをインストールする。

```
$ apt-get install vim
$ vim --version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/6a9efd75-0ea1-9a20-fb56-7fb7e792618e.png)
読み仮名ファイルを作成する

```
$ sudo vim test.yomi
```
右上のキーボードマークをクリックして日本語入力ができるようにする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/3183e354-ce0f-1539-00ed-2c735b3bc19a.png)
↓↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/0e86ca6c-7e34-9816-d090-ea0c56166ee3.png)

単語→tab→読み仮名（ひらがな）
と下に下に書いていく。単語は漢字でも大丈夫。
余分な空白はエラーになるので入れないよう注意。
最後の単語を入力したら改行はしないこと。最後の一行が空にならないように注意する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/508def28-346b-7198-2565-842232f3e933.png)

単語帳ができたら、ctrl+C→ZZでvimエディタを終了する。
vimの使い方はこの記事を参照。
[よく使う Vim のコマンドまとめ](https://qiita.com/hide/items/5bfe5b322872c61a6896)

<h2>読み仮名ファイルをローマ字ファイルにする(.phone)(.dic)</h2>
この次のコードにハマった。Julius4.5以降は変換の必要がないらしい。

```
$ sudo iconv -f utf8 -t eucjp　うんたらかんたら
```
なので次のコードで実行する。

```
$ perl ~/julius/julius-4.6/gramtools/yomi2voca/yomi2voca.pl test.yomi > ~/julius/dict/test.phone
```
ターミナルに特に表示されないので、ファイルができていることを確認し表示する。

```
$ ls
$ sudo vim test.phone
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/0dfff0eb-4dc8-6266-7de0-d0dec9b2ef1e.png)
.yomiファイルがローマ字に変換されていればOKなので、特に弄らず閉じる。

<h2>文法ファイルを作成する(.grammar)</h2>
```
$ sudo vim test.grammar
```
開いたエディタに次のコードを書き込む。単語の数だけ書く。
.phoneファイルのローマ字と一致するように注意する。
例）✕KONNNITIHA 〇KONNICHIWA

```
S : NS_B TEST NS_E
TEST:ARIGATOU
TEST:KONNICHIWA
```


>構文ファイル1行目のSの部分は、構文定義を示し、NS_Bが文章の開始、NS_Eが文章の終了を表します。２行目以下のTESTの部分は認識させる文字列となっていて、先ほど生成された「音素」ファイル（hello.phone）の読みを大文字にして使います。[一部改変し引用](https://www.pc-koubou.jp/magazine/19743)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/5bad3c99-1bdc-92d3-1e46-056a084a70a4.png)

書き込んだらエディタを終了する。

<h2>語彙ファイルを作成する(.voca)</h2>
.phoneファイルをコピーして語彙ファイルを作成する。
語彙ファイルを編集する。

```
$ sudo cp test.phone test.voca
$ sudo vim test.voca
```
単語毎に形式をそろえて次のコードの形になるように書き加える。
単語とローマ字の間がtabで区切られていて、このまま動いたがスペースにした方がいいらしい。

```
% ARIGATOU
ありがとう a r i g a t o u
% KONNICHIHA
こんにちは k o N n i ch i w a
% NS_B
[s] silB
% NS_E
[/s] silE
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/4b645b53-6caa-a74f-dcc7-810b366dd5e5.png)

<h2>辞書データに変換する</h2>
ディレクトリを移動する。

```
$ cd julius/julius-4.6/gramtools/mkdfa
```
移動した先で次のコードを実行する。

```
$ mkdfa.pl ~/julius/dict/test
```
成功すると、dictファイル内に「.dfa」「.term」「.dict」ファイルが生成される。
（何故か.dfatmpというファイルが出来上がってしまったので、名前の変更を行った。.tmpのファイルもやたらに作成されているが、良く分からないので放置。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/b59f8737-69f8-68c0-3b5f-3928c16e03ab.png)


<h2>辞書を使って音声認識をする</h2>

```
$ cd
```
次のコードを実行する。

```
$ julius -C ~/julius/julius-4.6/julius-kit/dictation-kit-4.5/am-gmm.jconf -nostrip -gram ~/julius/dict/test -input mic
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/97f0d46c-bbfd-3099-98c5-f18dce8e9142.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/35983ca5-3558-1c7d-a690-6ea90ebd881b.png)

何を言っても「ありがとう」と「こんにちは」だけをひたすら認識する。できた。

<h2>独自辞書の作成完了</h2>
次は言葉を認識してLチカ編へ。
[raspberryPiとJulius（音声認識）を使用する。④Lチカ編](https://qiita.com/chiapis2/items/a2ed64414c9e49b6cb42)

<h2>参考</h2>
[ラズパイ４日目①：Juliusで独自辞書を作成する](https://kihara0223.hatenablog.com/entry/2020/01/04/111100)
[Raspberry PiとJuliusで特定の単語を認識させる](https://www.pc-koubou.jp/magazine/19743)
[Raspberry Piでjuliusを使って音声認識をする](https://www.raspberrypirulo.net/entry/julius)
[]()
[]()
[raspberry piにてjulius4.5を使い音声認識、文字化け](https://teratail.com/questions/275012)
[よく使う Vim のコマンドまとめ](https://qiita.com/hide/items/5bfe5b322872c61a6896)