I've got two empty pools and a few huge subs laying around...
It's crazy that it's 2024 and there isn't an ESP32 module which does this.
It isn't perfect and audio occasionally de-syncs or a speaker drops out. On a dedicated wireless channel playing a local source I imagine it would be pretty solid.
Not really an option if you don't have a Mac to run Airfoil, though if you do you can use the Satellite (https://rogueamoeba.com/airfoil/satellite/) program to sync Mac your other non-Apple devices to the host.
Because last I'd heard, and I'm definitely not in the scene, all of that was coordinated by programs, before having the transduction work parceled out to mostly dumb speakers. And even then, I'm not aware as to whether playback software is "smart" enough to train itself w/ regard to latencies between individual playback nodes to ensure things sync up properly... That gets into the nasty world of things like DRAM signal training, because in a sense, each of your signal paths is just a glorified signal trace to the system in question, of unusual length compared to other motherboard traces.
I know there's ASICs built into most graphics cards nowadays for things like audio mix/encode/decode, but as far as I was aware, getting things relatively sync'd up for any non-trivial network of speakers was still very much an exercise left to the student; and with most programmers having taken the route of "but why would you need that?" to avoid answering what is essentially a really, really, hard network characterization/DSP question.
Long story short, I dunno, but sounds like an immersive literature deep dive in the making to me!
Probably not an easy thing to do to begin with (there are papers on the algorithms involved, last I checked) and the specter of big audio companies coming after you isn't fun either.
Edit: Despite that, there's https://github.com/geekuillaume/soundsync
The sync between devices has always been flawless for me.
https://www.getdante.com/products/software-essentials/dante-...