概要
ラズパイ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エディタ を終了します。
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 | サウンド機器利用に必要なプログラム群 |
sox | SoXコマンドラインによる音声ファイル操作ツール |
libsox-fmt-all | SoXで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 :出力抑制する。認識結果は単語列のみ出力。 |
“<<< please speak >>>” と表示されれば、音声入力待ち受け状態になっているので、マイクに向かって話しかけてみます。
今回は、比較的 騒音が少ない状況で、ゆっくり丁寧に次の例文を読んでみました。
次の通り No 6,12 を除いて、正しく変換されたと思います。
但し、“ 比較的 騒音が少ない状況で、ゆっくり丁寧に ” と書きましたが、騒音・声の質/話し方・マイク性能/距離・話す内容 等によって、まったく異なる結果になると思います。実用的に使う場合は、更に検討が必要と感じました。
まとめ
使い方に工夫は必要と思いますが、ある程度 環境を整えれば、ラズパイ4でも音声認識が出来ることを確認出来ました。
Julius での独自辞書利用 や module モードで実行した時の pythonプログラムとの連携方法等について、次回確認する予定です。