Думаю что 30 секунд .wav может быть даже пару мегабайт, зависит от частоты дескретизации.
Но вариант с побитовым чтением и base64 мне кажется очень даже здравым.
И поскольку Вы получаете строку - может есть смысл ее сжимать каким то алгоритмом для строк, а на сервере - восстанавливать оригинальный base64?