Что такое “lossless” или О сжатии музыки без потерь

29e3d0ee3722d2da3342aa2435c_prev

Этим материалом я хочу открыть цикл статей со всем, что связано с прослушиванием музыки на компьютере. Назрело время поделиться опытом и обобщить разрозненные статьи в Internet в одной, хоть и не претендующей на точность, но относительно информационной…

В первой части рассмотрим форматы аудио. Что такое FLAC, WavPack, TAK, Monkey's Audio, OptimFROG, ALAC, WMA, Shorten, LA, TTA, LPAC, MPEG-4 ALS, MPEG-4 SLS, Real Lossless? А вы знаете сколько на сегодня зарегистрировано типов аудио-файлов? Разбираемся пока с форматами сжатия аудио-материалов без потерь, а ответ на вопрос о количестве аудио-расширений смотрим в самом конце статьи. Приятного прочтения!

Итак, сначала определимся с терминами:

«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату».

«Кодек (англ. codec, от coder/decoder — шифратор/дешифратор — кодировщик/декодировщик или compressor/decompressor) — устройство или программа, способная выполнять преобразование данных или сигнала. Кодеки могут как кодировать поток/сигнал (часто для передачи, хранения или шифрования), так и раскодировать — для просмотра или изменения в формате, более подходящем для этих операций. Кодеки часто используются при цифровой обработке видео и звука.

Большинство кодеков для звуковых и визуальных данных используют сжатие с потерями, чтобы получать приемлемый размер готового (сжатого) файла. Существуют также кодеки, сжимающие без потерь (англ. lossless codecs)».

«Сжатие без потерь (англ. Lossless data compression) — метод сжатия информации, при использовании которого закодированная информация может быть восстановлена с точностью до бита. При этом оригинальные данные полностью восстанавливаются из сжатого состояния. Для каждого из типов цифровой информации, как правило, существуют свои алгоритмы сжатия без потерь».

Сжатие данных без потерь используется когда важна идентичность сжатых данных оригиналу. Обычный пример — исполняемые файлы, документы и исходный код. Программы использующие форматы сжатия без потерь называются архиваторы, все знают популярные файловые форматы ZIP, или RAR, Unix-утилиту Gzip и т.д. Все эти программы отличаются примененными алгоритмами (одним или несколькими) и потому разными свойствами сжатия разных файлов.

Часть I. — ТЕОРИЯ:

картинка

Методы сжатия или алгоритмы сжатия без потерь могут быть распределены по типу данных, для которых они были созданы. Существует три основных типа данных это текст, изображения и звук.

В принципе, любой многоцелевой алгоритм сжатия данных без потерь (многоцелевой означает, что он может обрабатывать любой тип бинарных данных) может использоваться для любого типа данных, но большинство из них неэффективны для каждого основного типа. Звуковые данные, например, не могут быть хорошо сжаты алгоритмом сжатия текста и наоборот.

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

Энтропийное сжатие: Алгоритм Хаффмана · Адаптивный алгоритм Хаффмана · Арифметическое кодирование (Алгоритм Шеннона — Фано · Интервальное) · Коды Голомба · Дельта · Универсальный код (Элиаса · Фибоначчи)

Словарные методы: RLE · Deflate · LZ (LZ77/LZ78 · LZSS · LZW · LZWL · LZO · LZMA · LZX · LZRW · LZJB · LZT)

Статистические модели алгоритмов для текста (или текстовых бинарных данных, таких как исполняемые файлы) включают: Преобразование Барроуза — Уилера (блочно-сортирующая пре-обработка, которая делает сжатие более эффективным) · LZ77 и LZ78 (используется DEFLATE) · LZW.

Прочее: RLE · CTW · BWT · MTF · PPM · DMC

Часто, только проработанные алгоритмы получают название, тогда как последние разработки только подразумевают (общее использование, стандартизацию и т. д.) или вообще не указаны.

картинка

Но вернемся к нашей теме. Для кодирования аудио данных подходящие алгоритмы:

Алгоритм Хаффмана (также используется DEFLATE), арифметическое кодирование

