ラズパイ4 JULIUS(音声認識エンジン)を使う①

概要

 ラズパイ4で 「Julius(ジュリアス)」というフリーの音声認識エンジンを使ってみます。インストールは、パソコン工房の記事を参考にさせて頂きました。
( Julius公式サイト : https://julius.osdn.jp/index.php )

Julius インストール

 インストールは パソコン工房記事通りに実施ました。
( PC工房:https://www.pc-koubou.jp/magazine/19743 )

① Julius 設定

 次表の手順で設定しています。

mkdir juliusルート下に「julius」作成
cd julius「julius」移動
wget https://github.com/julius-speech/julius/archive/v4.4.2.1.tar.gz ソースコードダウンロード
tar xvzf v4.4.2.1.tar.gz    ダウンロードファイル解凍                         
cd julius-4.4.2.1「julius-4.4.2.1」移動
sudo apt-get install libasound2-dev libesd0-dev libsndfile1-dev必要ライブラリーインストール
※途中で「Y」入力し処理継続
./configure –with-mictype=alsaスクリプト実行。
サウンドドライバ「ALSA」
makeコンパイル
sudo make installインストール

 Linux の場合、 OSSドライバ優先とのことです。ALSA native API使用時は、configure で –with-mictype=alsa を指定します。(https://julius.osdn.jp/index.php?q=doc/mic.html)
 

② ディクテーションキット ダウンロード・解凍

 ディクテーションキットをダウンロード・解凍します。

cd ~/juliusルート下「julius」移動
mkdir julius-kit「julius-kit」作成
cd julius-kit「julius-kit」移動
wget https://osdn.net/dl/julius/dictation-kit-v4.4.zipディクテーションキットダウンロード
unzip dictation-kit-v4.4.zip解凍
③ マイク設定
(1)WEBカメラ(USB接続)優先順位設定

 今回は、WEBカメラ(USB接続)内蔵マイクを使用します。WEBカメラを接続し、下記コマンドを実行します。

cat /proc/asound/modules

 私の環境では、次の通り snd_bcm2835 が優先されているので、USB接続 snd_usb_audio を優先させるため設定変更します。

  

 VIM エディタ で「alsa-base.conf」を作成・編集します。

sudo vim /etc/modprobe.d/alsa-base.conf

 次の通り編集・保存後、VIMエディタ を終了します。

options snd slots=snd_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1

 VIM エディタ がインストールされていない場合、次のコマンドでインストール後、編集作業を行います。

sudo apt-get install vim

 再起動し、優先順位が変わっていることを確認します。

   
(2)ALSADEV(環境変数)設定

 Juliusで「ALSA」インタフェースを使用する場合、ALSADEV(環境変数)で利用デバイスを設定する様です。先ず「arecord -l」コマンドで、カード番号とデバイス番号を確認します。
 次の通り、 カード:「0」,デバイス:「0」 でした。

 環境変数 ALSADEV=”plughw:0,0″ のように指定し、ALSA 録音カード・デバイスを指定出来ます。
( https://julius.osdn.jp/juliusbook/ja/desc_adin.html )

 「.profile」にて、環境変数が設定される様にします。
 bash ログイン時に「.bash_profile」「.bash_login」がない場合、読み込まれる設定ファイルです。

 VIM エディタ で「.profile」を開きます。

sudo vim ~/.profile

 開いた「.profile」に次の様に追記します。

export ALSADEV="plughw:0,0"

 追記状態です。保存後、VIMエディタを終了します。

④ その他

 パソコン工房記事に従い、次の処理をしました。
 処理後、ラズパイを再起動します。

sudo apt-get install alsa-utils sox libsox-fmt-all

sudo sh -c "echo snd-pcm >> /etc/modules"
alsa-utilsサウンド機器利用に必要なプログラム群
soxSoXコマンドラインによる音声ファイル操作ツール
libsox-fmt-allSoXでmp3などオーディオ形式を扱うプログラム

Julius を実行

 Juliusを “demo” モードで実行してみます。

# ディレクトリを変更する
cd ~/julius/julius-kit/dictation-kit-v4.4

# Julius デモ(demo)モードで実行する
julius -C main.jconf -C am-gmm.jconf -demo

 Julius 起動オプションです。とりあえず、“demo” モードで実行しますが、“module” モードで実行すると、python で認識結果に応じて処理内容を変えるなどの応用が出来る様です。

-module [port]  Julius を「サーバモジュールモード」で起動。TCP/IP 経由で 処理の制御・認識結果・イベント通知が行 える。port省略時は 10500 が用いられる。
-demo-progout -quietと同等。
-quiet :出力抑制する。認識結果は単語列のみ出力。
https://julius.osdn.jp/juliusbook/ja/desc_options.html より

 “<<< please speak >>>” と表示されれば、音声入力待ち受け状態になっているので、マイクに向かって話しかけてみます。
 今回は、比較的 騒音が少ない状況で、ゆっくり丁寧に次の例文を読んでみました。

  

 次の通り No 6,12 を除いて、正しく変換されたと思います。
 但し、“ 比較的 騒音が少ない状況で、ゆっくり丁寧に ” と書きましたが、騒音・声の質/話し方・マイク性能/距離・話す内容 等によって、まったく異なる結果になると思います。実用的に使う場合は、更に検討が必要と感じました。

  

まとめ

 使い方に工夫は必要と思いますが、ある程度 環境を整えれば、ラズパイ4でも音声認識が出来ることを確認出来ました。
 Julius での独自辞書利用 や module モードで実行した時の pythonプログラムとの連携方法等について、次回確認する予定です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です