Я считаю, что браузер останавливает звук как часть процесса выгрузки страницы. Следовательно, к тому времени, когда вызывается ваша пользовательская функция выгрузки, звук останавливается.
Вы можете использовать onbeforeunload вместо onunload - это может сработать (не проверено).
Кроме того, вы можете установить флаг при запуске аудио и использовать событие onended, чтобы изменить этот флаг, когда аудио заканчивается, или когда пользователь вручную останавливает или приостанавливает его.