け い ざ ん の D I Y 工 房

◆Home
◆住まいの D I Y
◆パソコン D I Y
◆ROBOT D I Y
◆電子工作 D I Y
◆Science

●Raspberry Pi 4B 音声認識 julius

 2020.05.03

Raspberry Pi 4 model B に、音声認識をさせますので、
julius を install してみます。

julius は音声認識をする software で、Open Source Software です。
だれでも利用できて、License などの制限もありません。

音声認識に使用する USB Mic は サンワサプライの
MM-MCU02BK を使用します。




Library install
まず、必要な Library から install します。
julius を make install する時に先に Library が入っていないと、
Library 無しで構築されてしまうからです。

$ sudo apt-get install libasound2-dev libesd0-dev libsndfile1-dev


julius install
julius と dictation-kit を DownLoad します。

$ cd /home/pi
$ sudo mkdir julius
$ cd julius
$ sudo wget https://github.com/julius-speech/julius/archive/v4.5.tar.gz
$ sudo gzip -d v4.5.tar.gz
$ sudo tar xvf v4.5.tar
$ cd julius-4.5
$ sudo ./configure
$ sudo make
$ sudo make install


dictation-kit-4.5 も DownLoad して解凍します。

$ cd /home/pi/julius
$ sudo wget https://osdn.net/projects/julius/downloads/71011/dictation-kit-4.5.zip
$ sudo unzip dictation-kit-4.5.zip


installした dictation-kit-4.5 の辞書 File などを /juliusの下に copy します。
辞書の入っている Folder は下記の /model 配下に3種類の File があります。
$ cd /julius/dictation-kit-4.5/model/


cp Command で julius Folder に Copy します。
$ sudo cp lang_m/bccwj.60k.htkdic /home/pi/julius
$ sudo cp dnn/logicalTri /home/pi/julius
$ sudo cp phone_m/jnas-tri-3k16-gid.binhmm /home/pi/julius


julius の単語辞書作成
/home/pi/julius の配下に julius で使用する単語辞書を
nano を起動して作成します。

$ sudo nano word.dic.utf8

以下の内容を記入します。



作成したら、実行権限(File Permission)の変更もしておきましょう。
$ sudo chmod 755 word.dic.utf8


juliusの Test 用設定 File を nano を起動して作成します。
julius-4.5から、Code が utf8 になりましたので、
以前の様なEUC変換は不要になりました。


juliusの test 用設定 File
下記の内容を書き込みます。
$ sudo nano julius-test.conf
---------julius-test.conf-------------------------
-w /home/pi/julius/word.dic.utf8
-v /home/pi/julius/bccwj.60k.htkdic
-h /home/pi/julius/jnas-tri-3k16-gid.binhmm
-hlist /home/pi/julius/logicalTri
-n 5
-output 1
-input mic
-input oss
-rejectshort 800
-lv 2000



Microphone の設定
次に Microphone の設定を行います。
USB Mic を使用しますので、まず USB に何がつながっているか調べます。

$ lsusb



Mic を抜くと表示されなくなるので、C-Media Electronics, Inc.
というのが、USB Mic の様です。

合わせて、dmesg を確認しておけば、CPU, USB その他の status 情報が
確認できます。
$ dmesg




Card 番号、Device 番号を見つける
Microphone の Card 番号と device 番号を見つけるには、
arecord Command を使用します。

$ arecord -l


Card 1、Device 0 が USB Microphone である事がわかります。


Speaker の Card 番号 Device 番号を見るには aplay Command を使用します。

$ aplay -l




Mic の優先順位変更
Mic の優先順位を確認する Command を key in します。

$ sudo cat /proc/asound/modules


Sound card の優先順位が上で、USB Microphone は2番目になっています。

優先順位の変更は、alsa-base.conf の書替を行うと出来ます。
Folder を見てみると、そんな File がありません。
これは作らないといけない様です。
nano を起動して、alsa-base.conf を作成します。

$ sudo nano /etc/modprobe.d/alsa-base.conf



これは電源立上げ時にしか読み込まないので、再起動が必要です。
再起動後、優先順位の確認 Command を key in してみます。

$ sudo cat /proc/asound/modules


これで、Mic の優先順位が替りました。

いつのまにか、Speaker の Card 番号と Device 番号が変わっています。
これでは音声合成で設定した、open jtalk が動かなくなっています。


open jtalk と julius に Card 番号 Device 番号を与える方法として、
/home 配下に .asoundrc File を作成する方法があります。
これも File が無いので作成します。
nano を起動して下記の内容を記述します。

$ cd /home
$ sudo nano .asoundrc



まだ Error が出る。
Default の Card 番号と Device 番号は、alsa.conf にも設定がありました。
alsa.conf に書いてある Card 番号部分も変更します。

$ cd /usr/share/alsa
$ sudo nano alsa.conf

defaults.pcm.cardの値を 0 から 1 に変更します。


やっと Error が消えてopen jtalk の音声がでました。



録音・再生
では、録音・再生をしてみます。
$ cd /home/pi/julius
$ arecord -D plughw:0,0 -d 10 -f cd test.wav

-d で指定した時間は10秒間ですから、Mic に向かってしゃべってみます。
録音が終わったら再生してみましょう。
$ aplay -D plughw:1,0 test.wav

しゃべった内容が正常に再生されれば、OK です。


音が出ない時は Mic の音量設定が小さすぎたり Mute がかかっていたりします。
現在の Mic 音量設定値を見るには amixer に -c 0 を key in すると表示されます。
$ amixer -c 0

音量設定を変更するには下記の command を入力します。
音量を、90%にしたい場合、-c で Mic の Card 番号 0 を指定します。
$ amixer -c 0 sset 'Mic' 90%

