日本語音声認識
Raspberry Piに大語彙連続音声認識エンジン Juliusをインストールして、日本語の音声認識をしてみます。
OSのインストールやWiFiドングルのセットアップなどの初期設定は[こちら>../Raspbianのインストール)をご覧ください。
必要なもの
- USBマイク(今回はPLANEX USBオーディオ変換アダプタ PL-US35APとSANWA SUPPLY フラット型PCマイク MM-MC23を組み合わせました) PL-US35APのチップはC-Media製のCM119Aで、多くのLinuxディストリビューションで動作実績があります。
今回は上記のようにUSBオーディオアダプタを使いましたが、音声認識のみなら、USBマイクを使ってもいいと思います。
あるといいもの
- セルフパワーUSBハブ(今回はiBUFFALO USB2.0ハブ セルフ&バスパワー 4ポート BSH4A01BKを使いました) あるといいものと書きましたが、Raspberry Piの電源は弱いので、安定動作のためにはほぼ必須だと思います。
- USBスピーカー(今回は前述のPLANEX USBオーディオ変換アダプタ PL-US35APとLOGICOOL ステレオスピーカー Z120BWを組み合わせました) 正しくマイクが動作しているか確認する場合は必要です。 3.5mmミニプラグスピーカーをRaspberry Piの端子に挿すのでもよいのですが、Raspberry Piのノイズを拾ってしまって、非常に音質が悪いです。
手順
USBオーディオ(またはUSBマイク)の認識と動作確認

- Raspberry Piが起動していたら、シャットダウンする。
- USBハブをRaspberry Piに接続する。 (右の写真では、スマホ用充電専用MicroUSBケーブルを使って、Raspberry Pi自体の電源もUSBハブから取っています。(黒いカールコード) 通常の通信もできるMicroUSBケーブルを使うとループ接続になってしまうので、要注意です)
- USBオーディオアダプタと3.5mmミニプラグマイクの組み合わせ(ある いはUSBマイク)を、USBハブに接続する。
- Raspberry Piを起動する。
- USBオーディオアダプタを認識しているか確認する。下記の場合だとDevice 006がUSBオーディオアダプタです。
lsusbBus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 006: ID 0d8c:013a C-Media Electronics, Inc. - USBオーディオアダプタの優先度を確認する。(下記の場合、内蔵オーディオが優先されています。)
cat /proc/asound/modules0 snd_bcm2835
1 snd_usb_audio - USBオーディオアダプタの優先度を上げる。
nano /etc/modprobe.d/alsa-base.conf - index=-2をindex=0にします。
# options snd-usb-audio index=-2
options snd-usb-audio index=0 - Raspberry Piを再起動する。
sudo reboot - USBオーディオアダプタの優先度を確認する。(下記の場合、USBオーディオアダプタが優先されてるようになりました。)
cat /proc/asound/modules0 snd_usb_audio
1 snd_bcm2835 - マイクの感度を最大にする。(録音してみて適宜調整してください)
amixer sset Mic 16 - 録音と再生を確認する。録音できていたら、次に進む。
arecord -r 16000 -f S16_LE test.wav
aplay test.wav
Juliusのコンパイル
- Julius他をダウンロードする。(URLはOSDNを見て、適宜変えてください)
cd
wget --trust-server-names 'http://osdn.jp/frs/redir.php?m=iij&f=%2Fjulius%2F59049%2Fjulius-4.2.3.tar.gz'
wget --trust-server-names 'http://osdn.jp/frs/redir.php?m=iij&f=%2Fjulius%2F59050%2Fdictation-kit-v4.2.3.tar.gz'
wget --trust-server-names 'http://osdn.jp/frs/redir.php?m=iij&f=%2Fjulius%2F51159%2Fgrammar-kit-v4.1.tar.gz' - Juliusを解凍し、configureしてmakeする。
tar xvzf julius-4.2.3.tar.gz
cd julius-4.2.3
./configure
make - ディクテーションキットと文法認識キットを解凍する。
mkdir /julius-kits
cd /julius-kits
tar xvzf /dictation-kit-v4.2.3.tar.gz
tar xvzf /grammar-kit-v4.1.tar.gz - USBオーディオのカード番号を確認する。(下記の場合は0番です。)
arecord -l**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0 - カード番号を環境変数に指定する。
export ALSADEV=hw:0 - いざJulius実行。何か話すと認識結果がターミナルに表示されます。
/julius-4.2.3/julius/julius -C /julius-kits/dictation-kit-v4.2.3/fast.jconf -charconv EUC-JP UTF-8 - 下記のようなエラーが出た場合は…
Stat: adin_oss: device name = /dev/dsp (application default)
Error: adin_oss: failed to open /dev/dsp
failed to begin input stream - snd-pcm-ossモジュールが組み込まれていないようです。組み込みましょう。
#code(bash,nonumber){{
sudo modprobe snd-pcm-oss - 再度Juliusを実行してみます。
/julius-4.2.3/julius/julius -C /julius-kits/dictation-kit-v4.2.3/fast.jconf -charconv EUC-JP UTF-8----------------------- System Information end -----------------------
*************************************************************
* NOTICE: The first input may not be recognized, since *
* no initial CMN parameter is available on startup. *
* for MFCC01*
*************************************************************
Stat: adin_oss: device name = /dev/dsp (application default)
Stat: adin_oss: sampling rate = 16000Hz
Stat: adin_oss: going to set latency to 50 msec
Stat: adin_oss: audio I/O Latency = 32 msec (fragment size = 512 samples)
STAT: AD-in thread created - 無事起動しました。何か話してみましょう。(下記は「こんにちは」と話した結果)
pass1_best: こんに ちは 。
sentence1: こんにちは 。 - 無事日本語が認識されていたら、起動時にsnd-pcm-ossモジュールがロードされるように設定する。
sudo sh -c "echo snd-pcm-oss >> /etc/modules"
Juliusのインストール
- Juliusをインストールする。
cd /julius-4.2.3
make install - 以降は/julius-4.2.3/julius/juliusではなく、juliusで起動できます。