LoginSignup
12

More than 3 years have passed since last update.

posted at

RaspberryPiでUSBスピーカーをデフォルトの音声出力デバイスにする

はじめに

RaspberryPi上でAlexaで遊ぶために、USBスピーカーをデフォルトの出力にしたいなあと思って設定したメモ。Alexa自体はUSBスピーカーじゃなくても使えますが、デフォルトではイヤホンジャックの出力が優先になっているので、それを変えます。

環境

全部買ってからだいぶ経っている古いものなので、手に入りにくいものもあるかもしれません。手元にUSBマイクがないのでWebカメラを使います。

RaspberryPiの設定

毎回毎回設定が面倒くさいので、巷にはすでにあると思いますが、自分でセットアップツールを作りました。使用方法もReadmeに書いてあります。普通に使えますが、他の環境で試していないので、人柱になっていただいてもかまいません。 -> https://github.com/jumjamjohn/Raspian

流れ

  • 動作確認のための音源作成
  • スピーカーの動作確認
  • USBスピーカーをデフォルトの出力にする設定

動作確認のための音源作成

  • 録音デバイスの一覧
Terminal
arecord -l
# =>
# card 2: U0x46d0x81d [USB Device 0x46d:0x81d], device 0: USB Audio [USB Audio]
#  Subdevices: 1/1
#  Subdevice #0: subdevice #0

RaspberryPi上のどこのUSBポートに挿すかによって、card カード番号: ..., device: デバイス番号: ...の番号が変わります。USB Audioなどとなっているデバイスのカード番号とデバイス番号を控えておきます。

  • 録音
Terminal
cd ~
arecord -D plughw:1,0 -d 10 -f cd test.wav

Recording WAVE 'test.wav'と表示されて録音が始まるので、「テスト、テスト」とつぶやいてみましょう。コマンドの解説として、arecord -D plughw:カード番号,デバイス番号 -d 録音する秒数 -f cd 音源のファイル名です。上のコマンドで~/test.wavが作成されているはずです。

USBスピーカーの動作確認

  • 音源の確認

RaspberryPiのイヤホンジャックにイヤホンを挿し、

Terminal
aplay test.wav

で先程の音源が再生されます。音源が正しく録音されていて、かつ音声出力がデフォルトの状態で、かつイヤホンとイヤホンジャックが正常に動作していれば、聞こえるはずです。聞こえなかったらそのどこかが正常に動作してません。

  • 音声出力デバイスの一覧
Terminal
aplay -l

arecord -lのときと同様に、USB Audioとなっているもののカード番号とデバイス番号を控えておきます。

  • USBスピーカーの動作確認
Terminal
aplay -D hw:1,0 test.wav

音源が正しく録音されていて、USBスピーカーとUSBポートが正常に動作していれば、聞こえるはずです。聞こえなかったらそのどこかが正常に動作してません。コマンドの解説として、aplay -D hw:カード番号,デバイス番号 音源のファイル名です。

USBスピーカーをデフォルトの音声出力デバイスにする設定

USBスピーカーがRaspberryPi上で正常に動作していることが確認できたら、音声出力デバイスの優先順位を変更します。上のように順々に動作を確認していかないと、うまくいかなかったときにどこが動いていなくてうまくいかないのかわからなくなるので、順番にやります。慣れてたらすっ飛ばしても良いと思いますが。

  • バックアップを取っておく

システム上重要なファイルを編集します。何かあったときに復元できないと困るので、バックアップを取ります。

Terminal
cp /usr/share/alsa/alsa.conf /usr/share/alsa/alsa.conf.bak
  • alsaの設定ファイルを編集

viでもnanoでも良いです。

Terminal
sudo vi /usr/share/alsa/alsa.conf

aplay -lで確認したUSBスピーカーのカード番号とデバイス番号を入れます。

/usr/share/alsa/alsa.conf
...
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 0
...
  • 再起動
Terminal
sudo reboot
  • 再びSSHして音源再生
Terminal
aplay test.wav

これでUSBスピーカーから再生されれば成功です。予想した動作でなかった場合、/usr/share/alsa/alsa.confの設定に問題があるかもしれません。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
12