Об алгоритмах компрессии, а также альтернативах MP3

Дата обновления: 03 Ноября 2009
2009-11-03T20:37
Audiophile's Software

Автор: Александр Радзишевский (Alex Y. Radzishevsky)
Copyright (C) 1998-2007, Alex Y. Radzishevsky


Существует два основных типа компрессии данных.

--- кодирование с потерями качества / lossy coding ---

Компрессоры, основанные на идее кодирования с потерями качества, преследуют две цели: закодировать аудио так, чтобы сжатые данные занимали как можно меньший объем памяти и звучали при этом как можно более близко к оригиналу. Способы, которыми достигаются эти две цели могут быть различны, однако все они в результате приводят к тому, что закодированные данные уже не являются оргинальным сигналом, а лишь похоже звучат при воспроизведении (декодировании). Это связано с тем, что в процессе кодирования данные "упрощаются" - из них выбрасываются ненужные слабослышимые или замаскированные детали, а также используются другие методы "облегчения" данных.

Многие пользователи даже не догадываются, что помимо пресловутого MP3-формата (MPEG-1 Layer III) в области кодирования аудио с потерями качества существует множество других форматов и кодеков. Параллельно MP3 появились и успешно развиваются не менее, а иногда, и более прогрессивные алгоритмы компрессии звука по своим возможностям и качеству во многом превосходящие MP3. Один из таких алгоритмов это MPEG-2/4 AAC.

MPEG-2/4 AAC. Подробнее о самом кодеке можно прочитать в обсуждении вопроса об истории MPEG.  Ниже представлена информация о существующих разновидностях этого кодека и типов файлов.

Впервые пользователи столкнулись с MPEG-2/4 AAC в виде файлов *.AAC, когда появились всякие самодельные кодировщики вроде Astrid/Quartex, HomeBoy AAC, а также в виде файлов .LQT от Liquifier AAC. Astrid/Quartex, вообще говоря, со стандартом MPEG-2 AAC ничего общего не имел, потому что не соответствовал спецификации (это означает, что закодированные им файлы сегодня перекодировать в стандартный MPEG-4 AAC без потерь невозмоно). Другие же кодеры имели частичную совместимость со стандартом MPEG-2 AAC.

Позднее появились кодеры PsyTel и FAAC/FAAD, которые создавали файлы, содержащие, вобщем-то, стандартный поток MPEG-2 AAC. Позже с помощью этих кодеров стало возможным создавать файлы с потоком MPEG-4 AAC, однако с некоторыми недочетами в самом потоке - у PsyTel были проблемы с синхро-битами, а FAAC несколько неверно выставлял поля в заголовке (примерно до апреля 2003 года, позднее это было исправлено).

После того, как компания Apple лицезировала MPEG-4, стандарт начал свое активное продвижение в массы и пользователи все чаще стали сталкиватся с действительно соответствующими стандарту файлами, уже с расширением .MP4. MP4 - это формат контейнера (такой же как .AVI, .MPG, Matroska - .MKV, .MKA, Ogg - .OGM, .OGG, Quicktime - .MOV, Realmedia - .RM, .RMV) и является частью стандарта MPEG-4 (ISO 14496-1). При разработке контейнера MP4 использовались наработки Apple по разработке контейнера MOV. Однако стандарт контейнера MP4 вышел за пределы контейнера MOV. MP4 позволяет хранить в себе несколько потоков MPEG-4-совместимого видео, аудио (MPEG-4 AAC), а также субтитры, картинки, DVD-подобные меню и проч. MP4 стандартизует использование следующих расширений файлов:
- .MP4: официальное расширение и для аудио, и для видео.
- .M4A: придумано Apple для звуковых файлов, созданых iTunes. Файлы .M4A совершенно идентичны файлам .MP4 и различаются лишь непосредственно самим расширением.
- .M4P: шифрованные с помощью DRM, защищенные файлы (также "выдумка" Apple)
- .MP4V, .M4V: для хранения только "сырого" видео, сжатого MPEG-4
- .3GP, .3G2: расширение для мобильных телефонов. Такие файлы могут содержать дополнительный, не стандартный для .MP4 контент (например, H.263, AMR, TX3G).

