Простой ответ: вы не получите ожидаемой точности при использовании таймеров, таких как postDelayed. Файлы, которые вы показали, отличаются по длине; разница между самым длинным (519 КБ) и самым коротким (512 КБ) составляет около 40 миллисекунд.
Почему они разные? Потому что процессор, который измеряет 3000 мс и вызывает ваш обработчик, также выполняет много другой работы, обслуживая операционную систему и другие приложения.
Кстати, учитывая частоту дискретизации 44,1 кГц и указанные размеры, я думаю, что размер выборки составляет 32 бита. Ровно 3 секунды звука будут иметь размер данных:
44100 x 4 x 3 = 529 200 байт
(игнорируя заголовок WAV, который обычно составляет всего около 44 байтов). Это 516,8 КБ.