I went the other way. I tried laptops and raspis wirelessly, and then with audio over ethernet but the difference in timing caused by differences in signal decoding meant that you can couldn't sit in one room with the door open with the speakers in the next room also going because of microshift flanging (although I say micro, some rooms were over 100ms out of sync, which is unbearable).

What I ended up doing instead of just running TRS cables along the ethernet cables that were already going to the various rooms I care to spend most of my time in, with some 4x4 audio interfaces that take care of sending the audio to the various speaker sets in those rooms (for rooms with more than one set). Any interface's output can route to any other interface, so if there's more than one thing playing you just press enable that input in the room you're in, and done.

And of course, you can get the same done with some second hand professional audio routing rack units, but (a) those are rather inconveniently sized, and (b) you kinda need to have a hookup for those, or get lucky, whereas audio interfaces are a few clicks away and designed to at least look reasonably decent sat on a bookshelf =)

More expensive? Probably. "Perfectly" synced audio across rooms? Very much so.

It's effectively impossible to "sync" audio across a large area (because if it is perfect in one area it will be imperfect in another) so often the best you can do is adjust it until it "sounds right".

Some software and some hardware have built-in delays you can use to adjust as they do in a stadium, but often just getting everything "speed of light" in a house is good enough.

The main thing is that you don't hear a delay when standing in the doorway between rooms.

Don't Sonos, Ultimate Ears, Echo, Google Home etc solve this problem pretty effectively? I know there was a bit of a patent war between them for a while, but don't they still have this feature?

Shout out for the open source option:

Snapcast - https://mjaggard.github.io/snapcast/

Interesting... so this isn't a device-specific firmware hack, but a pipe? Does that mean it only works on things running user-accessible Linux, not your typical smart speaker?

Yes, you wouldn't get this running on an existing smart speaker (without first rooting it and some serious hacking).

If you'r in the Apple ecosystem and are using AirPlay with your smart speaker(s), it's however possible to also play synchronized audio across to your own DIY speaker setup, using another open source project.

https://github.com/mikebrady/shairport-sync

Or you could of course choose to only use your old dumb speakers with this, and they will pop up as easily selectable sound output devices on all Apple devices connected to your network.

Or combine it (and librespot[2], owntone[3]...) with Snapcast to create a virtual speaker for your whole house that shows up everywhere.

[2] https://github.com/librespot-org/librespot

[3] https://github.com/owntone/owntone-server