Файлы с расширением .AAC (от устаревших кодеров) существуют в двух вариантах: RAW AAC и AAC с ADTS заголовком. Файлы .AAC - это не контейнеры с потоком в каком-то формате, а сами потоки (например, тот же .MP3 - это тоже не контейнер, а поток в формате MPEG-1 Layer III). Потоки MPEG-2 AAC и MPEG-4 AAC различаются только заголовком, поэтому перед конвертацией таких файлов в .MP4 лучше поменять заголовок потока на заголовок стандартный для потока MPEG-4. Это можно сделать например с помощью утилиты AACPatch (http://rarewares.hydrogenaudio.org/files/AACPatch.zip). Такое преобразование желательно поскольку некоторые программы "не принимают" файлы .MP4, содержащие поток в формате MPEG-2 AAC.

Таким образом, стандартный MPEG-4 аудиофайл - это файл контейнера .MP4, содержащий AAC поток с MPEG-4 заголовком. Сам AAC поток может быть закодирован в одном из стандартных профайлов MPEG-4 AAC (LC/Main/SSR/LTP/...). Что касается тэгов внутри файлов .MP4, то стандарт тэгов был взят из Apple iTunes (как самый старший). Нужно заметить, что заявленная поддержка в плеере N файлов стандарта MPEG-4 AAC не означает, что плеер обязательно поддерживает воспроизведение файлов-контейнеров .MP4 - возможно плеер умеет читать только чистые файлы-потоки, вне контейнера (.AAC). И наоборот.

 

9 октября 2002 года компания Coding Tech. анонсировала выход нового кодека AACPlus. AACPlus основан на совершенно аналогичной MP3Pro (см. ниже в этом вопросе) идее использования технологии SBR. Разница заключается лишь в том, что в MP3Pro основной поток кодируется в MP3 (MPEG-1 Layer III), а в AACPlus – в AAC (MPEG-2/4 AAC). ААС является младшим и намного более развитым кодеком, чем MP3, что позволяет говорить о том, что AACPlus дает, конечно, лучшие чем MP3Pro результаты кодирования. AACplus также может встречаться под именем HE-AAC (High Efficiency AAC) или просто как AAC+SBR. При этом нужно учитывать, что HE-AAC - это утвержденное стандартом имя, тогда как AAC+, AACPlus и подобные обозначения - это лишь торговые имена.
Расширение технологии HE-AAC - HE-AAC v2 включает применение дополнительного механизма для имитации стерео звучания при фактическом кодировании лишь одного канала (этот механизм называется Parametric Stereo, сокращенно PS).

 

Несколько слов необходимо сказать и о другом алгоритме TwinVQ (Transform-domain Weighted Interleave Vector Quanization), разработанном фирмой Nippon Telegraph and Telephone Corp. (NTT) в Human Interface Laboratories и лицензированном фирмой Yamaha (продукты от Yamaha, основанные на TwinVQ, распространяются под торговой маркой SoundVQ). Этот метод позволяет сжимать цифровые потоки с коэффициентом компрессии до 1:20. При этом качество звучания потока TwinVQ при 96 Кбит/с практически идентично качеству звучания потока MPEG-1 Layer III (при 128 Кбит/с) и MPEG-2 AAC (при 96 Кбит/с). Алгоритм TwinVQ позволяет кодировать данные во всем диапазоне слышимых частот (до 22 КГц) и, также как и MPEG, производить декодирование и воспроизведение потока одновременно с его получением (stream playback). Кстати, говоря об алгоритме TwinVQ следует сказать также, что трудоемкость этого алгоритма намного выше трудоемкости, например, алгоритма MPEG-1 Layer III, так что программы-компрессоры, основанные на алгоритме TwinVQ работают в 5-10 раз медленнее, чем Layer III-компрессоры. Следует сказать также, что наработки TwinVQ используются в стандарте MPEG-4. По различным оценкам, TwinVQ в нижнем диапазоне частот превосходит по качеству MPEG-1 Layer III, уступая ему на верхних частотах. TwinVQ поддерживает кодирование с переменным битрейтом (VBR), а также имеет поддержку т.н. несимметричного битрейта, когда разные каналы кодируются с отличными битрейтами.

 

Алгоритм (кодек) Windows Media Audio (WMA) от Microsoft (есть еще WMV - Windows Media Video - его мы здесь не обсуждаем). Алгоритм WMA, также как и все рассмотренные ранее, позволяет потоковое воспроизведение (stream playback). Качество WMA (если говорить о WMA 7, 8 и 9) при скорости потока 96 Кбит/с может превосходить MPEG-1 Layer III & MPEG-2 AAC на 128 Кбит/с ("может"- не значит "всегда", то бишь, речь идет о субъективно воспринимаемом качестве звучания и критически зависит как от аппаратуры, так и от характера аудио материала и самого слушателя). Для хранения потока в формате WMA используется универсальный потоковый файловый формат .ASF (Advanced Audio Streaming), пришедший на замену .WAV. Вообще говоря, .ASF - это универсальный формат для хранения аудио и видео информации, сжатой с помощью самых разнообразных кодеков. .ASF имеет также и свою несколько сокращенную разновидность .WMA. Файлы .WMA предназначены исключительно для хранения аудио данных. Говоря о WMA как о кодеке, следует сказать, что в последнее время он становится все более популярным, так как Microsoft встроила его в Windows'2000 и Windows XP, превратив его таким образом в стандарт. Следует отметить также, что сохранить поток WMA в .WAV-структуру невозможно (возможно, по чисто политическим причинам). На сегодняшний день существует несколько версий WMA: v1, v2, v7, v8 и v9. V7 отличается от младших собратьев поддержкой битрейтов до 192 Kbps (в отличие от 164 Kbps в V1 и V2), несколько худшим качеством кодирования и иной структурой данных. Версия 8 отличается от всех предыдущих явно переработанной психоакустической моделью кодека, за счет чего качество кодирования сильно возросло. Так, при 64-96 Kbps WMA v8.0 на не сильно требовательных к качеству композициях (поп-музыка, например) может приближаться по качеству к MP3 при 128 Kbps, хотя, опять же, все зависит от конкретной композиции и аппаратуры, на которой осуществляется прослушивание. WMA 9 является логическим продолжением восьмой версии. Разработчики утверждают заметное повышение качества кодирования по сравнению с WMA 8. В версии 9 применена новая технология Fast Streaming, призванная сильно сократить время буферизации передаваемого конечному пользователю WMA-контента. Помимо этого, WMA 9 имеет фактически несколько "подкодеков". Так, WMA 9 имеет помимо привычного lossy-кодера, также и lossless кодер (кодер без потерь), а также специальный речевой кодер. Изначально, обсуждаемый кодек разрабатывался фирмой Voxware и имел название Voxware Audio Codec. Впоследствии компания забросила его доработку остановившись на v4.0, но кодек не остался гнить и был полностью куплен фирмой Microsoft. Программисты сильно доработали этот кодек, а фирма Microsoft переименовала кодек в Windows Media Audio, не забыв позаботиться о том, чтобы он был бесплатным.

 

Алгоритм PAC (Perspective Audio Coding) от Bell Labs & Lucent Technologies. По различным данным обеспечивает аналогичное (или выше) MPEG-1 Layer III 128 Кбит/с качество звучания при 64 Кбит/с. Поддерживаются также 96 и 128 Кбит/с. Алгоритм позволяет осуществлять потоковое воспроизведение (stream playback). Имеет встроенный механизм защиты. Обладает высокой скоростью компрессии. На сегодняшний день кодек PAC "пропал из поля зрения".

Еще один кодек: Ogg Vorbis, вышел в свет в июне 2000. Этот формат является частью проекта Ogg Squish по созданию полностью открытой системы мультимедиа. Иными словами, и сам проект, и Ogg Vorbis в частности являются открытыми и свободными для распространения, а также разработки на его основе нового программного обеспечения. В FAQ от разработчика (группа Xiphophorus) написано, что механизм кодера Ogg Vorbis схож с механизмом MPEG-1 Layer II, однако кодек использует оригинальный математический алгоритм и собственную психоакустическую модель, что освобождает его от необходимости выплачивать какие-то лицензионные отчисления и производить иные выплаты сторонним фирмам-изготовителям аудио форматов. Алгоритм Ogg Vorbis рассчитан на сжатие данных на всех возможных битрейтах без ограничений, то есть от 8 Kbps до 512 Kbps, но при этом только в режиме переменного битрейта (VBR). Алгоритм предусматривает хранение внутри файлов подробных комментариев об исполнителе и названии композиции. В алгоритме предусматривается также возможность кодирования нескольких каналов аудио (более двух, теоретически до 255), возможность редактирования содержимого файлов, а также так называемый "масштабируемый битрейт" - возможность изменения битрейта потока без необходимости декодирования. Поддерживается потоковое воспроизведение (streaming). Для хранения данных используется собственный универсальный формат bitstream Ogg Squish, рассчитанный на хранение любой информации мультимедиа системы Ogg Squish (идея реализация универсального формата bitstream Ogg Squish аналогична идее ASF от Microsoft).

Помимо официально разрабатываемого кодера Ogg Vorbis, в Интернете можно найти альтернативный вариант: OGG GT3. Это "доведенная до ума" сторонняя разработка оригинального OGG'а версии 1.0. GT3 "заточен" для кодирования аудио на высоких битрейтах. Важно заметить, что GT3 хоть и является "доводкой" оригинального OGG'а, но полностью с ним совместим (здесь подразумевается формат потока).

 

Кодек MP3 Pro анонсирован в июле 2001 года компанией Coding Technologies вместе с Tomson Mulimedia и институтом Fraunhofer. Формат MP3Pro является продолжением, или, точнее, развитием старого MP3. MP3Pro является совместимым с MP3 назад (полностью) и вперед (частично). То есть файлы, закодированные с помощью MP3Pro, можно воспроизводить в обычных проигрывателях, однако качество звучания при этом заметно хуже, чем при воспроизведении в специальном проигрывателе. Это связано с тем, что файлы MP3Pro имеют два потока аудио, в то время как обычные проигрыватели распознают в них только один поток, то есть обычный MPEG-1 Layer 3. В MP3Pro использована новая технология - SBR (Spectral Band Replication). Технология SBR предназначена для передачи верхнего частотного диапазона. Идея технологии и предпосылки таковы. Дело в том, что технологии использования психоакустических моделей имеют один общий недостаток: все они работают качественно до битрейта 128 Kbps. На более низких битрейтах начинаются различные проблемы: либо для передачи аудио необходимо обрезать частотный диапазон, либо кодирование приводит к появлению различных артефактов. Этот ключевой момент показывает, что использования психоакустической модели не достаточно при работе с битрейтами ниже 128 Kbps. Новая технология SBR дополняет использование психоакустических моделей. Идея следующая: в файле передается (кодируется) чуть более узкий диапазон частот чем обычно (то есть с обрезанными "верхами"), а верхние частоты воссоздаются (восстанавливаются) уже самим декодером на основе информации о более низких частотных составляющих. Таким образом, технология SBR применяется фактически не столько на стадии сжатия, сколько на стадии декодирования. "Загадочный" второй "параллельный" поток данных, о котором говорилось выше, как раз и есть та минимальная необходимая информация, которая используется при воспроизведении для восстановления верхних частот. Проведенные исследования показывают, что эта информация - есть усредненная мощность сигнала в верхнем (обрезанном) диапазоне частот. Точнее не одна усредненная мощность для всего диапазона вырезанных частот, а информация о средней мощности в нескольких полосах частот верхнего диапазона. Качество звучания MP3Pro можно назвать субъективно очень хорошим даже на битрейте 64 Кбит/с, другими словами, субъективно несложные композиции при таком битрейте воспринимаются не хуже чем MP3 128 Кбит/с. Однако необходимо учитывать тот факт, что такое звучание достигается искусственным путем, и что слышимый сигнал представляет собой уже не столько оригинал, сколько синтезированную копию оригинала, что заставляет задуматься меломанов, обладателей высококачественной аудио аппаратуры, а также просто ценителей качественного оригинального звучания. Тесты показывают, что использованный в MP3 Pro искусственный прием критическим образом влияет на качество кодирования (и последующего воспроизведения) множества музыкальных композиций. Это означает, что использование кодека очень нецелесообразно и не рекомендуется при составлении фонотеки или для постоянного хранения аудио. С другой стороны, кодек может занимать выигрышные позиции в области потокового аудио.

 

Кодек MPEGplus (MPEG+), переименованный позже в MusePack (MPC) из-за проблем, которые появились у автора кодека в связи с тем, что название последнего содержало в себе аббревиатуру "MPEG" - это еще одна разновидность lossy-кодека сродни MP3. Точнее, MusePack не является продолжением MPEG-1 Layer III, а лишь как и MP3 берет свое начало в MPEG-1 Layer II. MusePack создан "в домашних условиях" и разрабатывался(ется) в основном двумя людьми: Andre Buschmann и Frank Klemm. Кодек, как было сказано, базируется на MPEG-1 Layer II, отсюда его направленность на кодирование преимущественно на более высоких битрейтах, нежели MP3. В то же время, кодек является совершенно самостоятельной разработкой. Кодеком предусмотрено кодирование только в режиме переменного битрейта (VBR). Скорость компрессии и декомпрессии в/из MPC заметно выше скорости выполнения этих операций применительно к MP3. В среднем, качество кодирования MPC на высоких битрейтах заметно (если не сказать «значительно») выше качества, обеспечиваемого MP3. Это связано с различиями в механизмах кодирования. Если говорить конкретно, то MP3 при кодировании разбивает сигнал на частотные подполосы, затем производит разложение сигнала в ряд косинусов (MDCT - частный случай преобразования Фурье) и записывает округленные (квантованные) значения полученных после преобразования коэффициентов (квантование происходит в соответствии с проводимым психоакустическим анализом). MPC же после разбиения сигнала на частотные подполосы просто производит переквантование (опираясь на психоакустику) амплитудного сигнала в каждой подполосе и полученные округленные (квантованные) значения записывает в выходной поток. Этим же фактом объясняется и большая скорость компрессии и декомпрессии MPC.

--- кодирование без потерь качества / lossless coding ---

Кодирование данных без потерь - это способ кодирования аудио, который позволяет осуществлять сто процентное восстановление данных из сжатого потока (иными словами, декодирование сжатых таким способом данных точно восстанавливает оригинальный сигнал из сжатого). Кодирование аудио с использованием любого из перечисленных выше кодеров (lossy coders), как уже было упомянуто, приводит к деградации качества, поскольку сама цель описанных выше кодеров - любыми способами добиться схожести звучания с оригиналом при меньшем занимаемом данными объеме - достигается путем использования различных алгоритмов, "упрощающих" оригинальный сигнал (выкидывая из него "ненужные" слабослышимые детали), что приводит к тому, что декодированный сигнал перестает иметь что-то общее с оригиналом, а лишь похоже звучит.

Lossless кодеры основаны на другой идее - попытаться максимально сжать данные, не нарушая при этом целостности оригинальной информации. Иными словами, цель - сжать данные так, чтобы полученных после сжатия данных хватило для абсолютно точного восстановления из них оригинального сигнала. То есть, lossless кодеры - это своеобразные архиваторы (как Zip или Rar), однако предназначенные для кодирования именно аудио (с помощью них, наверняка можно сжать вообще любые данные, однако механизм такого кодера "заточен" именно под аудио и раскрывает свой потенциал при кодировании только звуковой информации).

Одним из множества примеров таких кодеров является Monkey's Audio Coder. Коэффициент сжатия этого кодека составляет приблизительно 0.5 - 0.6, что, безусловно, во много раз ниже, чем максимально возможный коэффициент сжатия любого lossy-кодера, однако кодирование данных таким способом обеспечивает их хранение без каких-либо потерь.

Дополнительную, подробную и упорядоченную информацию касательно различных аудио кодеков можно найти на странице: http://www.audiocoding.com/wiki/.

 
   
Категория: Теория | Автор: | Добавил: Audiophile
Просмотров: 10565 | Теги: lossy, AAC, Lossless, OGG, SBR, WMA, MP3, PS, MP3Pro
Комментариев: 2
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
0   Спам
[1] Yaroslav (23 Марта 2012 11:32)
Yaroslav
Интересует судьба, развитие и использование кодека MP3 Pro. Судя по описанию, он может быть очень полезен при кодировании аудиокниг. Но судя по таму же описанию он не поддерживается портативными устройствами. Точнее поддерживается как обычный MP3. Если не трудно, расскажите о опыте использования этого кодека, подробнее о его возможностях и любые советы и мысли по этому поводу. Спасибо!
0   Спам
[2] Mike1991 (26 Ноября 2012 11:21)
Пару раз сжимал ради интереса через Nero Burning ROM в MP3Pro. Для воспроизведения в Winamp/AIMP нужен специальный плагин от Thompson. MP3Pro содержит в себе по сути MP3-поток с низким битрейтом (и качеством соответствующим) и дополнительный поток SBR, который восстанавливает высокие частоты при воспроизведении. Если плеер не поддерживает MP3Pro, то воспроизводится только поток MP3 (с низким качеством).

Я для воспроизведения юзал Nero ShowTime. Конечно, качество лучше, чем у обычного MP3 с низким битрейтом. Но от оригинала всё равно отличается. Хотя для аудиокниг, конечно, формат очень бы подошёл. Правда, лично я, пока не встречал бытовых плееров, поддерживающих MP3 Pro. Зато сейчас уже есть карманные плееры, читающие AAC+ (он же HE-AAC), который по сути является аналогом MP3Pro.