Сжатие звука без потерь


Звук является простой волной, а оцифрованный звук — цифровое представление этой волны. Это достигается запоминанием уровня аналогового сигнала множество раз в течение одной секунды. Например, в обыкновенном CD сигнал запоминается 44100 раз за секунду. Так как CD работает со стерео, мы запоминаем сигнал для левой и правой колонки параллельно. Для каждого замера используются 16-битовые числа. Поэтому нетрудно посчитать, что одна секунда звучания занимает 2 × 2 × 44100 = 176 400 байт.

Сжатие звука без потерь — совокупность преобразований, позволяющая эффективно сжимать звуковые данные с возможностью их полного восстановления. Как и любое сжатие без потерь, сжатие звуковых данных эксплуатирует какую-либо особенность данных. В данном случае это:

Первым шагом в сжатии будет представление каналов аудио L и R более эффективным образом, представив их некими числами X, Y согласно следующему алгоритму:


Для дробных чисел это преобразование не теряет информации и является эквивалентным оригинальному. Для целых же теряет 0,5 при конверсии в integer, когда L и R имеют разную чётность, но, проверив чётность , легко восполняем эти 0,5.

Следующий шаг — пропустить X и Y через алгоритм, который максимально эффективно уберёт весь избыток информации в представлении X, Y.