Apple LosslessALAC (Apple Lossless Audio Codec)
Audio Lossless Codingтакже известен как MPEG-4 ALS
Free Lossless Audio CodecFLAC
Meridian Lossless PackingMLP
Monkey's AudioAPE
OptimFROG
RealPlayerRealAudio Lossless
ShortenSHN
TAK(T)om's verlustfreier (A)udio (K)ompressor (нем.)
TTATrue Audio Lossless
WavPackWavPack lossless
WMA LosslessWindows Media Lossless
DTSDTS Surround Sound

Семейство алгоритмов Лемпеля-Зива, RLE (Run-length encoding — кодирование длин серий)

FLAC (Free Lossless Audio Codec)
Monkey’s Audio (APE)
TTA (True Audio)
TTE
LA (LosslessAudio)
RealAudio Lossless
WavPack и др.

Как вы заметили, большинство кодеков для сжатия без потерь использует два (иногда и больше) различных типа алгоритма: один генерирует статистическую модель для входящих данных, другой отображает входящие данные в битовом представлении, используя модель для получения «вероятностных» (то есть часто встречаемых) данных, которые используются чаще, чем «невероятностные». Выгода — уменьшение размера, расплата — большее время процессора требующееся для кодирования/декодирования.

Когда мы немного выяснили теорию перейдем к нашим кодекам для сжатия аудио данных, которых понаписали великое множество : Free Lossless Audio Codec, WavPack, TAK, Monkey's Audio (.ape, apl), OptimFROG (.ofr), Apple Lossless Audio Codec, WMA, Shorten (.SHN), LosslessAudio, True Audio, Lossless Predictive Audio Coder (.LPAC), MPEG-4 ALS, MPEG-4 SLS (.mp4), Real Lossless или RealAudio Lossless, Windows Media Audio Lossless, DTS ... и это еще далеко не все. Многие фирмы выпускающие профессиональное звукозаписывающее оборудование изобретали и продолжают изобретать свои форматы.

Такое великое множество форматов сжатия аудио данных вызвано техническим несовершенством платформ (большинство из перечисленых кодеков были написаны в конце 90-х годов), маркетингом (в случае с ALAC), и широким интересом математико-университетской аудитории к алгоритмам сжатия данных.

Кроме указанных выше существует (существовало) великое множество забытых заслуженно или не заслуженно аудио-архиваторов и аудио-кодеков. Технические характеристики некоторых можно посмотреть в таблице:

кликабельно:

картинка

Мы же рассмотрим подробнее только те которые вошли в повсеместное пользование и которые на момент написания статьи можно найти на просторах Интернета. Их всего дюжина.

Часть II. — ПРАКТИКА:

картинка

1. Monkey’s Audio — популярный формат кодирования цифрового звука без потерь. Распространяется бесплатно вместе с открытым исходным кодом и набором программного обеспечения для кодирования и воспроизведения, а также плагинами к популярным медиаплеерам.

Файлы Monkey’s Audio используют следующие расширения: .ape для хранения аудио и .apl для хранения метаданных. Несмотря на открытый исходный код, Monkey’s Audio не является свободным, так как его лицензия накладывает значительные ограничения на использование.

Официально кодек Monkey’s Audio выпускается только для платформы Microsoft Windows, хотя существует ряд неофициальных кодеков для GNU/Linux, BeOS и Mac OS X, которые в большинстве случаев позволяют лишь перекодировать файлы из этого формата в какой-либо другой. Monkey’s Audio не поддерживает настроек кодирования с потерями.

Не рекомендую использование с уровнем кодирования "Insane", а так же кодирование версией 4.0.6 для различных девайсов отличных от компьютера.
Используемые расширения файлов — .ape, .apl

Загрузить с http://files.monkeysaudio.com/

2. FLAC (англ. Free Lossless Audio Codec) — популярный свободный кодек, предназначенный для сжатия аудиоданных без потерь. FLAC не удаляет никакой информации из аудиопотока и подходит как для прослушивания музыки на высококачественной звуковоспроизводящей аппаратуре, так и для архивирования аудиоколлекции.

На сегодня формат FLAC поддерживается множеством аудиоприложений, а также имеет большое количество аппаратных реализаций от телефонов до автомобильных проигрывателей. У FLACа нет настроек для работы с потерями, это гарантия того, что материал не будет испорчен на стадии сжатия. Кодирование лучше делать с настройками максимального сжатия: -8.
Используемые расширения файлов — .flac, .fla

