Pi Zeroによるアプリケーションとして、勝手にググってきて何かを勝手に喋ってるシステムの構築を目指しているので、音声再生の手段が必要。PiZeroでもOSレベルでは他のラスパイと同じと思われ、ネット上に公開されている先人の音声再生に関する情報に従い設定を行う。
USBポートがそもそも足りないので、USBハブを購入。商品名:「iBUFFALO タブレット・スマホ用USB2.0 4ポートハブ 変換コネクター付き ブラック BSH4UMB04BK」。このタイプは、mircoBで結合できるので変換コネクタが不要。
音声再生手段は以前BeagleBoneで使っていた、SoundBlaster Play!を流用する(Linuxの音声再生で安定した動作が可能)。USBハブをPi Zeroにさして、無線LANと、SoundBlasterをさす。そしてブート
aplayコマンドを打ってOSがデバイスを認識しているか確認(これ以降はすべてルート権限で実行しています。ユーザ権限でデバイス使えるかどうかしっかり確認していないので、まずはルートで確認)
root@raspberrypi:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: U0x41e0x30d3 [USB Device 0x41e:0x30d3], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
USBAudioと表示される、Card:1、Device:0がSoundBlasterと思われる。
本来は、/proc/asound/cardsを見るべきか。こっちが大元の情報だろう多分。
$ cat /proc/asound/cards 0 [ALSA ]: bcm2835 - bcm2835 ALSA bcm2835 ALSA 1 [U0x41e0x30d3 ]: USB-Audio - USB Device 0x41e:0x30d3 USB Device 0x41e:0x30d3 at usb-20980000.usb-1.2, full speed
併せて録音デバイスも確認
root@raspberrypi:~# arecord -l **** List of CAPTURE Hardware Devices **** card 1: U0x41e0x30d3 [USB Device 0x41e:0x30d3], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
以下のコマンドでWAVファイルが再生できるのを確認(wgetでSonyのPCMサンプル音源を取得、aplayで再生)
cd /tmp wget http://www.sony.jp/ic-recorder/sound-compare/pcm/wav/band/middletempo/PCM-D50.wav aplay -D plughw:1,0 PCM-D50.wav
ハイレゾ音源データ(flac形式)を再生するには、VLCを使うのがいいようだ。
以下で録音もできるはずだが。。テスト未実施
arecord -D plughw:1,0 -f cd test.wav
■VLCを入れてみる
あまり考えず(調査せず)、VLCをパッケージでインストール
sudo apt-get install vlc
file:/etc/asound.confを以下の内容で設定。asound.confが必須なのかどうか分かりませんが、cvlcでコマンド引数をいろいろ試したけどどうやっても音が出なかったので、ラズパイフォーラムのコメントに従ってみた。
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 }
上記設定で、card 1にしているのは、aplay -lでSoundBlasterがcard 1になっているから
ハイレゾ音源をSonyのサイトからDLして、cvlc(Command Live版 VLC)を起動。cvlc起動時、いろいろエラーが出たがハイレゾ音源のサンプルは再生できた。
wget http://helpguide.sony.net/high-res/sample1/v1/data/Sample_BeeMoved_96kHz24bit.flac.zip unzip Sample_BeeMoved_96kHz24bit.flac.zip cvlc Sample_BeeMoved_96kHz24bit.flac
Shureの密閉型ヘッドフォンで聴くと確かに音の抜けが良いようには思う。だけど本格的なオーディオセットではないので、音の情報量が多いのかどうかは不明。
■参考URL
ラズパイフォーラム;VLCで音が出ないQA(asound.confが必要とのコメントあり)
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=11605
Sonyのハイレゾ音源サンプルサイト
http://helpguide.sony.net/high-res/sample1/v1/ja/
VLC CommandLine Wiki
https://wiki.videolan.org/Documentation:Command_line