マイクを使おう
Raspberry Pi 3(Model B+)とjulius(ver4.4.2.1)を使って音声認識を試してみます。
まずはマイクを認識して録音/再生するところまでやってみましょう!
用意するもの
- Raspberry Pi3(Model B+)
- USBマイク
Raspberry PiのOSは最新(2018.06現在)のStretchを使用しています。
USBマイクについては色々種類があって迷いましたが、amazonで見かけたドングル型にしました。接続が成功して、物足りなくなったらもうちょっと高めの奴に手を出そうかな🤔
OSアップデート
念のため最新版にしておきます。
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get dist-upgrade $ sudo rpi-update
USBマイクの設定
現状の確認
USBマイクを刺す前に、現状の確認をしておきます。
$ lsusb Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
USBマイクを装着
USBマイクを装着して再度確認します。
$ lsusb Bus 001 Device 004: ID 8086:0808 Intel Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ちゃんと認識してるようです。
あ。ちなみにIntel Corp.のところは購入したマイクによって異なります。
カードとデバイス番号を確認
割り振られているカードとデバイス番号を確認します。
$ arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
カード1、デバイス0とありますので、これを/etc/profileに書き込んでおきます。
$ sudo vim /etc/profile # 一番最後の行に↓を追記して閉じます。 export ALSADEV="plughw:1,0"
優先順位の変更
オーディオモジュールの優先順位を確認し、変更します。
$ cat /proc/asound/modules 0 snd_bcm2835 1 snd_usb_audio
数字が若い方が優先です。
上記からはUSBマイク(snd_usb_audio)がオーディオ出力(snd_bcm2835)よりも下であることが読み取れますので、この優先順位を変更します。
$ sudo vim /lib/modprobe.d/aliases.conf cat /lib/modprobe.d/aliases.conf # These are the standard aliases and dependencies. # This file does not need to be modified. # prevent unusual drivers from appearing as the first sound device ########### options snd-pcsp index=-2 # options snd-usb-audio index=-2 options cx88_alsa index=-2 options snd-atiixp-modem index=-2 options snd-intel8x0m index=-2 options snd-via82xx-modem index=-2 options snd slots=snd_usb_audio,snd_bcm2835 options snd_usb_audio index=0 options snd_bcm2835 index=1 # work around other kernel issues ############################################ # The EHCI driver should be loaded before the ones for low speed controllers # or some devices may be confused when they are disconnected and reconnected. softdep uhci-hcd pre: ehci-hcd softdep ohci-hcd pre: ehci-hcd
options snd-usb-audio index=-2
となっている個所をコメントアウトし、赤字の部分を追記します。
そして再起動してください。
$ sudo reboot
再度優先順位を確認します。
$ cat /proc/asound/modules 0 snd_usb_audio 1 snd_bcm2835
優先順位が変わっていればOKです。
USBマイクのテスト
USBマイクで正しく録音/再生できるか確認します。
録音/再生
次のコマンドで録音します。録音ファイルはtest.wavとしておきます。
$ arecord -D plughw:0,0 -f cd test.wav 録音中 WAVE 'test.wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ ^Cシグナル 割り込み で中断...
適当にマイクに向かって喋ってみます。
上記にある通り、CTRL+Cで録音を停止できます。
再生
次のコマンドで再生します。
$ aplay -D plughw:1,0 test.wav
。。。聞こえない(´・ω・`)
感度設定
マイクの感度を設定してみます。
使っているマイクの感度はMIN=0,Max=16 ということなので、16を設定します。
$ amixer sset Mic 16 -c 0 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 16 Mono: Capture 16 [100%] [23.81dB] [on]
辛うじて聞こえるレベルになりました。
マイクが悪いのかな?😢
まぁ、とにかく録音、再生ができたのでよしとしましょうw
次回はいよいよjuliusをインストールして音声認識をしてみます👍
コメント