Загрузить с http://flac.sourceforge.net/

3. Meridian Lossless Packing — MLP то же самое, Dolby TrueHD, DVD-Audio, HD DVD, Blu-ray. В DVD Video отсутствует! DVD-Audio в структуре диска содержит директорию AUDIO_TS, в которой содержится мультимедиа-контейнер DVD Audio Object Files (расширение .aob), где и содержится MLP-поток (.mlp)

4. DTS (DTS Surround Sound) — формат звука, созданный Digital Theater System, конкурирующий со схожим Dolby Digital. Формат DTS использует меньший уровень сжатия, чем Dolby, так что теоретически он звучит лучше. Формат DTS Stereo практически идентичен Dolby Surround. DTS поддерживает как 5.1-канальный, так и 7.1-канальный варианты звука. DTS в домашних театрах допускает полный битрейт (1509,75 кбит/с).

Здесь нужно быть внимательным, кодек DTS сжимает звук без потерь только в настроках DTS-HD Master Audio или по старому DTS++! Все остальные форматы с красивыми названиями DTS-HD High Resolution Audio, DTS Digital Surround 96/24 (DTS 96/24) НЕ являются беспотерьными, а значит априори качество звука теряется на стадии кодирования!!!

Хотите посмотреть как рисуют звук? Смотрим:

Слева на право: 1. голубая зона SSDS (Sony Dynamic Digital Sound), 2. серая зона Dolby Digital (между перфорацией), 3. Analog Audio (как на пластинке), и 4. временной код DTS (синий).

5. RealAudio Lossless — впервые представленый в составе пакета RealAudio 10 проприетарный кодек для сжатия звука без потери качества. Среди плюсов данного кодека — поддержка потокового вещания, очень быстрое декодирование. К минусам относят закрытость кода и отсутствие многоканальности. Доступен для Microsoft Windows, Macintosh и GNU/Linux.
Используемые расширения файлов — .ra, .ral

6. Apple Lossless (также известный как Apple Lossless Encoder, ALE, или Apple Lossless Audio Codec, ALAC) — это аудио-кодек для сжатия музыки без потерь качества, разработанный Apple Inc. Данные хранятся в контейнере MP4 с расширением .m4a. Хотя Apple Lossless имеет такое же расширение файла, как AAC, это не AAC: данный кодек схож с другими lossless-кодеками, такими, как FLAC и др.

Плееры iPod с док-разъемами (не iPod shuffle) и свежей прошивкой могут воспроизводить звук формата Apple Lossless. Тесты показали, что сжатые ALAC файлы получаются размером примерно от 40% до 60% размера оригиналов в зависимости от вида музыки, подобно другим lossless-форматам. Кроме того, скорость, с которой он может быть декодирован, делает его полезным для устройств с низкой производительностью, таких, как iPod и подобных.
Используемые расширения файлов — .m4a, .alac

7. ТАК (нем. Tom’s verlustfreier Audio Kompressor) — аудио-кодек и формат сжатия цифрового звука без потерь. Отличается высокой степенью сжатия и скоростью кодирования и декодирования. Распространяется бесплатно вместе c набором программного обеспечения для кодирования и воспроизведения, а также плагинами к популярным плеерам. В поддержке на уровне железа замечен пока не был, но кодек активно развивается. Настройки по умолчанию являются разумным компромисом: takc -e.
Используемые расширения файлов — .tk, .tak

Загрузить с http://thbeck.de/

8. True Audio (TTA) — свободный аудио-кодек, осуществляющий сжатие обеспечивает сжатие мультиканальных 8-, 16- и 24-битных аудиофайлов без потерь, способен работать в режиме реального времени. Бесплатный и открытый исходный код и документация, есть аппаратная поддержка медиа-боксами. По настройкам сказать ничего не могу, не использовал.
Используемые расширения файлов — .ta, .tta

Загрузить с http://en.true-audio.com/

9. WavPack — бесплатный аудио-кодек c открытым исходным кодом для сжатия аудио без потери качества. Разработан Дэвидом Брайантом. (расширение .WV) позволяет сжимать (и восстанавливать) 8-, 16-, 24- и 32-битные аудиофайлы в .WAV формате.

