【LIVA】【Ubuntu server14.04】Juliusを使いたい(USBマイクセッティング編)

家電を音声で操る、という魅力的なテーマに挑戦したく、Juliusのセッティングに着手しましたが、事の顛末を記載しておきます。

 

1.Juliusとは

 詳しくはこちら。

大語彙連続音声認識エンジン Julius

発音辞書や言語モデル・音響モデルと組み合わせることで、特定の音声に対して色々動作をさせることができます。

 

2.下準備

マイクを用意します。

今回買ったのは「MM-MCUSB22」。部屋のどこからでも家電を操るとなると可能な限り集音が必要になりますので。

 

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

 

 

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"
    }
}