Размер не имеет значения Косякин Антон Спецвыпуск Xakep, номер #044, стр. 044-010-2 Lossless-сжатие Обратимое сжатие звука с качеством CD-записи (16 бит, 44,1 кГц) вскоре станет неотъемлемой технологией для распространения оцифрованного звука через интернет. Это произойдет из-за того, что конечный пользователь хочет получить максимально возможное качество звучания для своих высокоточных стереосистем. Такие технологии, как ISO MPEG и Dolby AC3, могут оказаться неприемлемыми для таких вещей. Но сжатие без потерь не станет доминирующей технологией - оно будет дополнять существующие "ущербные" алгоритмы: такая технология редко может дать степень сжатия более 3:1, в то время как ущербные алгоритмы (loosy) - от 4:1 до 40:1, однако качество выходного звучания будет ниже. Как мы знаем, сжатие без потерь - далеко не новая технология, и уже давно существует множество архиваторов, использующих ее. Но, к сожалению, алгоритмы, используемые для сжатия данных (вариации LZ, метод Барроуза-Уиллера и др.), с трудом хоть как-то сжимают звук (чего не скажешь о двоичных данных и текстах, где степень сжатия может быть 2:1 и выше). Более того, они не "замечают" важные характеристики звукового сигнала - сильную зависимость между соседними аудиосэмплами. Именно поэтому в аудиокомпрессорах в процесс сжатия включается стадия декорреляции (correlation - соотношение) для уменьшения статистической зависимости между сэмплами. На этой стадии в основном используются два метода: прогнозирующая модель (predictive modeling) и преобразующее кодирование (transform coding). Далее декоррелированный сигнал уже сжимается (в литературе часто используется термин "упаковывается") "обычными" способами - Хаффман, RLE. Вот основные стадии, которые проходит звуковой сигнал при обработке: аудиопоток -< структурирование (framing) --(x[n])--< декорреляция --(e[n])--< сжатие (entropy coding) -< выходные данные. Рассмотрим каждую из них. Структурирование Эта стадия используется для обеспечения «редактируемости» :), важного и необходимого свойства для большинства приложений, работающих с оцифрованным звуком. Всегда необходимо легко и быстро изменять сжатый поток, а суммарный объем данных препятствует последовательному декодированию всего звукового потока для выделения региона редактирования. Поэтому практическим решением проблемы стало структурирование потока, то есть разбиение его на независимые, одинаковые по времени отрезки - фреймы. Такие временные отрезки не должны быть слишком короткими, так как к каждому из них необходимо добавлять заголовок, определяющий параметры сжатия, которые могут меняться для каждого фрейма. Также такие заголовки могут содержать дополнительные данные, например, информацию для синхронизации. С другой стороны, временные интервалы не должны быть и слишком большими, что может осложнить редактирование сжатого сигнала. Обычно длина фреймов варьируется от 13 до 26 миллисекунд, что соответствует 576-1152 сэмплам для 44,1 кГц (вообще, удобнее измерять длину фреймов как раз в количествах сэмплов, а не в миллисекундах). |