MP3s are tiny. Just download + cache the n and n+1 song. On a modern 4g or 5g connection downloading an entire song takes seconds. Anytime a new song starts up, grab the n+1 song as soon as possible.
But aside from that, inside any metro area even a 200ms or so buffer would likely suffice for streaming music.
Yep, and OPUS files are even lighter. That's why I just sync a "currently listening" music folder with Syncthing and do not think about connection, caching and all that. (I have the rest reachable when I need it, of course.)
200ms and even n+1 won't cut it for a subway, a semi-basement pub, a tunnel, a train or an airplane trip, a hike, a countryside visit, etc.