Raspberry pi 2で音声認識してみる


はじめに

Raspberry pi 2で音声認識エンジンであるJuliusを動かすところまでをやってみました。

基本はこちらのページ(以降、参照記事と記載してるのはこのページです)を参考にさせていただいてますが、環境が変わったためかそのままでは動かなかったので、そのあたりを中心にまとめます。

対象とする環境

項目名 対象
本体 Raspberry pi 2 model B
OS RASPBIAN JESSIE March 2016
オーディオアダプタ PLANEX USB オーディオ変換アダプタ ケーブル PL-US35AP
マイク フラット型PCマイク MM-MC23

参照記事みて、本体のマイクだとノイズがきになるので、私もUSBオーディオアダプタを使用しました。
C-Media製のCM119Aを使ったものであれば、同じ方法でいけると思います。

USBアダプタの設定

まず、ラズパイにUSBオーディオアダプタを差します。その後、

$ cat /proc/asound/modules

とすると、

0 snd_bcm2835
1 snd_usb_audio

と表示されます。このままだと、内蔵オーディオが優先されてしまいますので、優先度を入れ替えます。※この方法が参照記事ではうまくいかないです。

alsa-base.confというファイルを新規に作成します。

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

で、以下の3行を記載します。

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

その後、再起動します。再度、

$ cat /proc/asound/modules

すると、

0 snd_usb_audio
1 snd_bcm2835

と入れ替わりました。

動作確認

念のためにマイクの音量を最大にします。

$ amixer sset Mic 16

一度録音をして、再生してみます。実行はスーパーユーザで行う必要があります。
※参照記事ではこの記載がない。以前はスーパーユーザでなくてもいけたのかもしれないし、何らかの設定されていたのかもしれない。

$ sudo arecord -r 16000 -f S16_LE test.wav
$ sudo aplay test.wav

この状態だと、結構ノイズがのっている感じでした。
サウンドアダプタの設定や録音パラメータ関連は少し調整しないといけないかも。

Juliusのコンパイルとインストール

これは参照記事をご覧ください。
注意点は以下。
1. Juliusの実行もスーパーユーザーで行う必要がある
2. sudo modprobe snd-pcm-oss は必要

最後に

ということで、簡単に音声認識を行うための環境を作ることができました。
課題は、ノイズのせいか、認識率が低いことです。参照記事のようにオリジナル単語辞書を作れば、解決できるのかまだそこまではやれてませんが、録音レベルではっきりわかるノイズはクリアーにしておきたい感じです。(今後の課題)

以上