Works perfectly on pis scattered around the house.
I gave up on 3rd party things. My automation VM includes a GUI environment, and I run the official Linux Spotify client. The only way my setup can break is if Spotify gives on Linux entirely.
Snapcast[1] transmits two streams to 7 different speaker setups:
* Music + text to speech
* Just text to speech
When TTS plays on the first stream, music volume is ducked for the duration. That setup is all pulseaudio junk. I could actually play any system audio to my entire house, or even provide an 3.5mm aux input near the VM host, although in practice I stick to Spotify for convenience and the ability to use the clients on any machine to control everything.Speakers in some rooms turn on/off completely with the room, while others stay on but toggle between music and text-to-speech, to make sure I hear those notices (which are like doors opening, washer is done, etc).
My main work setup has a snapcast client, so I hear TTS events even with noise canceling headphones on. Some snapcast clients are placed on existing machines (i.e. TV computer), while a few are dedicated Raspberry Pis.
[1] https://github.com/badaix/snapcast [2] https://github.com/geekuillaume/soundsync
You may want to check out Snapcast. I use it to distribute audio to 6 clients on diverse hardware (several Raspberry Pis, a Windows PC, a Linux PC) and it handles synchronized playback very well, after tweaking the latency offsets for each device (once).
https://github.com/badaix/snapcast
(Edit: Ok, Snapcast doesn't get rid of the delay. But it does keep the players in sync, if you can tolerate some delay between source and speakers.)
But I'd still be afraid that it'd be fiddly and require too much maintenance. I really don't think there's anything commercial you can get that isn't kinda expensive, and almost certainly nothing that's open source / open hardware / open anything.
* Install the Iris plugin for UI [2] on server
* Install snapcast [3] server on the audio server and snapcast client on raspberry pi's near all stereos you want to pipe audio into
* Put bookmarks to the Iris page on all family member's phone home screens.
* Add the snapdroid app [4] to each phone so people can adjust volume of each stereo and also play audio on their phone (or anything it's bluetoothed into)
[2] https://mopidy.com/ext/iris/
If you want to avoid their awful YTMusic web UI there are options. There's a decent, standalone, GUI YTM application for KDE [0] which I've used (sadly it doesn't support logins, but if you just want a player it works well enough).
There's also a plugin for Mopidy [1] that lets you listen through your MPD / snapcast [2] server, but that's more fiddly.
[0] https://apps.kde.org/audiotube/
Noted at the bottom of this page, https://www.balena.io/blog/turn-your-old-speakers-or-hi-fi-i...
You'd have to look at alternatives for the media server (Plex) if you want to use a Homepod though .. I'm pretty sure Plex doesn't support AirPlay.
If it's just wireless audio you're after and not a "smart speaker" then there's some not-too-tricky ways to do this in the DIY space. snapcast for instance supports AirPlay and might integrate nicely into your current setup: https://github.com/badaix/snapcast
Not simple enough for all consumers yet, but works flawlessly for me every day in my house.
[0] https://github.com/badaix/snapcast [1] https://github.com/librespot-org/librespot
- I have six total audio zones, including my desktop computer.
- Audio for a room turns on/off with a room. It's neat to walk from my office into the kitchen, and have the kitchen lights come up and audio follow me in when the motion detectors fire. Some speakers don't mute when "off", but change source to a text-to-speech only channel (for i.e. door/window contact notification, other messages).
- Everything but my desktop (macOS) are speakers connected to a Raspberry Pi via USB DAC.
- One of my motivations here was multi-room audio, but a big one was to connect a Linux VM's audio output directly to the speakers so I could use the official Spotify client, instead of a 3rd-party library that will eventually break.
- Snapcast is really quite DIY for config, but I could set up other sources--an Airplay target, a line in target with a cable hanging off the server so people could plug in devices at a party, etc. I've seen setups online where people do this, and someone in a room can change that room's "channel" to another source.
- Spotify's DRM-as-feature is nice here, because I just use the Spotify client on my desktop normally, with output coming out elsewhere. I run 700ms of buffer, which is just low enough that clicking play/pause doesn't feel broken. I could probably drop it more, since everything is hardwired in the house.
- Previous to Snapcast, I just toggled Spotify's source when I walked between rooms, but there's quite a bit of dead air there, and it's a hassle to setup, plus multi-room audio sync is nice with people over.