ラズパイ3日目②:Raspberry Pi+Juliusで音声を認識
Juliusの独自辞書を作成…できない話が解決したので、記事を続々と書いていきます!
なんかもうJuliusではいろいろ躓いて、ほんとバージョン変わるとめんどくさいもんだなってのを痛感しましたよ… ネット情報が多いからってラズパイ3を選んだけど、それでもこのありさま。ラズパイ4選んでたらもっと大変だったんじゃないかと思う。先駆者のみなさま、心から尊敬します。
さて、今回は、ラズパイ(Raspberry Pi)とJuliusを使って単語認識させるまでをまとめます。
- ラズパイ:Raspberry Pi 3 Model B+
- Julius:Julius-4.5、dictation-kit-4.5、grammar-kit-4.3.1
- マイク:FIFINE USBコンデンサーマイク K669B
ラズパイにマイクを接続する
マイクを接続する方法に関しては、下記記事で紹介しています。参考にしてください。
Juliusをインストールする
Juliusは、音声認識システムの開発・研究のために開発された音声認識エンジンです。オープンソース、フリーライセンス、商用利用可能というアカデミックな一品。
Julius最新版のインストール
Julius公式サイトで最新バージョンを確認し、Terminalからダウンロード、解凍、コンパイル、インストールを行います。
$ wget https://github.com/julius-speech/julius/archive/v4.5.tar.gz
ダウンロードした圧縮ファイルを解凍します。
$ tar zxvf julius-4.5.tar.gz
回答したフォルダ配下へ移動し、コンパイルとインストールを行います。
$ cd julius-4.5 $ ./configure $ make $ sudo make install
インストール後、julius -versionコマンドで以下のようにバージョンが表示されれば、インストール完了です。
$ julius -version JuliusLib rev.4.5 (fast) Engine specification: - Base setup : fast - Supported LM : DFA, N-gram, Word - Extension : - Compiled by : gcc -g -O2 Library configuration: version 4.5 - Audio input primary A/D-in driver : oss (Open Sound System compatible) available drivers : oss wavefile formats : RAW and WAV only max. length of an input : 320000 samples, 150 words - Language Model class N-gram support : yes MBR weight support : yes word id unit : short (2 bytes) - Acoustic Model multi-path treatment : autodetect - External library file decompression by : zlib library - Process hangling fork on adinnet input : no - built-in SIMD instruction set for DNN NONE AVAILABLE, DNN computation may be too slow! Try `-help' for more information.
Juliusパッケージのインストール
音声認識のためのディクテーションキット (dictation-kit)をインストールします。
「インストール」と書いていますが、zipファイルをダウンロードして任意の場所に解凍するだけです。
$ wget https://osdn.net/dl/julius/dictation-kit-4.5.zip $ unzip dictation-kit-v4.4.zip
上記コマンドで失敗する場合、Terminalを使わずにJulius公式サイト/Julius音声認識パッケージからダウンロードしてください。
Julius記述文法音声認識実行キットのインストール
記述文法音声認識実行キット (grammar-kit)をインストールします。
こちらも、「インストール」と書いていますが、zipファイルをダウンロードして任意の場所に解凍するだけです。
$ wget https://osdn.net/dl/julius/grammer-kit-4.3.1zip $ unzip grammer-kit-4.3.1.zip
上記コマンドで失敗する場合、Terminalを使わずにJulius公式サイト/Julius記述文法音声実行キットからダウンロードしてください。
Juliusを動かしてみる
grammar-kitの中にはいくつかのサンプルが用意されています。今回は、fruitを動かしてみます。
$ cd ~/grammar-kit-master/SampleGrammars/fruit $ julius -C testmic.jconf -nostrip -charconv SJIS UTF-8
ところが、エラー発生。
Stat: adin_oss: device name = /dev/dsp (application default) Error: adin_oss: failed to open /dev/dsp failed to begin input stream
/dev/dspデバイスが不足しているため、インストールします。
/dev/dspデバイスを有効にする
ここがまた詰まりポイントでした…。ネット上にはいろいろなやり方が載っているのですが、載っている通りにコマンド打ったらエラーになったり(カーネル最新だとうまくいかないらしい)、カーネルダウングレードしてむりやり認識させる方法であったり(怖くてやりたくない)とかなり迷った。
結果として、Raspberry Pi3B+(OS:Raspbian Buster 2019-09-26)の場合、ossp-alsaをインストールする方法で対応しました。
$ sudo modprobe snd-pcm-oss
Juliusを動かしてみる
再チャレンジです。
$ julius -C testmic.jconf -nostrip -charconv SJIS UTF-8 (中略) <<< please speak >>>
<<< please speak >>>が表示されると、音声入力待ち状態になります。この状態でマイクから話しかけてみると…
STAT: AD-in thread created pass1_best: <s> ぶどう 3 個 です sentence1: <s> ぶどう 3 個 です </s> pass1_best: <s> ぶどう です </s> sentence1: <s> ぶどう です </s>
このように、音声を認識してTerminalに表示します。
ただし認識精度は低いです。「たこ」と言ったのに「りんご」と認識されたりします。(使えないわ~
精度を上げるにはパラメータを設定したり、独自辞書を作成したりと手段があるもよう。
次回は、Juliusの認識精度を上げるアレコレをまとめます。