【LIVA】【Ubuntu server14.04】Juliusを使いたい(USBマイクセッティング編)
家電を音声で操る、という魅力的なテーマに挑戦したく、Juliusのセッティングに着手しましたが、事の顛末を記載しておきます。
1.Juliusとは
詳しくはこちら。
発音辞書や言語モデル・音響モデルと組み合わせることで、特定の音声に対して色々動作をさせることができます。
2.下準備
マイクを用意します。
今回買ったのは「MM-MCUSB22」。部屋のどこからでも家電を操るとなると可能な限り集音が必要になりますので。
サンワサプライ WEB会議高感度USBマイク MM-MCUSB22
- 出版社/メーカー: サンワサプライ
- メディア: Personal Computers
- 購入: 1人 クリック: 2回
- この商品を含むブログを見る
USBマイクのセッティングとして、以下のように対応します。
①デバイスの確認
$sudo lsusb
Bus 001 Device 005: ID 0d8c:0010 C-Media Electronics, Inc.
(略)
Bus001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
(略)
LIVAのUSBポートは2つありますが、今回はUSBハブにUSBマイクを設定しているため、上記のような出力になります(Device005がMM-MCUSB22)。
※2017/1/29追記
現在はラズパイ2で動かしていますが、その場合はUSBマイクを接続すると以下のようにオーディオモジュールが追加される。
$cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
この snd_usb_audioを0になるように変更する必要がある。
②USBマイク優先度の変更
$sudo vi /etc/modprobe.d/alsa-base.conf
options snd-usb-audio index=-2
↓
options snd-usb-audio index=0
USBマイクの優先度が高くなるように、snd-usb-audioを0に変更します。
※2017/1/29追記
どうやら、ラズパイ2だと上記ファイルがないため作ります。以下のように作成。
$sudo vi /etc/modprobe.d/alsa-base.conf
options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1
優先度を変更したら一度再起動します。
$sudo shutdown -r now
③優先度の変更を確認
$cat /proc/asound/modules
0 snd_usb_audio
1 snd_hda_intel
0 snd_usb_audioとなっていれば成功。
④マイクの音量を変更
$sudo amixer set Mic 54
Simple mixer control 'Mic',0
Capabilities: cvolume cvolume-joined cswitch cswitch-joined
Capture channels: Mono
Limits: Capture 0 - 57
Mono: Capture 54 [95%] [18.52dB] [off]
環境によって違うと思われますが、私のマシンでは最大設定値は57だそうです。
⑤録音できるか確認
$sudo arecord -r 16000 -f S16_LE test.wav
止めるときはCtrl+Cで(多分)。
⑥再生できるか確認
$ aplay ./test.wav
※2017/05/06追記
デバイスをちゃんと指定しておかないとaplayでファイル再生ができなくなったりするようなので、以下の対応を実施。明確にalsaで使うデバイスを指定する。
$ sudo aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 1: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
サブデバイス: 7/7
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
サブデバイス #4: subdevice #4
サブデバイス #5: subdevice #5
サブデバイス #6: subdevice #6
カード 1: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
$ sudo arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB Audio Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
上記の情報をもとにホームディレクトリ配下の.asoundrcを編集(記述場所はどこでもよさそうだけど、最初に記述)。
hw:X,Yの設定は、Xがカード番号、Yがデバイス番号です。
$ vi ~/.asoundrc
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:0,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:1,0"
}
}