The original goal was transmitting ~10kB in a few seconds over an audio cable, so I didn't try to improve the transmission speed much further.
I guess that adding error correction coding will allow increasing the highest possible bit-rate (currently I'm using only CRC-32 for error detection).
I didn't try Google Nearby, since I was developing the modem to run on a desktop machine (but later I've created a simple Android app [1], supporting the lowest bit-rate).
Unfortunately, I don't have a working web-based version of my modem...
I guess it should also work on MacOS, since it depends on `numpy` [1] and `portaudio19-dev` [2] Debian packages (which should be installable via Pip/Homebrew).
Using an audio cable (for better SNR), I have managed to achieve and sustain 60kbps for long periods time - so 3MB file should take ~7 minutes to transmit.