I will assume that you have exhausted all that may come from encoding and compression.
First off, load only what you need next, use a load scene when appropriate.
Now, what you probably want is to stream the audio, and not simply serve audio files, so that the server does not wait to load the whole file in memory to start sending data, and the client can start playing before finishing downloading. How to do it depends on the server side technology you are using. However you might not be in control of the server and working in a server that does not allow that. Addendum: streaming can still be slow.
Also, you might want to cache your audio files between sessions (ideally with the help of a service worker), so that the game can work with audio from local cache instead of asking the server every time.
Aside from that:
- Split your music in smaller chunks.
- Encode each chunk in multiple qualities.
- Have a measure how good the download is*, and decide what audio quality it is worth to download such that it can be downloaded fast enough.
- Start downloading the selected quality chunks, and switch to play those as soon as possible.
- If the audio happens to download too slow to be ready in time, go back to 3.
*: Measuring the download time on some asset, any asset. You might aswell download the lower quality in order to measure the download speed, which also has the bonus that the lower quality would be available to play if there was no time to download a better one. Also keep updating this measure using the time to download the chunks.
This will also allow you to provide the user with a setting to change to a lower audio quality. Users that are playing from a cellular network will appreciate it. Ah, and do not forget to provide the "no audio" option.
Addendum: People playing on a network that charges by the amount of transferred data will prefer it if your game transfers less data. Furthermore, unless the user is using headphones, the audio quality from the speakers of the mobile device is not the best anyway. Also, smaller files means less data to crunch, and less data to crunch means more battery life. I am not saying this is the case for everybody... in fact, some could be playing on WiFi, on a decent device and with headphones... but not everybody, some will prefer your poor audio quality version and appreciate you give them the option.