Speaker の音量設定を変更するのも、amixer で行います。
現状の音量設定を見るには -c で Speaker の Card 番号 1 を
key in すれば表示されます。
$ amixer -c 1

Speaker の音量を 80% に設定します。
$ amixer -c 1 sset 'Speaker' 80%



julius 動作Test
Mic と Speaker が正常に動作している事が確認できたら、
julius が正常に動作するか実行してみましょう。

$ cd /home/pi/julius
$ ./julius-4.5/julius/julius -C julius-test.conf

あちゃ、Error がでました。
julius


OSS が Built in されていないと云っています。
では、snd-pcm-oss Modules を組込ます。
$ sudo apt-get install osspd-alsa


/etc/modules に nano を起動して snd-pcm-oss を追加します。

$ cd /etc
$ sudo nano modules
modules oss

行の最後に下記を追加する。
snd-pcm-oss


再度、julius を実行してみます。
julius の実行は、Program をフルパスで指定しなくても、
単に、julius と名称を入れるだけで起動できます。

$ cd /home/pi/julius
$ julius -C julius-test.conf

またしても、Error がでます。


/etc/profile に julius が使用する Card 番号と Device 番号を設定します。
Raspberry Pi が立ち上がるたびに、Sounds Device の設定を
読み込む様に最後の行に下記を追加します。

$ cd /etc
$ sudo nano profile
profile

export ALSADEV="plughw:0,0" を追加
これは再起動を伴います。


再度、julius を実行してみます。
$ julius -C julius-test.conf

またしても、Error がでます。


InterNet から持ってきて作成したjulius-test.conf の設定が -input oss に
なっていたのでこれを -input alsa に変更します。

$ cd /home/pi/julius
$ sudo nano julius-test.conf
julius

下記2行を変更します。
#-input oss
-input alsa


再度、julius を実行してみます。
$ julius -C julius-test.conf

julius-test.conf
julius


それでも、流れる様に Error がでます。
今度は、rdhmmlist が julius に組込みされていないといっています。



alsa の utility で何か不足しているものがあるので、
組み込んでくれないのかもしれません。
alsa Package の install をしてみます。
$ sudo apt-get install libasound2 alsa-utils alsa-oss


これでも、やはり Error がでます。


再度最初から
julius に alsa を組み込むのは、make install の時しかありません。
この時に --with-mictype=als を指定する事によって組込されます。
tar は downLoad してあるので、再度解凍から make install をやり直してみます。

$ sudo tar xvf v4.5.tar
$ cd julius-4.5
$ sudo ./configure --with-mictype=alsa
$ sudo make
$ sudo make install


再度、julius を実行してみます。
$ julius -C julius-test.conf

それでも、Error がでます。


julius の削除
録音・再生は正常に行われている訳ですから、設定や alsa の問題ではなく
alsa を組み込んでくれないのは julius 側に問題があるかもしれません。
また、Raspberry Pi 4B と tar で展開したjulius4.5 は相性が悪いのかもしれません。
julius を tar で展開して install しましたが、zip に変えてみます。
tar で展開した、julius-4.5 をまず削除します。
rm -rf で Directory ごと削除します。

$ cd /home/pi/julius
$ sudo rm -rf julius-4.5       #さようなら tar


zip で展開に挑戦
再度、zip の DownLoad から始めます。
$ sudo wget https://github.com/julius-speech/julius/archive/v4.5.zip
$ sudo unzip v4.5.zip
$ cd julius-4.5
$ sudo ./configure --with-mictype=alsa
$ sudo make
$ sudo make install


再度、julius を実行してみます。
$ julius -C julius-test.conf

zip install 後に -help で確認すると alsa は julius に組込が行われました。

$ cd /home/pi/julius/julius-4.5
$ julius -help
julius

今度は、Mic の下の行に alsa が組み込まれています。
今度は大丈夫かな。



再度、julius を実行してみます。
julius


ダメ、うまくいきません。
今度も rdhmmlist not found という Error が流れる様に出る。
これは、Ctrl+C で止めます。

Error の内容は、rdhmmlist が無いといっているけど、
jnas-tri-3k16-gid.binhmm File や logicalTri File は
キチンと定義してある。
何が悪いんだろう。



再度、julius -help を確認してみよう。

$ cd /home/pi/julius/julius-4.5
$ julius -help
julius


zip で install したら、alsa は組込みできたけど、今度は、oss がなくなった。
これが原因で Error が出たのかな。
もう、やる事が無くなってきたよ、何が悪いんだろう。


logicalTri の存在

あれ。今まで気づかなかった。
Dictation-kit-4.5 の model/dnn の下から logicalTri を Copy してきたけど、
model/phone_m の下にも同じ logicalTriがある。
dnn 配下から Copy してくるのをやめて、model/phone_m 配下の logicalTri を
Copy してみた。
$ sudo cp phone_m/logicalTri /home/pi/julius

再度、julius を実行してみます。
$ cd /home/pi/julius
$ julius -C julius-test.conf


おぉ〜。やっと解決した。
結論としては、Dictation-kit-4.5 の model/dnn 配下の logicalTri は、
julius-4.5 と相性が合わないので、Error が出るという事でした。
model/phone_m 配下の logicalTri 又は、logicalTri-3k16-gid.bin を
Copy して使用すれば正常に動作しました。
Binary File (.bin)を使用すれば、動作速度が早くなります。
$ sudo cp phone_m/logicalTri-3k16-gid.bin /home/pi/julius

えらく遠回りしたな。


----------------------------------------------------------------------------------------------------------------------------
・けいざん美術館
・Blog 油絵もろもろ
・EXCEL VBAであくせく
・けいざんの食べログ


                 Site Designed by Kasio Keizan