Еще совсем недавно МР3 был де-факто ведущим (а по сути — единственным) стандартом сжатия аудиозаписей с потерями. Но время не стоит на месте.
Огромная популярность формата MP3 вполне объяснима. Ведь в действительности только он мог передать достаточно достоверную звуковую картину при кодировании с большой скоростью потока (bitrate), и в то же время при низкой скорости потока качество получаемых файлов было практически недосягаемо для тех немногих кодеров, которые попытались бросить вызов МР3. Единственную достойную попытку нарушить сложившуюся монополию предприняла компания Microsoft. Но появившийся в результате этого формат WMA попал в аутсайдеры. Помимо того что качество оказалось гораздо хуже по сравнению с МР3, максимальная скорость потока была ограничена 160 кбит/с (складывается впечатление, что ограничение было введено просто чтобы избежать позора, поскольку при высоких значениях этого параметра кодер, мягко говоря, не блистал). Позже барьер подняли до 192 кбит/с, но положения вещей это не изменило. Правда, Microsoft не собирается бросать свое детище. Формат WMA все время совершенствуется, но до всеобщего признания ему пока очень далеко.
МР3 доминировал довольно долго, пока в один прекрасный день Fraunhofer IIS, владелец прав на стандарт, не измененил условий лицензирования. Если раньше платить должны были только разработчики кодеров, то теперь планировалось брать по 0,75 долл. с каждого распространяемого экземпляра декодера. Общественность пришла в негодование, и через несколько дней появилось уточнение: платить обязаны только разработчики платных программ, а бесплатно распространяемых декодеров — плееров — нововведение не касается.
К тому времени на МР3 базировался бизнес многих предпринимателей, и беззащитность перед обладателями патента побудила их к поиску альтернативы. Возникла необходимость в открытом формате, сравнимом по качеству с МР3 и удовлетворяющем всем требованиям. И серьезный конкурент для МР3 не заставил себя ждать. Имя его — OGG Vorbis. Именно ему предстоит смертельная схватка с МР3. Давайте познакомимся с участниками предстоящего раунда поближе.
МР3
МР3 — это сокращение от MPEG Layer3. Формат разработан Институтом Фраунгофера (Fraunhofer IIS) и фирмой Thomson. На сегодняшний день он является самым популярным стандартом сжатия аудио с потерями. Благодаря высокой компактности сжатых файлов при достаточно хорошем качестве этот формат прекрасно подходит для обмена аудиоинформацией через Сеть и создания большой фонотеки на компьютере. Огромная популярность формата сосредоточила вокруг него крупный капитал.
Для МР3 написано множество программ: кодеры и декодеры, плееры и программы для создания фонотек на компьютере. Появились и аппаратные МР3-плееры.
Все вышеперечисленное играет на руку МР3, затрудняя массовый переход на новый, более продвинутый формат (если такой появится). Обстоятельства располагают к тому, что, перефразируя слова вождя мирового пролетариата, МР3 — это всерьез и надолго.
OGG Vorbis
Формат OGG Vorbis — относительно новый стандарт сжатия по сравнению с МР3. Он распространяется по лицензии LGPL, т. е. абсолютно бесплатно, а исходные тексты — как модуля кодирования, так и самого кодировщика — полностью открыты и доступны всем желающим. Разработчик формата — некоммерческая (по официальным заявлениям) организация Xiph Org Foundation, она же осуществляет его поддержку. Первоначально инициатором и спонсором проекта была компания iCast, которая занималась трансляцией музыки через Сеть в формате МР3. По условиям патентных соглашений 2% ее прибыли принадлежали обладателю патента на стандарт МР3. Поэтому переход на открытый формат сулил iCast существенную экономию. Правда, потом компания распалась, но ее деньги не были потрачены напрасно.
Помимо открытости исходного кода следует отметить многоплатформность OGG. Кодировщик совместим почти со всеми имеющимися операционными системами.
По утверждениям разработчиков OGG, в этом стандарте использована собственная психоакустическая модель (хотя злые языки намекают, что она «позаимствована» у Fraunhofer IIS). Между прочим, создание психоакустической модели требует очень серьезных исследований особенностей человеческого слуха. Но не будем вдаваться в подробности. Для нас главное — определить, пригоден ли OGG для сжатия аудио или лучше использовать более привычный МР3.
Участники, на старт!
OggdropXPd. Формат OGG будет представлять последняя (на день тестирования) версия кодировщика, OggdropXPd 1.1, взятая с сайта разработчика. После загрузки выяснилось, что обновлений кодера не было с июля 2002 г., о чем свидетельствует окно About. Сама программа занимает всего 250 Кбайт и является по совместительству и кодером, и декодером — проигрывателем.
После ее запуска на Рабочем столе появляется небольшой квадратик с надписью «Drop Files Here» и изображением маленькой рыбки с выпученными глазами (рис. 1).
Рис. 1. Похоже, что интерфейс программы «слишком гениален» (в смысле — слишком прост) |
Использовать программу просто. Достаточно перетащить нужный файл в это окошко, а дальше OggdropXPd сам решит, что с ним делать. Вернее, не сам, а поступит в соответствии с предварительно заданными настройками. Если перетащить в окошко файл в формате wav, то кодировщик создаст сжатый OGG-файл. А если перетащить туда OGG-файл, то в зависимости от настроек либо будет создан несжатый файл wav, либо запустится проигрывание сжатого файла. Во время всех операций рыбка забавно поворачивается.
Излишней сложностью и большим количеством настроек кодировщик OggdropXPd никого не испугает — просто укажите нужную скорость потока (рис. 2). Однако допускаю, что не всем понравится метод перетаскивания файлов, реализованный в OggdropXPd.
Рис. 2. Вот и все настройки |
Lame. Для работы с форматом МР3 существует огромное количество кодеров, основанных на различных психоакустических моделях. Всего можно выделить три наиболее распространенных направления.
Во-первых, это ныне не развивающаяся линейка кодеров производства XingTech с далеко не лучшим качеством кодирования. Во-вторых, существует довольно много кодеров, основанных на открытом коде ISO, но ни один из них не получил широкого распространения. В-третьих, это кодеры Fraunhofer IIS, разработчика МР3, которые и по сей день входят в число самых качественных.
Потом появился проект под названием Lame. Его разработчики слегка модифицировали стандарт МР3, ловко обойдя тем самым необходимость патентных отчислений. В результате появилась база для еще одного полностью открытого кодера. Lame, так же как и OGG, является полностью открытым. Исходные тексты тоже доступны всем желающим.
Сегодня Lame стал общепризнанным лидером среди кодеров МР3. На момент написания статьи последней версией была Lame 3.93. В распакованном виде программа занимает 550 Кбайт — примерно в 2 раза больше, чем OggdropXPd.
Сначала кодер отпугнул пользователей отсутствием интерфейса. Чтобы воспользоваться программой, придется вспомнить старые добрые времена DOS. Все операции осуществляются через командную строку. Так же вводятся и многочисленные параметры кодирования. Поклонники UNIX, думаю, будут в восторге.
Остальным предлагаю загрузить дополнительно одну из множества графических оболочек, написанных независимыми разработчиками. Я выбрал наиболее удобную оболочку RazorLame (рис. 3).
Рис. 3. Теперь Lame имеет весьма приятный вид |
Достаточно распаковать архив с программой, поместив ее в папку, где располагается Lame, и запустить файл RazorLame.exe.
Огорчил один довольно серьезный недостаток, с которым мне пришлось столкнуться в ходе экспериментов. Кодер постоянно выдавал сообщения об ошибке при попытке кодировать с переменной скоростью потока. Остальное прошло вполне гладко.
Как происходило тестирование
Часто при тестировании форматов сжатия проверяется не столько само качество звучания, сколько соответствие спектрограмм между закодированным файлом и оригиналом. Хотя такой анализ и достаточно показателен, играть в игру «найдите 10 отличий» при исследовании звуковых стандартов я считаю некорректным. Звук надо слушать, а не смотреть. Тем более что состав моей аудиосистемы располагает именно к этому.
Для сравнения было отобрано несколько композиций различных музыкальных направлений.
Все аудиозаписи были переписаны со звуковых CD с помощью программы Nero, одной из наиболее качественных в своем классе. Файлы, сжатые в формате МР3, проигрывались плеером Media Player 7, построенном на ядре Fraunhofer, о достоинствах которого я уже упоминал. Чтобы исключить влияние внешних факторов, файлы OGG воспроизводились «родным» для формата проигрывателем OggdropXPd, хотя его функции весьма ограничены.
При этом использовалась «народная» звуковая плата Sound Blaster Live! 5.1, причем сигнал снимался не с фронтального выхода, который сильно испорчен встроенным усилителем для наушников, а с более качественного тылового. Далее сигнал поступал в усилитель «Одиссей-001» (рис. 4), точнее, в корпус от него. Схема же этого устройства была практически полностью переработана.
Рис. 4. Внутри корпуса в стиле ретро 1978 г. выпуска скрывается очень солидное устройство. Не смущайтесь обилием кнопочек и регуляторов. Ничего не работает — зато и звук не портит |
В тесте была использована самодельная трехполосная акустическая система, которую автор-разработчик причисляет к классу «ультра Hi-Fi».
В качестве высокочастотного звена в ней использованы самые лучшие пищали из всех когда-либо производившихся на территории СССР и РФ — 10ГДВ92. А также среднечастотные динамики известной западной фирмы Delco и 10ГД30Б — в качестве низкочастотного звена. Для сравнения: в испытаниях вся эта конструкция достаточно уверенно обошла набор из колонок JBL, усилителя NAD и CD-проигрывателя Pioneer общей стоимостью около 40 тыс. руб. Правда, слабым местом в моей системе оказалась звуковая плата Sound Blaster Live!, после замены которой на стационарный CD-проигрыватель ситуация коренным образом изменилась и самодельная акустическая система не оставила дорогостоящему набору ни единого шанса. К сожалению, при тестировании пришлось довольствоваться звуковой платой.
500 кбит/с
В данной номинации OGG выступает в гордом одиночестве. Только он поддерживает сжатие с такой высокой скоростью потока. И так как соревноваться здесь не с кем, то OGG была дана возможность проявить свои лучшие стороны (а может, и показать недоработки). Кодер OggdropXPd рекомендует сжимать звук переменной скоростью потока. Так и поступим.
После шестиминутного (на Pentium-166 ММХ) кодирования файл продолжительностью в 3,5 мин стал занимать в формате OGG в 3 раза меньше дискового пространства (11 Мбайт вместо 35). Прослушивание показало, что OGG оказался на высоте. При субъективном тестировании мой требовательный слух не заметил подмены, не выявив никакого отличия от оригинала. При сжатии остальных записей картина аналогичная. Низкие, средние и, что особенно приятно, высокие частоты остались в полном объеме и ничуть не изменились. OGG продемонстрировал, что избавлен от недоработок и готов соперничать с МР3.
320 кбит/с
C OGG все понятно. Достаточно изменить скорость потока, и можно приступать к кодированию. Сжатие при скорости потока в 320 кбит/с заняло примерно столько же времени, сколько и при 500 кбит/с. А вот Lame помимо скорости потока просит указать еще и тип стереозаписи. Но единственным способом сохранить приемлемое качество является использование режима Stereo.
Попытка применения переменной скорости потока (Variable Bitrate) провалилась из-за ошибки кодера. Пришлось довольствоваться постоянной скоростью потока (Constant Bitrate).
В среднем кодирование в формате МР3 заняло на 15% меньше времени, чем кодирование в OGG, а полученные файлы оказались на 5% легче, что можно записать в актив Lame.
В ходе прослушивания оба формата показали себя с наилучшей стороны. Единственная претензия к ним — верхние частоты стали немного жестче. Но никакого их «завала» не наблюдалось. В остальном сжатые записи были почти идентичны оригиналам. Можно смело поставить обоим кодерам по пятерке. Посмотрим, что будет дальше.
256 кбит/с
Здесь, как и в предыдущем случае, ситуация почти не изменилась. В формате OGG звук по-прежнему сжимается дольше, а получаемые файлы занимают больше места. При данной скорости потока качество сжатых файлов начало отдаляться от оригинала. Но пока отличия минимальны. У OGG немного «размазался» дальний план. У МР3 верхние частоты стали еще более жесткими, а сам звук — несколько суше. На мой взгляд, при такой высокой скорости потока более детальная, но сухая картина у MP3 несколько предпочтительней, нежели «размазанность» OGG.
192 кбит/с
При данной скорости потока качество сжатых файлов уже довольно сильно отличается от оригинала, но у каждого кодера по-своему. Складывается ощущение, что Lame пытается сохранить достоверность звучания любой ценой. Но потока не хватает, и поэтому инструменты и голос звучат немного резко и неприятно. Высокие частоты также жестковаты. А вот запись в формате OGG звучит приятнее, хотя детальности нет и верхние частоты «размазываются».
Я не смог определить, какой из кодеров в данном случае лучше. Хотя оба формата звучат по-разному, их качество полностью соответствует скорости потока. Если выбирать, исходя из предпочтений большей детальности и достоверности, то оптимальным будет MP3, а если из приятности звучания, то OGG.
160 кбит/с
От качества кодирования при этой скорости потока зависит очень многое. Сейчас стандарт 160 кбит/с выступает в роли альтернативы самому распространенному формату 128 кбит/с. Хотя популярность первого еще не столь велика, но все больше МР3-порталов предлагают записи именно в этом формате, поскольку он представляет собой компромисс между маленьким размером получаемого файла и приемлемым качеством.
При прослушивании сжатых файлов стала ясна общая картина приоритетов кодеров. Формат OGG обеспечивает максимально выраженные средние частоты, практически не ухудшая звучание голоса и основных инструментов, расположенных на переднем плане, но почти полностью исчез задний. Верхние частоты остаются неизменными, если их мощность высока, а при относительно тихом звучании самый верхний диапазон «срезается». Поэтому тарелки на заднем плане теряют звонкость и сливаются с общим фоном (вернее, задним планом, который стал фоном).
На первый взгляд, МР3 звучит несколько хуже. При сохранении большего числа подробностей звучания звук стал несколько грубоват. Но радует хорошее отношение Lame к самым верхним частотам.
В обоих форматах стереопанорама довольно сильно размылась, хотя при прослушивании колонок по отдельности звучание уступает оригиналу не особенно сильно.
128 кбит/с
Оказалось, что разницы в 20% между значениями скорости потока 160 кбит/с и 128 кбит/с кодерам хватило, чтобы полностью исказить звуковую картину. Если раньше отличия между оригиналом и сжатым файлом были хотя и заметны, но не критичны, то теперь от композиций просто ничего не осталось.
Кодер ОggdropXPd как всегда достаточно хорошо сжал звуки голоса и ведущих инструментов. Но дальний план «размазался» полностью и стал напоминать даже не фон, а шум. Высокие частоты почти все сохранились, но так «размазались», что непонятно, какой инструмент их воспроизводит. Кроме того, стало несколько меньше басов.
Кодер Lame сохранил дальний план, но все инструменты теперь зазвучали «синтезаторно» и бедно. Басы остались, однако несколько размылись. Появилось ощущение, будто играет не акустическая система с мощным низкочастотным звеном, а средне- и высокочастотные сателлиты с рассогласованным по фазе сабвуфером. Композиция «Металлики» превратилась в какую-то кашу. Высокие частоты обрезались предположительно (на слух) на 15—16 кГц и перестали восприниматься.
Оба кодера следует признать несостоятельными при скорости потока 128 кбит/с. И выбрать между ними очень сложно из-за разности характера звучания. Пожалуй, OGG предпочтительнее благодаря более внятному и приятному переднему плану.
Так что же лучше?
Даже после длительного прослушивания определить победителя оказалось довольно сложно. Оба кодера проявили себя очень достойно, доказав, что применение сжатия с потерями вполне обосновано. Качество звуковой платы Sound Blaster Live! не позволило достоверно оценить оба формата при высокой скорости потока. А при низком значении этого параметра звучание аудиозаписей, сжатых в Lame и в OggdropXPd, весьма сильно различается.
Качество аудио, обеспечиваемое обоими форматами при одинаковой скорости потока, вполне сопоставимо. Значит, обе технологии неплохо отработаны, и серьезных изменений в лучшую сторону ожидать не приходится (вероятно, до тех пор, пока не придумают более совершенное решение).
Если предположить, что сжатые файлы с высокой скоростью потока (от 256 кбит/с) будут использоваться на компьютерной акустической системе среднего уровня (имеются в виду компьютерные деревянные стереоколонки известных производителей в ценовой категории 60—120 долл.) и на звуковых платах класса Sound Blaster Live!, то здесь предпочтительней выглядит МР3.
Но при использовании акустических систем низшей ценовой категории и сжатии с относительно низкой скоростью потока (порядка 160 кбит/с) формат OGG уходит несколько вперед, поскольку передача голоса и инструментов переднего плана наиболее важна, а неразборчивость дальнего плана не будет заметна благодаря качеству самих колонок.
Для подтверждения этой гипотезы был проделан эксперимент с использованием дешевых компьютерных колонок. Как и следовало ожидать, разница между CD и МР3 начала ощущаться только при скорости потока 160 кбит/с. Записи же формата OGG от оригинала не отличались даже при скорости потока 128 кбит/с. Это подтверждает мнение, что форматы «заточены» не под особенности человеческого слуха, а под недостатки акустической системы.
Помимо всего прочего, осталось впечатление, что OggdropXPd обогащает (или портит) звук гармоническими искажениями четных порядков, как при применении ламповой техники, которая звучит несколько приятнее транзисторной именно из-за этого. Скорее всего, такое ощущение возникло на фоне «сухости» звука в формате МР3 при низкой скорости потока.
Но какой формат использовать, решать все равно вам. Мне остается только заметить, что у МР3 появился очень сильный конкурент, достойный всяческого внимания.
С автором можно связаться по e-mail: shoker@xakep.ru.
Кодирование в формате МР3
Процесс кодирования звука в формате МР3 можно условно разбить на четыре основных этапа.
Подготовка к кодированию. На этом этапе исходный сигнал разбивается на отдельные блоки, которые принято называть фреймами. МР3 — потоковый формат. Он представляет собой поток абсолютно независимых друг от друга фреймов, и все операции далее происходят с каждым фреймом отдельно. Фреймы даже могут кодироваться с различными параметрами в пределах одного файла. Для этого каждый фрейм содержит в себе заголовок с описанием и нужной информацией. Будучи разделенными, они объединяются в единое целое только на этапе воспроизведения декодированного сигнала.
Преобразование функции. Как известно, звук является сложной функцией, представляющей собой суперпозицию простейших синусоид. Звуковую функцию можно разложить, как любую другую сложную функцию. Разложение дает множество диапазонов близких частот. Теперь, как в известной поговорке, мясо отдельно, мухи отдельно (к сожалению, в большинстве случаев роль мух выполняют частоты выше 16 МГц).
Работа психоакустической модели. На данном этапе идет работа над диапазонами частот каждого фрейма. Это самый главный этап кодирования. Именно здесь определяется, что будет удалено из итогового сигнала с целью уменьшения размера получаемого файла. Разные кодеры применяют различные психоакустические модели. От качества модели и зависит качество получаемых файлов.
Завершение кодирования. Поток дополнительно кодируется методом Хаффмана. Далее генерируется итоговый файл.
Психоакустическая модель
Любое сжатие с потерями подразумевает удаление из композиции малозаметных деталей, которое не внесет сильных искажений в звучание.
Принцип выбрасывания из сигнала «лишних» деталей основан на особенностях человеческого слуха. Во время работы психоакустической модели диапазоны одного фрейма сравниваются между собой (причем неважно, МР3 это или OGG, — методики всех кодеров весьма схожи). На основе маскировочного эффекта диапазоны со слабой амплитудой, идущие одновременно с сигналами с сильной амплитудой (т. е. когда слабые сигналы маскируются более сильным), удаляются. Убираются также слабые сигналы, идущие после фрейма с сильным сигналом. Это основывается на временном ослаблении чувствительности человеческого уха к слабым сигналам. Кроме того, учитывается неспособность большинства людей различать сигналы, мощность которых ниже определенного уровня, своего для каждого диапазона.
Все вышеперечисленное называется адаптивным кодированием и используется всеми без исключения форматами сжатия аудио с потерями.
Однако не все так гладко, как заверяют нас разработчики стандартов сжатия. В идеале задача акустической системы заключается в полной имитации звуковой картины для слушателя. Если с закрытыми глазами отличить звук «живого» инструмента или вокалиста от воспроизведенного аппаратурой нельзя, то задача выполнена. Но на практике такого не бывает. Все, что находится между исполнителем и ушами слушателя (микрофон, носитель, воспроизводящее устройство, усилитель, колонки и даже провода), вносит искажения.
На самом деле говорить о недостатках человеческого слуха некорректно. Например, если у живого оркестра обрезать часть частот, которые с точки зрения психоакустики являются лишними, то звучать он будет совершенно по-другому. Другое дело, что звук оркестра, воспроизведенный с помощью большинства массовых звуковых плат, искажен и неразборчив настолько, что вносимые изменения останутся незамеченными.
Скорость потока
Скорость потока (bitrate) — это величина потока информации, затрачиваемая на одну секунду сигнала. Причем имеется в виду общая величина потока, которая не зависит от количества каналов. Например, запись в формате Mono 256 кбит/с будет занимать столько же, сколько и в формате Stereo 256 кбит/с. Только в первом случае весь поток придется на один канал, а во втором — каждому из двух каналов достанется по 128 кбит/с.
Типы кодирования стереозвука в формате МР3
Правильность выбора типа кодирования стереосигнала может очень сильно повлиять на качество полученного файла.
Mono. Как понятно из названия, стереофонический сигнал сливается в один общий канал и кодируется с указанной скоростью потока. Этот формат обычно стоит применять, когда правый и левый каналы практически совпадают. В таком случае удастся закодировать запись более качественно (или сэкономить немного места, использовав более низкую скорость потока).
Dual Channel. При кодировании данным способом поток будет делиться между каналами поровну. Часто это нерационально. Поэтому был придуман более совершенный способ, который имеет очень скромное название (см. ниже).
Stereo. Здесь, как и в предыдущем случае, работа над каналами производится абсолютно независимо, только поток делится не поровну, а динамически. Наиболее загруженный канал получает больший поток. Таким решением обеспечивается наивысшее качество.
Joint Stereo. В данном случае сигнал раскладывается на средний сигнал и разносный сигнал между каналами. Далее идет кодирование с сильным приоритетом одного из каналов.
Forced Joint Stereo. Этот способ представляет собой монозапись с некоторой имитацией стерео. Помимо среднего сигнала между каналами записывается и разность мощностей сигналов.