KIHARA BLOG:社内ラズコンでめざせ優勝!

Raspberry Pi(ラズパイ)で機械学習とか音声認識とか姿勢推定とかしながら組み込みシステムを構築して、社内ラズコンで優勝をめざすブログです。勉強中:Raspberry Pi、Linux、Python、Coral EdgeTPU、PoseNet、Julius

ラズパイ2日目①:ラズパイにマイクを接続する

Raspberry Pi(ラズパイ)にカメラを接続します。USB挿すだけだしチョレーと思っていたら、意外なところで躓きました。

ラズパイにマイクを接続する

マイクをUSBポートに接続します。正しく認識されているか、Terminalからlsusbコマンドを実行して確認します。

lsusb
Bus 001 Device 005: ID 0c76:161e JMTek, LLC.
Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

「JMTek, LLC.」がUSBマイクです。デバイスとして認識されていることが確認できました。

USBマイクの優先度を上げる

デフォルトでは内蔵オーディオモジュールを優先して使うよう設定されているため、USBマイクを最優先に変更します。
Terminalからオーディオモジュールの設定を確認します。

$ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio

上記のように、0(最優先)がsnd_bcm2835(内蔵オーディオモジュール)になっている場合、alsa-base.confファイルを書き換えて設定変更します。 Raspbianの最新バージョン(Raspbian Buster 2019-09-26)ではalsa-base.confファイルが存在しなかったので、Terminalからnanoコマンドで新規作成します。

$ nano /etc/modprobe.d/alsa-base.conf

nanoは、Raspbianに標準搭載されているテキストエディタです。
nanoが立ち上がったら、次のように入力して、Ctrl+O, MAで書き込み保存します。

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

f:id:KIHARA0223:20200102144147p:plain
…ん?
なんかエラーがでています。

うーん。コマンドでの処理はやめて、GUIでファイル作成!

f:id:KIHARA0223:20200102135039p:plain

…エラー。メッセージ内容もよくわからん。
フォルダの書込み権限がないのかな?ということで、Terminalからスーパーユーザ(rootユーザ)の権限でファイル作成コマンドを実行してみると….

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

f:id:KIHARA0223:20200102135152p:plain

できました!
スーパーユーザの権限でコマンド実行するには、先頭に「sudo」を付けるだけでOKです。
しかし、そもそもRaspbianデフォルトユーザpiには最初からスーパーユーザ権限が付与されているはずなんだけど…??あとで調べてみよう。あと、Linux系コマンドをよくわからないまま打ってるので、きちんとまとめたいなぁ。

alsa-base.confが更新できたら、ラズパイを再起動します。

$ reboot

再度、Terminalからオーディオモジュールの設定を確認してみます。

$ cat /proc/asound/modules
 0 snd_usb_audio
 1 snd_bcm2835

上記のように、0(最優先)がsnd_usb_audio(USBマイク)になっていれば、優先度の設定は完了です。

マイクの感度設定

音声入力のために、感度の設定を行います。
まずは、Terminalからサウンドカード番号を確認します。

$ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB PnP Audio Device], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

USB Audio(USB)マイクのカード番号が「0」であることが確認できたので、サウンドカード0番に感度を設定します。

$ amixer -D hw:0 sset Mic 60%
Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 496
  Mono: Capture 62 [60%] [3.87dB] [on]

「hw:0」がサウンドカード番号の指定箇所です。「Mix 60%」がマイク感度の指定です。100%にすると音割れするという情報があったので、60%指定にしました。感度が悪いようなら今後調整したいと思います。また、今回は%指定にしていますが、dB指定もできます。

さて、これでマイクの設定が完了しました。ここまでで、周辺モジュール一式がラズパイに接続できたことになります。
次回からはいよいよシステム作成に突入です!日本語の音声認識「julius(ジュリウス)」に挑戦します!