Он также поддерживает многоканальные потоки и высокие частоты дискретизации (sampling rate). Обращаю внимание на "уникальный «гибридный» режим", который предоставляет все преимущества сжатия без потерь с дополнительным бонусом: вместо создания одного файла, в этом режиме создается относительно небольшой файл высокого (точнее, указанного при кодировании) качества с потерей (.WV), который может проигрываться сам по себе, а также файл «коррекции» (.WVC), который (в комбинации с предыдущим .WV) позволяет полностью восстановить оригинал. Что означает, надо быть с этим форматом "начеку" и можно запросто попасть на файл низкокачественный. На практике проще использовать имидж файла с .cue чем заталкивать его в ISO.
Используемые расширения файлов — .wv, .wvc, .wv.iso

Загрузить с http://wavpack.com/

10. Windows Media Audio 9 Lossless — аудио-кодек для сжатия без потерь фирмы Microsoft, представленный в начале 2003 года. Сжатый этим кодеком аудио компакт-диск занимает от 206 до 411 Мб, при битрейте звуковых файлов от 470 кбит/с до 1.08 Мбит/с. Кодек входит в состав пакета Windows Media, использует расширение файла .wma, поддерживает 6 дискретных каналов. Официально выпущен только для Windows и Mac OS X. Ничем хорошим себя не зарекомендовал, для чего сделан не понятно, чистый маркетинг. Кроме того он позволяет сжимать данные с потерями.
Используемые расширения файлов — .wmal

11. Lossless Audio (LA) — беспотерьный аудио-кодек от Майкла Бевина. По степени сжатия превосходит все существующие лосслесс кодеки (только кодеки, некоторые аудио-архиваторы жмут лучше). Скорость кодирования/декодирования низкая. Аппаратная поддержка — никакая как в принципе и программная.
Используемые расширения файлов — .la.

Загрузить с http://www.lossless-audio.com/

12. OptimFROG имеет один из лучших показателей сжатия аудио. Реализован на платформах Windows, Linux, Mac, использует технологию аудио сжатия: концепцию декорелляции стерео (совместно с оптимальным предсказателем). Благодаря этому нововведению, эта технология позволила достичь значительного улучшения (~1.5%) сжатия по сравнению с существующими показателями аудио кодеров без потерь. Но несмотря на все "фичи", распространения не получил.
Используемые расширения файлов — .ofr, .ofs

Загрузить с http://www.losslessaudio.org/

А вот и свежее за 2009 год сравнение девяти из вышеперечисленных:

Часть III. — ТЕСТИРОВАНИЕ:

картинка

Сравнение проводилось на платформе:
CPU: DualCore Intel Core i3 530, 2933 MHz (x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2)
Motherboard. плата: Asus P7H55-V
RAM: 2x2Gb DDR3-1333
HDD: Seagate SATA 160GB 8 MB cache (System), Hitachi SATA-II 500GB 16 MB cache (Source), Hitachi SATA-II 1000GB 32 MB cache (Destination)

1. Lossless Audio (LA) — этот весьма старый кодек (2004 г.) стал безусловным победителем по сжатию. При этом надо отметить вполне приемлемую (в сравнении с тем же OptimFROG или WavPack) скорость кодирования, а также достаточную скорость декодирования. Хоть файл LA и не декодировался с помощью плагина foo_benchmark, проигрывался он прекрасно, без запинок и задержек при прокрутке.
Остается только удивляться, почему автор забросил такой прекрасный кодек, даже не открыв при этом исходный код.

2. OptimFROG — не слишком отстает от LA. Но по скорости его едва ли можно назвать быстрым. Кроме того, неприятным моментом является высокая задержка при прокрутке файла — порой это сильно напрягает.

3. Monkey's Audio — популярный, но ресурсоёмкий кодек. Дает действительно высокое сжатие, но опять же имеет проблемы с прокруткой. (автор теста похоже зажал файл с опцией "Insane", что еще чревато потерей данных).

