Julius で音声認識をする 2020/11/17
Raspberry PiでJuliusを使った音声認識ができるということで早速やってみました。
USBマイクの用意
何はなくともマイクがなければ始まりません。Raspberry Piではスピーカ端子はありますが、マイク端子はありません。USBマイクが必要です。マイクはUSBカメラにも実装されています。

これを使ってもいいのですが、マイクの性能が認識に大きく影響を与えます。比較などするためUSBマイクをアマゾン購入しました。

案外カッコいいです。また、

マイクをUSBコネクタに挿入する方式なのでマイクをパソコンやオーディオ機器で利用することができいます。
マイクを接続してみる
ラズベリーのUSBポートにマイクを接続すると挿入するのが硬い。こんな硬いコネクタを使っている製品は欠陥品ではないか?マイクをパソコンにつないでAudacityでテスト。OKです。音量不足はありません。(ネットの書込みでマイクを買ったが音量不足というのが案外ありました。)ノイズも乗っていません。ちゃんとした音になっています。

最初はマイクを接続っしないでlsusbをします。

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f2:0939 Chicony Electronics Co., Ltd
Bus 001 Device 006: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

マイクを接続
pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f2:0939 Chicony Electronics Co., Ltd
Bus 001 Device 006: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 009: ID 8086:0808 Intel Corp.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

赤く表示したデバイスがマイクです。
マイクとUSBコネクタがまともそうなのでラスベリーで使ってみます。音量の調整はデスクトップでできますが、マイクの設定はありません。ちなみにUbuntuを入れたレッツノートではマイクの音量設定がありました。ラスベリーはマイクなしなのでわざわざGUIでの設定などしなかったのでしょうね。
マイクの音量レベルを上げる
マイクの音量レベルは初期値0です。このままでは使えません。音量レベルを上げます。

pi@raspberrypi:~ $ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 2: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0

カード2 デバイス0にUSB Audio が実装されています。

pi@raspberrypi:~ $ amixer -D hw:2
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 151
Mono:
Front Left: Playback 44 [29%] [-20.13dB] [on]
Front Right: Playback 44 [29%] [-20.13dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 127 Capture 0 - 16
Mono: Playback 127 [100%] [23.81dB] [off] Capture 16 [100%] [23.81dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]

カード2の情報が出力されます。


pi@raspberrypi:~ $ amixer -D hw:2 sset Mic 100%
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 127 Capture 0 - 16
Mono: Playback 127 [100%] [23.81dB] [off] Capture 16 [100%] [23.81dB] [on]

マイク音量を100%に設定します。

録音する

#で労音レベルが表示されます。
停止するには
Ctrl+C
です。

arecord,aplayではwavファイルしか使えません。また、無音部分の削除など編集ができないのは痛いです。そこで有名なAudacityがラズベリーでも使えます。
$sudo apt install audacity
でインストールできます。


音声の編集やFFT解析などいろいろな機能が使います。また、mp3ファイルに保存することもできます(Windows版は別途mp3用のdllが必要です)。とても出来のいいソフトです。お試しになってください。
Juliusのインストール
現時点は2020/11/17です。時間が過ぎればここにあるやり方でインストールできなことがあるかもしれません。ご承知おきください。

必要なライブラリのインストール
$ sudo apt install build-essential zlib1g-dev flex
$ sudo apt install libasound2-dev libesd0-dev libsndfile1-dev

マイクの設定
$ sudo nano /etc/profile
最終行に
export ALSADEV="plughw:2,0"
を追加する。

Julius本体

https://github.com/julius-speech/julius/releases
julius-4.6.zip

インストール
ホームディレクトリ /home/piにjulius-4.6.zipをコピーする。
cd ~/
$unzip julius-4.6.zip

cd julius-4.6
$ ./configure --with-mictype=alsa
$ make
$ sudo make install
インストールの参照ページ

Julius キットのインストール
$mkdir julius-kit

ディクテーションキット (dictation-kit)

https://julius.osdn.jp/index.php?q=dictation-kit.html
dictation-kit-v4.5.zip

/home/pi/julius-4.6/julius-kitへdictation-kit-v4.5.zipをコピー。
cd ~/julius-4.6/julius-kit
unzip dictation-kit-v4.5.zip


Julius記述文法音声認識実行キット
https://julius.osdn.jp/index.php?q=grammar-kit.html
grammar-kit-4.3.1.zip

home/pi/julius-4.6/julius-kitへgrammar-kit-4.3.1.zipをコピー。
cd ~/julius-4.6/julius-kit
unzip grammar-kit-4.3.1.zip

以上で完了。

動作確認:
$julius -C ~/julius-4.6/julius-kit/grammar-kit-4.3.1/testmic.jconf -charconv SJIS UTF-8
<<< please speak >>
が表示されているとき、「みかん」「リンゴ」「ぶどう」のいずれかを喋れば認識した文字を表示します。