自作WiFiスピーカー(Spotifyのみ対応)

WiFiスピーカーという商品ジャンルがありますな。無線LANにつないで、ネット経由で音源を供給して鳴らすスピーカーシステムの総称。GoogleのChromecastやAppleのAirPlayなどのおかげで対応アプリが増えて一気に普及した印象です。

製品によってはSpotifyに対応していることもありますね。SpotifyアプリでLAN上の対応WiFiスピーカーを選ぶと、そのスピーカーから音が出る。このとき、再生する音源ファイルはアプリから転送するのではなく、WiFiスピーカー自身がサーバーから取得します。特にスマホでSpotifyしているときは快適な機能。

で、本題ですが、Spotify対応WiFiスピーカーは自作することができます。ワタクシは下記のコンポーネンツを組み合わせて作りました。

・Raspberry Pi Zero W
Justboom Amp Zero (DACとアンプが一体となっているRasPi Zero用拡張基板)
spotifyd (unix環境でSpotify Connectを実現するオープンソースソフトウエア)
WP-FL08 (8cmフルレンジ・スピーカーユニット)
・FOSTEX P800-E (8cmフルレンジユニット用エンクロージャ)

コイズミ無線とヨドバシで揃えられるので、アキハバラ1回で調達可能ですな。予算は2万円前後でしょうか。もちろん手持ちのスピーカを使ってもいいですね。

ソフトウエアの設定は、この手の作業に慣れてない人にとっては少し難しいかもしれません。まず、justboom基板から正しく音が出るところまでを設定しましょう。この段階で必要な情報はこのページにまとめられてます。Linuxのサウンドまわりの設定に不慣れな人(ワタクシもそうです)は、基板を載せる前にUSBやHDMI経由での音出しを練習しておくといいかも。

spotifydの最低限の設定はconfファイルひとつで済むのですが、ワタクシはここでも少し手間取りました。GitHub上の説明だけではわからなかった。試行錯誤して、いちおう動くようになった段階のワタクシの設定ファイル(.config/spotifyd/spotifyd.conf)を晒しておきます。


[global]
username = あなたのSpotifyアカウント名
password = そのパスワード
backend = alsa
device = plughw:1,0
volume-control = softvol # or alsa_linear, or softvol
mixer = PCM
device_name = ZeroW
bitrate = 320
cache_path = /home/pi/spotify_cache
volume-normalisation = true
normalisation-pregain = -3

今回作ったWiFiスピーカーはSpotify専用。mopidyという別のソフトウエアを使えばChromecastを叩いたり、SoundCloudやYoutubeの音源を再生できたりするのですが、ちょっと試した範囲ではあまり安定しませんでした。Zeroだと厳しいのかも。ストリーミング以外の使い道としては、sshでログインしてspeaker-test等のコマンドを使ってスピーカーセッティングのチェックをしたりできるのは便利です。

当初はエンクロージャから作って弊社オリジナルのWiFiスピーカーを実現したいと思ってました。でも木工技術が稚拙すぎてすぐ挫折したんです。FOSTEXのエンクロージャは組み立てやすく、音も良く、コスパ最高。基板と電源のエンクロージャをがんばるほうが良さそう。どんな形にしましょうか。