4. TAK — этот активно разрабатываемый кодек не перестает радовать. Если брать во внимание все три параметра (сжатие, кодирование, декодирование), TAK выглядит наиболее привлекательно. Высокая скорость работы объясняется активным использованием процессорных оптимизаций (в т.ч. SSSE3). А использование двух ядер дает почти двукратный прирост скорости кодирования! Таким образом, в случае с TAK преимущество от использования современных процессоров наиболее ощутимо.

5. WavPack — честно говоря, я не знаю, за счет чего этот кодек приобрел популярность. Кодирование со средней степенью сжатия дает результаты сравнимые с FLAC, а использование режимов высокого сжатия приводит к неоправданному понижению скорости. Хотя, главным плюсом этого кодека является его широкая поддержка и функциональность (в т.ч. поддержка многоканального аудио, гибридного режима), но напомню, что эту сторону вопроса мы в данном тесте не рассматриваем.

6. True Audio (TTA) — тут надо отметить разве что очень высокую скорость кодирования и приемлемую степень сжатия (чуть выше чем у FLAC). При этом скорость декодирования нельзя назвать очень высокой.

7. FLAC — степень сжатия средняя, но вот скорость декодирования порадовала. Правда, главной причиной лидерства этого кодека среди общественности является открытый исходный код, и, как следствие, широчайшая аппаратная/софтовая поддержка.

8. Apple Lossless (ALAC) — один из тех кодеков, которые ничем не примечательны, но продолжают активно насаждаться разработчиками (в данном случае Apple). Низкая степень сжатия и скорость декодирования. Скорость сжатия — средняя. Подойдет разве что пользователям iPod — у них просто нет выбора.

9. WMA Lossless — случай аналогичный ALAC, но здесь мы имеем дело со корпорацией-гигантом Microsoft. Еще меньшая степень сжатия, средняя скорость сжатия. Скорость декодирования относительно высокая. Трудно представить случай, в котором возникла бы необходимость использовать именно этот lossless-кодек.

Часть IV. — ОБЩИЕ ВЫВОДЫ:

картинка

Выбор прост и состоит из двух пунктов:

Если важно место на диске то используем Monkey's Audio (АРЕ жмет лучше FLACа на 8-12%, что на диске емкостью 1ТБайт составит около 100ГБайт или около 300 стандартных CD альбомов). То же самое касается раздач в Интернете. Я храню свою коллекцию именно в Monkey's Audio формате с опцией сжатия Extra High. Различными LA и прочими я не пользуюсь, ибо выигрыш от их использования по сравнению с Monkey's Audio мал.

Если важна совместимость с различными плеерами и медиа-железяками которые работают под линухами и не только используем FLAC. Хотя ИМХО для плееров вполне пойдет себе и МР3, ведь главное не звук, а МУЗЫКА!

В дальнейшем будем смотреть на развитие ТТА, но мое субъективное мнение, ТТА уже опоздал на паровоз в "безлузные дали".

Для "маководов" и "Ай-фонцев" — выбор на сколько я знаю пока один — бубен и танцы вокруг разных перекодировщиков в формат ALAC.

И запомните, вы всегда можете перевести файлы из одного кодека в другой, причем без потери качества, этим-то и хороши кодеки сжатия без потерь в отличие от кодеков "сжатия с потерями".

Отступление "лирическое" номер РАЗ.
Для "удифилов". Разницы в звучании форматов — НЕТ! "Не естественный окрас высоких", "легкая неразборчивость панча", аки "завуалированность середины с размазыванием сцены" — это у вас в СИСТЕМЕ. Кодеки не играют они декодируют, ничего не вносят и ничего не удаляют.

Отступление "лирическое" номер ДВА.
Эта статья написана для меломанов и коллекционеров музыки — новичков и середнячков, таким же меломаном и коллекционером.

Гурам, Кводам, Сенсеям, и прочим Великим Кормчим от Мира Аудио, а так же Воинствующим Удифилам здесь будет не интересно. Пишите свою статью "с блэкджеком и кодеками".

Интересная информация:
В настоящее время зарегистрировано 1154 расширений файлов так или иначе связанных с аудио данными !

Источники:
wiki.hydrogenaudio.org/
ru.wikipedia.org/
а так же официальные сайты программ.
Похожие материалы:

Комментариев нет: