Аудиокодеки DSP Сжатие без потерь
arXiv cs.SD

Сжатие аудиопотоков с плавающей точкой без потерь: расширение FLAC

ArXiv:2611.00732

Автор реализует в собственном расширении FLAC побитово точное хранение IEEE 754 binary32. Основной приём — выровнять значащие биты отсчётов и раздельно кодировать предсказуемую старшую часть и плохо сжимаемые младшие биты. Это инженерная адаптация известного принципа, а не заявление о новом фундаментальном алгоритме сжатия.

Метод. Dynamic Positional Alignment подбирает общий разрядный масштаб блока. Старшая часть проходит обычные линейное предсказание и Rice-кодирование FLAC, младшая записывается упакованными битами. Нули, специальные значения и слишком широкий динамический диапазон обслуживаются точными сырыми представлениями либо резервным раздельным кодированием показателя и мантиссы. Режим выбирается для каждого блока; неудачная попытка DPA отклоняется, если не обеспечивает заданной экономии. Для декодирования требуется поддержка нового формата: это не обещание совместимости с обычным FLAC-проигрывателем.

Результаты. Для высокочастотного 24-битного музыкального поднабора после моделирования многокаскадного АЦП размер равен 44,11% исходного float-потока, после моделирования обработки мастера — 60,15%. Во всех 144 дорожках и двух режимах автор проверил полное побитовое восстановление. На стандартных настройках заявлены скорости кодирования 169,1× и 114,6× реального времени; это обратная величина привычного RTF. По размеру WavPack и другие специализированные кодеки часто выигрывают.

Ограничения. Ключевая оговорка приложения A: музыкальные исходники были целочисленным PCM, а float получен преобразованием и двумя детерминированными моделями обработки. Это не разнообразный корпус исходных аппаратных float-записей и настоящих проектов звуковых станций. Сравнения размера используют максимальные настройки, скорости — стандартные; складывать их в одну точку компромисса нельзя. Сохранение значений выше 0 dBFS позволяет избежать последующего ограничения, но не восстанавливает уже потерянную аналоговым или цифровым клиппированием форму волны.

Фишка из статьи. Таблицы 3–4 показывают цену реализации FLAC относительно WavPack на одном высокочастотном поднаборе. Доля размера считается от 32-битного несжатого потока, а не от обычного 24-битного FLAC.

МоделированиеРасширение FLAC: размер, %WavPack: размер, %Разница, п.п.
Многокаскадный АЦП44,1140,873,23
Обработка мастера60,1557,572,58

Как это читать: сжатие до 44% не означает экономию 44%: экономия составляет около 56% от raw float. Основная идея — не заставлять предиктор объяснять почти случайные младшие биты. На стресс-тесте с NaN этот простой выбор проигрывает: 77,92% размера у FLAC против 52,24% у WavPack. Побитовая точность и эффективность хранения — разные свойства.

Источник. Оригинальное название: 8 Bits to End the Loudness War: Lossless Floating-Point Compression for Audio Streams. arXiv:2611.00732; полный текст PDF.

Оригинальная статья на arXiv