Исследование качества кодирования звука разными кодерами


 

Формат МР3 для высококачественного кодирования звука становится все более и более популярным. Изначально разработанный для использования в рамках стандартов компрессии видео MPEG1 и MPEG2, он очень быстро получил распространение и в виде самостоятельного формата. Основными причинами такого поворота событий стали сохранение высокого качества звука при больших степенях сжатия и более чем активные попытки фирмы-разработчика IIS Fraunhofer извлечь максимум прибыли из своего детища.

В своей основе МР3 является прямым развитием MPEG Layer I и Layer II, и в нем также используется психоакустическая модель для кодирования исходного сигнала. Из-за этого процесс кодирования неоднозначен и может варьироваться в зависимости от использованного кодера (подробнее см. Обзор МР3. Часть 1.). Эта неоднозначность означает, что, закодировав один и тот же сигнал двумя разными кодерами, мы можем получить после декодирования два различающихся по звучанию сигнала. Очевидно, что предпочтителен тот кодер, который наилучшим образом сохраняет исходный сигнал. Цель данного обзора — выяснить, какой из современных кодеров даст нам наилучший результат.

Методика тестирования

Обычно для сравнения исходного и кодированного сигнала применяют метод сравнения их Амплитудно-Частотных Характеристик (АЧХ). Существует две разновидности этого метода: сравнение средних АЧХ сигналов и сравнение изменения АЧХ во времени. Чаще всего используется первая разновидность ввиду простоты ее реализации — сравнение необходимо производить только один раз. Однако при усреднении теряется значительная часть информации о сигнале, и как следствие при абсолютно одинаковых АЧХ исходный и кодированный сигнал могут весьма различаться в звучании, если в сигнале существуют большие по амплитуде, но весьма кратковременные всплески некоторых частот. Вторая разновидность позволяет избежать таких проблем, однако для реализации тестирования необходимо производить столь огромное количество вычислений с плавающей точкой (быстрое преобразование Фурье (БПФ) дает весьма неплохие результаты для анализа больших блоков сэмплов, однако для определения АЧХ по 10–20 сэмплам оно абсолютно неприменимо), что весь процесс тестирования займет несколько дней для минуты сигнала CD качества.

Не так давно распространение получил метод сравнения сонограмм сигналов — графического представления АЧХ сигналов во времени, в котором по оси абсцисс откладывается время, по оси ординат частота составляющей сигнала (обычно используется логарифмическая шкала), а интенсивность свечения точек определяет амплитуду данной частотной составляющей сигнала. Этот метод по сути дела представляет собой модификацию метода сравнения изменений АЧХ во времени, а проблема нехватки производительности в нем решается посредством уменьшения количества рассматриваемых частотных составляющих и расширении "окна сканирования" АЧХ до 50–100 сэмплов, что делает возможным использование БПФ. Такое упрощение метода неизбежно приводит и к уменьшению его точности. Во-первых уменьшение количества рассматриваемых частотных составляющих приводит к потере "разрешающей способности" этого метода, делая его практически аналогичным усреднению АЧХ во времени. Во-вторых из-за расширения сканируемого окна и использования БПФ возникает эффект "размазывания" сигнала во времени. Чтобы проиллюстрировать сказанное имеет смысл привести скриншот, сделанный в звуковом редакторе GoldWave 4.16.

Данный скриншот был получен следующим образом: был создан файл содержащий в качестве сигнала синусоиду с частотой 2 Кгц, причем ей предшествовала примерно 1 секунда "тишины". Как видно из скриншота, несмотря на то, что маркер проигрываемого в настоящий момент сэмпла еще не достиг начала синусоидального сигнала, и АЧХ и сонограмма уже (!!!) показывают наличие сигнала с максимальной интенсивностью в районе 2 КГц, причем этот сигнал явно не синусоидальный, так как его АЧХ даже отдаленно не напоминает узкий пик. Форму узкого пика (тонкой и яркой линии на сонограмме) АЧХ приобретает только через ~0,1 секунды после начала синусоидального сигнала. Тем не менее "устойчивость" этого узкого пика также находится под большим вопросом — его максимум колеблется в пределах от 500 Гц до 4 кГц. Если учесть, что сам алгоритм сжатия МР3 также вносит в сигнал похожие артефакты из-за того, что он основан на квантовании сигнала по частотным полосам, то использование сонограмм для оценки качества кодирования явно не имеет особого смысла ввиду огромной неточности получаемого результата.

Для избежания упомянутых выше проблем с методами, основанными на анализе АЧХ, была разработана методика тестирования, работающая по абсолютно другому принципу. Кодер МР3 фактически является "грубым" архиватором, при "распаковке" продукции которого нельзя полностью восстановить исходную информацию. При таком подходе качество кодирования можно однозначно оценить через процент сохранения информации. Таким образом, если из исходного сигнала вычесть закодированный сигнал, результат будет представлять собой именно ту часть информации, которая была потеряна в процессе кодирования. Среднее значение амплитуды этого результата и будет тем самым параметром, определяющим качество кодирования. Он был назван "средней разницей сигналов" (СРС).

Однако, не все так хорошо в этом методе. Например, если перевернуть сигнал относительно его нулевого уровня (или просто сместить этот уровень на некоторую величину), то СРС приимет значение удвоенного среднего уровня сигнала (или значение величины смещения нулевого уровня), несмотря на то, что сигнал будет звучать идентично исходному (и иметь соответствующую АЧХ).

Поэтому более применимым для оценки качества кодирования стал другой параметр, названный "средней разницей форм сигналов" (СРФС). Для его определения исходный и кодированный сигналы обрабатываются так, что каждый сэмпл вместо амплитуды отклонения динамика от положения равновесия равен значению разности этих амплитуд для предыдущего и этого сэмпла (такая техника представления сигнала использовалась в ADPCM кодировании). Для уже обработанных сигналов вычислялась их СРС которая, для исходных сигналов является СРФС. Основное отличие СРФС от СРС заключается в использовании для оценки различий сигналов модулей их дифференциалов, а не разницы в амплитуде. Благодаря этому сравниваются именно формы сигнала, независимо от расположения нулевого уровня.

Но, несмотря на очевидные недостатки СРС, при тестировании было решено воспользоваться обоими методами. Это решение мотивировалось повышенными требованиями к кодеру. Хотя стандарт МР3 и был изначально разработан как "дающий похожее звучание, но не идентичные сигналы" (вот что значит слова "психоакустическая модель"), максимальное сохранение всех параметров исходного сигнала все равно является первостепенной задачей кодера, ввиду их явной корреляции с похожим звучанием.

Недостатки такого метода сравнения очевидны. СРС и СРФС не несут в себе информации о том, в чем именно теряет качество кодированный сигнал по сравнению с исходным. Более того, они даже не могут быть 100% характеристикой качества кодирования. Возможна ситуация, когда сигнал с СРФС близкой к нулю будет для человека звучать неотличимо от сигнала со значительно большей СРФС.

В то же время невозможна ситуация, когда сигнал с СРФС близкой к нулю будет сильно отличаться в звучании от исходного. Поэтому СРС и СРФС являются избыточными характеристиками и гарантируют, что различия сигналов будут не больше некоторого уровня. Поэтому первым этапом исследований было определение максимальных значений СРС и СРФС, при которых человеческое ухо еще не может заметить разницы в сигналах. Для этого к синусоидальным сигналам разных частот (от 200 Гц до 20 кГц) максимальной амплитуды прибавлялся "белый" шум разного уровня. Полученные сигналы прослушивались совместно с исходными и определялись те пороговые значения уровня "белого" шума, при которых его не слышно за основным синусоидальным сигналом. Для такого уровня шума определялись СРС и СРФС, которые и принимались за "эталон". В случае, если кодирование сигнала дает СРС и СРФС меньшие эталонных, дальнейшее улучшение качества кодирования представляется бесполезным. Для значений СРС и СРФС больших эталонных существует вероятность слышимого отличия сигналов. Однако, из-за использования психоакустической модели эта вероятность весьма мала даже для значений СРС и СРФС, превышающих эталонные в несколько раз.

Среди преимуществ этого метода сравнения следует отметить его применимость к любым методам кодирования сигнала. Уже сейчас существуют некоторые форматы кодирования звука, не уступающие по степени сжатия МР3, основанные не на сохранении определенной части частотного спектра сигнала, а на, например, динамическом изменении частоты дискретизации. Для восстановления сигнала в таких методах используют интерполяционные методики, и полученный в результате сигнал сохраняет среднюю АЧХ исходного, несмотря на значительные отличия в локальных АЧХ. Для таких форматов кодирования метод сравнения средней АЧХ неприменим — он даст слишком завышенные результаты — а вот СРС и СРФС без проблем охарактеризуют качество кодирования. Поэтому исследование не было ограничено рамками только МР3 формата.

Инструментарий

Для проведения исследований были использованы две программы для работы со звуком и один язык программирования. Для декодирования МР3 файлов в WAV формат применялся Winamp v.2.62 с декодером MP3 от IIS Fraunhofer (v.2.23). Такой выбор был сделан из-за того, что большинство других декодеров/проигрывателей МР3 используют специальные пост-обработки сигналов для придания им "более мягкого" звучания, в то время как для исследований качества кодирования сигнала он необходим в чистом виде без всяких пост-обработок. Затем сохраненный WAV файл с кодированным сигналом подвергался обработке в звуковом редакторе GoldWave v.4.16.. В силу особенностей стандарта МР3 кодированный сигнал содержит некоторое количество (определяемое кодером) тишины или малозаметного шума перед началом сигнала. Поэтому методом визуального сравнения исходного и кодированного сигнала находилось реальное начало звуковых данных и предшествующий ему мусор удалялся. В нескольких случаях первые несколько сотен сэмплов исходного сигнала вообще не было закодировано. Однако, для сохранения чистоты эксперимента такие ошибки кодеров решено было признать просто "неточностями" в сохранении сигнала, и, следовательно, оставить их без внимания — все равно они повлияют на СРС и СРФС.

Для нахождения СРС и СРФС с использованием Delphi 3 были написаны две небольшие программы. Первая создавала два файла одинакового формата, один из которых содержал РС, а второй РФС. Вторая программа находила среднее значение данных для файлов формата результатов первой.

Использованные кодеры

  128 Kbit/s 160 Kbit/s 192 Kbit/s 256 Kbit/s 128 VBR 160 VBR 192 VBR
Astrid/Quartex AACEnc v.0.2 + N/A N/A N/A N/A N/A N/A
Audioactive Production Studio v.1.0.5 + - - + N/A N/A N/A
Audioactive Production Studio v.1.5.4 + + + + N/A N/A N/A
Audioactive Production Studio v.1.5.5b + + + + N/A N/A N/A
Audioactive Production Studio v.2.0.4j + + + + N/A N/A N/A
Blade Encoder DLL v.0.91 + + + + N/A N/A N/A
Blade Encoder DLL v.0.93.4 + + + + N/A N/A N/A
Fraunhofer Radium MP3 codec v.1.263 + + + + N/A N/A N/A
Freeware AAC Encoder v.0.61 + + + + N/A N/A N/A
GOGO DLL v.2.3 + - - + N/A + +
GOGO v.2.35.1 + + + + N/A + +
L3Enc v.2.61 + - - + N/A N/A N/A
Lame DLL v.3.7 - - - + N/A N/A N/A
Lame DLL v.3.83 + + + + N/A N/A N/A
Lame v.3.61 + + + + + + +
Lame v.3.84 + + + + + + +
Lame v.3.85 + + + + + + +
LQT Liquid v.4.0 + + + N/A + N/A +
Microsoft WMA V1 + + N/A N/A N/A N/A N/A
Microsoft WMA V2 + + N/A N/A N/A N/A N/A
Microsoft WMA V7 + + + N/A N/A N/A N/A
MP3 Producer v.2.1 Professional + - - + N/A N/A N/A
MP3Enc v.3.0 + - - + N/A N/A N/A
OGG Vorbis N/A N/A N/A N/A ~137 N/A N/A
PULSE MP3 Master v.2.0 + + + + N/A N/A N/A
RealAudio v.3 80 N/A N/A N/A N/A N/A N/A
SCMPX v.1.5.1 + - - + + + +
Streambox Ripper v.2.009 + - - + N/A N/A N/A
TwinVQ Encoder v.2.1.1 80 and 96 N/A N/A N/A N/A N/A N/A
VQF Yamaha SoundVQ Encoder V.2.60b1e 80 and 96 N/A N/A N/A N/A N/A N/A
XingMP3 Encoder v.1.5 + + + N/A + + +
XingMPEG Encoder v.2.20 + + + + N/A N/A N/A
(+) — исследование проводилось; (-) — исследование не проводилось; (N/A) — формат не поддерживается

Astrid/Quartex AACEnc v.0.2

Кодер базируется на алгоритме MPEG2 Advanced-Audio-Codec (AAC), используемый при кодировании звуковых дорожек DVD фильмов. В своей основе он почти не отличается от MPEG1 Layer I/II/III, также выполняя кодирование посредством квантования АЧХ сигнала. Cпециально для AAC были разработаны методы кодирования посторонних шумов (Temporal Noise Shaping, Perceptual Noise Substitution), а также методы искусственного увеличения эффективного битрейта с помощью предсказания будущих изменений сигнала (Long Term Prediction), однако этот кодер их не поддерживает. Графическим интерфейсом этот кодер не обладает, все кодирование происходит из командной строки win32 консоли. Для декодирования применяется специальный декодер aacdec, написанный также Astrid/Quartex. Плагинов для стандартных проигрывателей музыки найти не удалось, поэтому формат AAC от Astrid/Quartex вряд ли получит широкое распространение.

Audioactive Production Studio v.1.0.5

Основан на коде от IIS Fraunhofer, и отличается от "родного" кода только оптимизацией по скорости. Обладает незатейливым интерфейсом, который, однако весьма удобен для кодирования большого количества файлов. Из параметров кодирования можно изменить только битрейт и вид оптимизации: по скорости и по качеству. В случае неправильного значения частоты дискретизации для выбранного битрейта автоматически производится ресэмплинг. Программа способна производить как и чисто МР3 файл, так и WAV-MP3 — файл МР3, "обутый" в RIFF чанк. Одной из особенностей является поддержка специального оборудования для аппаратного кодирования звука, производимого фирмой Audioactive. Основным преимуществом этого оборудования называется "сохранение прекрасного качества при скорости кодирования в реальном времени". Однако в свете все возрастающих производительностей процессоров это преимущество сходит на нет — уже на Pentium II 266 мы можем кодировать звук в реальном времени, используя чисто "программный" кодер, что делает покупку дополнительного оборудования лишенной смысла.

Audioactive Production Studio v.1.5.4

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

Audioactive Production Studio v.1.5.5b

Эта версия использует более новый по сравнению с 1.5.4 код от IIS Fraunhofer, что, судя по обещаниям авторов, должно обеспечить более быстрое кодирование при сохранении качества на уровне старых версий. В реальности в быстром режиме кодирования качество значительно ухудшилось, в то время как High Quality режим стал действительно незначительно качественным. Заметного ускорения при этом замечено не было, что возможно объясняется пометкой "бета". К сожалению, найти финальную версию 1.5.5 так и не удалось.

Интерфейс программы остался неизменным и полностью совпадает с интерфейсом версии 1.0.5 — еще одно подтверждение его уникальности и удобности.

Audioactive Production Studio v.2.0.4j

И снова авторы обещают сверхбыструю работу и повышение качества, причем быстроты они действительно достигли, а вот с качеством не вышло — оно стало много хуже даже версии 1.0.5. Незначительно поменялся интерфейс: появились возможности декодирования МР3 файла, перекодирования его в другой битрейт или формат, а также возможность прямого кодирования в МР3 с CD. В качестве основы используется кодер от IIS Fraunhofer для быстрого режима (MP3 Producer), и переписанный заново старый l3enc IIS Fraunhofer кодер для High Quality режима. Неприятным моментом является невозможность установить тип канальности стерео, не смотря на то, что FHG-IIS Professional Codec позволяет это сделать.

Blade Encoder DLL v.0.91& Blade Encoder DLL v.0.93.4

При исследованиях использовался не сам Blade Encoder, а его DLL версия. Код этого кодера основан на демонстрационном варианте ISO кода, отличаясь только значительной оптимизацией по скорости кодирования. В качестве программы, использующей эту библиотеку был взят звуковой редактор GoldWave. В нем есть как возможность кодирования одного файла, так и специальный режим массового кодирования. Как и у Production Studio существует возможность сохранить закодированный сигнал как в виде MP3 файла, так и в виде WAV. Однако эту возможность следует отнести скорее к GoldWave, а не к Blade Encoder. Среди изменяемых параметров кодирования можно указать канальность (STEREO или MONO), битрейт и частоту дискретизации результата — вполне достаточно для быстрого получения требуемого результата. Однако для действительно искушенного пользователя такого количества настроек недостаточно.

Freeware AAC Encoder v.0.61

Этот кодер принадлежит к семейству AAC, что видно из его названия. Из всех протестированных AAC-кодеров только он один поддерживает функции LTP, PNS и TNS. В процессе тестирования было решено не применять PNS, так как эта функция нужна только при кодировании на низких битрейтах сигналов с высоким уровнем широкополосных белых шумов — при кодировании производится фильтрация и запоминается только их уровень. При декодировании эти шумы эмулируются с помощью добавления к сигналу белого шума с уровнем интенсивности, равным запомненному при кодировании. Оставшиеся две функции ничем особенным не выделились — результат, полученный с их применением несколько хуже чем без них, однако разница крайне мала.

Для декодирования применялся специальный декодер Freeware AAC Decoder, созданный авторами кодера. Также доступен плагин для Winamp.

GOGO DLL v.2.3 & Lame DLL v.3.7 & Lame DLL v.3.83

Эти библиотеки кодирования МР3 использовались совместно с очень удобной программой Easy CD-DA Extractor, предназначенной для извлечения звуковых треков с музыкальных компакт-дисков. Основой для всех трех библиотек служит код первого GPL кодера LAME v.3.5 (Lame Ain't an MP3 Encoder). В свою очередь этот код изначально был основан на демонстрационном коде ISO, что делало невозможным распространение LAME под GPL. Однако в мае 2000 года последние куски "чужого" кода были полностью переписаны, и в коде LAME не осталось ничего общего с ISO. Это позволило начать распространение кода под GPL, однако именно в виде исходных текстов на C. Объясняется этот факт весьма просто: создатель МР3 IIS Fraunhofer берет со всех фирм, распространяющих кодеры, определенную сумму за использование стандарта, независимо от вида лицензии распространения. Таким образом, при распространении кодера под GPL фирма делает это себе в убыток. В то же время исходные коды не являются кодером, и поэтому не облагаются поборами со стороны IIS Fraunhofer. Откомпилированный кодер без нарушения закона может быть использован только компилировавшим его лицом, однако в интернете все равно можно найти откомпилированные версии кодера (здесь, например), так как во многих странах на лицензию IIS Fraunhofer смотрят "сквозь пальцы". Кроме того, многие фирмы используют исходные коды LAME для включения поддержки МР3 в свои продукты. Именно таким образом и появились на свет использованные библиотеки. Первая из них, по утверждению авторов, отличается от LAME v.3.5 только скоростью работы. Две оставшиеся являются не более чем прямым использованием более новых версий кода LAME в качестве plug-in к Easy CD-DA Extractor. Основной особенностью кода LAME является абсолютно новая созданная авторами проекта LAME психоакустическая модель Gpsycho. Похоже, что она оказалась более близкой к реальным особенностям человеческого слуха, чем модели конкурирующих коммерческих продуктов.

Библиотека GOGO в качестве параметров кодирования позволяет указать канальность сигнала, причем выбор осуществляется между STEREO, JOINT STEREO и MONO. Для любой канальности можно установить частоты дискретизации 44.1 и 22.05. Для 44.1 минимальный битрейт равен 112 Кбит/с, для 22.05 — 56 Кбит/с. Кроме того, для любого битрейта существует возможность включить использование VBR. В таком случае указанный битрейт становится минимальным допустимым при кодировании. Максимальным битрейтом для VBR всегда является 320 Кбит/с.

Возможности у библиотек LAME несколько иные. Они также позволяют указать канальность сигнала с аналогичным выбором между STEREO, JOINT STEREO и MONO. Однако независимо от частоты дискретизации битрейт может принимать весь спектр значений от 8 Кбит/с до 320 Кбит/с. Более того благодаря поддержке расширения стандарта MP3 MPEG Layer 2.5 проблемы с выбором частоты дискретизации отпадают — частоты дискретизации у кодированного и исходного сигнала будут совпадать. Для любой комбинации канальности и битрейта есть возможность выбрать режим работы кодера — максимально-качественный, стандартный и быстрый. Особенности различия качества этих режимов даны ниже в кратком описании Lame v.3.61.

Следует заметить одну неприятную черту LAME DLL v.3.7 — в нем есть баг, из-за которого в конец закодированного сигнала добавляется лишняя аудиоинформация. Это происходит из-за буферизации записи на диск кодированных данных, когда вместо последнего неполного блока информации, меньшего размера буфера, записывается целиком весь буфер. Однако это не влияет на качество кодирования самого сигнала, и поэтому проблем при проведении исследований не создает. Тем не менее, после проведения тестов для 256 Кбит/с было все-таки решено исключить этот кодер из исследований, так как пользователи вряд ли станут использовать кодер с такой явной ошибкой независимо от качества выдаваемого им результата.

Lame v.3.61

Этот кодер также принадлежит к семейству Lame, однако в отличие от трех предыдущих библиотек он является вполне самостоятельной консольной программой Win32. Для его компиляции использовалось Microsoft Development Studio v.5.0. Процесс компиляции прошел на удивление гладко, и успешный результат был достигнут с первой попытки.

Значимым отличием кодера от одноименных библиотек новых версий являются более гибкие возможности настройки и поддержка режима VBR. Некоторое недоумение вызвал специальный режим работы "-f". В документации этот режим указан как "дающий наихудшее качество кодирования при значительном увеличении скорости работы". В реальности скорость кодирования действительно увеличивалась примерно в 3 раза, однако качество зачастую превосходило (!!!) полученное в режиме работы "-h", в соответствии с документацией предназначенного для получения наилучшего качества кодирования при маленькой скорости работы. Аналогичная закономерность сохранилась и для последующих версий кода, использованных при создании библиотек LAME DLL v.3.7 и LAME DLL v.3.83.

Lame v.3.84 & Lame v.3.85

Эти кодеры представляют собой обновленные версии библиотек семейства Lame. Добавлена поддержка "заказного" битрейта VBR, также полностью переписан и сам код VBR кодирования. Рекомендованным декодером для Lame-кодированных файлов был объявлен mpeg123, который также был встроен в кодер. Специально проведенное отдельное тестирование показало, что отличие декодированного сигнала с помощью IIS Fraunhofer декодера от декодированного сигнала с помощью декодера mpeg123 не превышало 2 отсчета на сэмпл — максимальная разница СРС не превышает 2, а СРФС — 4, что не может внести существенных изменений в полученные результаты. Поэтому для декодирования Lame-кодированных файлов все же был использован декодер от IIS Fraunhofer.

IIS Fraunhofer Radium MP3 codec v.1.263

Представляет собой взломанный и отоптимизированный external кодек от IIS Fraunhofer: "Fraunhofer IIS MPEG Layer-3 Codec (Professional)". Его приятной особенностью является возможность выставить тип канальности стерео, а также его доступность для любых MCI-совместимых приложений Windows. Для кодирования файлов применялась "пропатченная" версия Audioactive Production Studio v.1.5.5b специально для использования не встроенного кодера, а Radium-кодека.

GOGO-no-coda v.2.35.1

Ни что иное, как FronEnd для gogo.dll, написанный непосредственно авторами GOGO. Прежде всего, эта версия кодера поражает количеством настроек. Самой интересной среди них является возможность включить стандартную ISO психоакустическую модель, что "может повысить качество для низких битрейтов". При проведении тестов использовались оба режима работы кодера, и ISO стабильно давала худшие результаты. Для VBR режима выбор психоакустической модели не влиял на результат — должно быть этот кодер не использует для VBR ISO модель, так как VBR в стандарт ISO не входит.

Сам кодер (основанный на Lame 3.5) является одним из лидеров по скорости кодирования, напрямую конкурируя с кодерами от Xing. Это достигается за счет использования при кодировании всех оптимизаций, которые только возможны: и MMX, и 3D Now!, и 3D Now! Exchanced/MMX Exchanced, и SIMD SSE, и даже оптимизация под многопроцессорные платформы. При этом качество кодирования остается необычайно высоким, лишь немногим "не дотягивая" до Lame.

L3Enc v.2.61 & MP3 Producer v.2.1 Professional & MP3Enc v.3.0

Эта линейка кодеров представляет собой коммерческие продукты создателя МР3 — IIS Fraunhofer, и, соответственно, основана на авторском коде. Единственным кодером, обладающим каким-либо графическим интерфейсом, является MP3 Producer. Однако интерфейс весьма неудобен — например, возможность установить параметры кодирования для большого количества файлов надежно "запрятана" — надо выделить список файлов для кодирования и, щелкнув на нем правой кнопкой мыши, в popup меню выбрать "Encoding properties". Для кодирования одного файла возможность установить битрейт и канальность имеется, однако установка конкретного типа канальности для стерео осуществляется автоматически в зависимости от битрейта. Аналогичный недостаток есть и у двух консольных кодеров. Максимальный битрейт выходного файла равен 256 Кбит/с, минимальный — 18 Кбит/с для стерео и 8 Кбит/с для моно.

В то время как возможности настройки параметров кодирования для L3Enc и MP3 Producer в основном совпадают, MP3Enc отличается большей гибкостью. Например, он позволяет установить 10 разных степеней сохранения качества (или скорости работы — кому как нравится), или указать, какие частотные фильтры надо предварительно применить к исходному сигналу. В целом набор его настроек совпадает с другим не менее мощным консольным кодером Lame v.3.61.

Liquifier Pro v.4.0.0

Еще один представитель MPEG2 AAC. Является, пожалуй, самым "коммерческим" из всех протестированных. Все созданные им файлы должны быть "опубликованы" для прослушивания, которое возможно только посредством специального Liquid Player либо Liquid Player Express. Единственное важное отличие Express версии плеера — возможность записи декодированного сигнала в WAV, что и было использовано при проведении тестов. Уже упоминавшиеся в описании Astrid/Quartex AACEnc функции LTP, TNS и PNS Liquifier не поддерживает. Не смотря на свою "коммерциализованность" этот формат не отличается хорошим качеством — искажения слышны даже на слух, причем их уровень практически не зависит от битрейта. Ну а уж полученные в ходе тестирования результаты не оставляют LQT никаких шансов в конкуренции с МР3. Тем не менее, LQT формат можно приводить в качестве примера прекрасной работы психоакустической модели, так как звучание файла не настолько ужасно, как полученные результаты.

Как было обнаружено в последствии, для Winamp был таки создан плагин проигрывания LQT файлов, найти который можно по обычному адресу.

Microsoft WMA V1

Этот формат кодирования аудиоинформации стал второй попыткой Microsoft штурмовать проблему сжатия звука. В 1995 году всеми любимая :) фирма занималась активным продвижением и пропагандой формата сжатия Microsoft ADPCM, в котором на сэмпл вместо 16 приходилось всего 4 бита. Кроме того, радикально менялся смысл хранимой информации — если для обычного PCM формата значение сэмпла равно уровню сигнала в данный момент времени, то для ADPCM оно стало равно смещению уровня сигнала относительно предыдущего момента времени. В рекламных проспектах говорилось, что искажения, вносимые таким способом кодирования абсолютно незаметны на слух, однако в реальности частоты выше 15 КГц зарезались на корню, что делало этот способ сжатия неприменимым для хранения звуковых данных CD качества.

Windows Media Audio был создан сравнительно недавно, и, по всей видимости, основан на методе кодирования, похожем на МР3. На слух этот формат выдает практически неотличимый от МР3 результат, что сделало WMA весьма сильным конкурентом. Поэтому было решено провести исследования с участием WMA, чтобы по результатам оценить, какой формат дает лучшее качество кодирования.

Существенным недостатком WMA стало отсутствие поддержки битрейта выше 160 Кбит/с и полная неопределенность относительно типа канальности. Однако в случае успеха этого формата Microsoft, несомненно, будет его улучшать, что вызовет мгновенную реакцию со стороны конкурирующего IIS Fraunhofer. Таким образом, появление WMA можно назвать началом эры жесткой конкуренции форматов сжатия звука, что неминуемо приведет к повышению планки качества кодирования.

Кодер WMA отличается от кодеров МР3 своей "единственностью". Устанавливается он наравне с другими системными кодерами Windows 9x в качестве еще одного формата сжатия звуков. После этого все MCI-основанные плееры начинают распознавать новый формат звуковых данных. Кроме того, для все тех же MCI-основанных программ появляется возможность конвертирования звуковых данных в WMA. Одной из таких программ является специальный plug-in к Winamp out_wma.dll. С его помощью и были созданы WMA файлы, принявшие участие в исследовании. Их декодирование производилось с помощью GoldWave, который умеет работать со встроенным в Windows декодером WMA V1. Полученный после декодирования сигнал проходил обработку, аналогичную декодированным МР3 сигналам.

Microsoft WMA V2

После успешной раскрутки первой версии своего формата WMA Microsoft решила выпустить его новую версию (V2), кодер которой закрыла от использования везде, кроме Microsoft Media Encoder v.4.1. Декодер WMA V2 остался открытым, чтобы сторонние фирмы могли применять это формат в своих приложениях для хранения и воспроизведения звука. Тем не менее, Microsoft преследует и пресекает в судебном порядке все попытки создать декодер WMA-WAV. Поэтому протестировать этот формат оказалось очень сложно. После долгих поисков были найдены две программы, позволяющие конвертировать WMA в WAV. Одна из них, Total Recorder, непосредственно конвертацией не занималась. Вместо этого она устанавливала в систему еще одно устройство воспроизведения и записи звука — Total Recorder Sound Driver — и записывала в WAV все digital звуки, выводимые через это устройство. Такой принцип позволяет конвертировать практически любой формат в WAV, однако при этом возникает возможность искажений звука, возникающих в результате работы проигрывателя по улучшению звучания. Поэтому предпочтение было отдано другой программе — Awave Studio v.7.0 — до которой Microsoft со своими судебными исками добраться еще не успела. Декодирование в этой программе происходит напрямую с использованием Microsoft WMA V2 codec, что гарантирует отсутствие искажений сигнала проигрывателем, а следовательно позволяет получить действительно точную копию WMA V2 кодированного сигнала.

Microsoft WMA V7

Эта версия формата вышла одновременно с Windows Millennium Edition, и была встроена в новую версию Windows Media Player. Однако убогость настроек параметров кодирования вынудила для тестирования скачать новую версию Microsoft Media Encoder — 7 beta. Ситуация с декодированием WMA V7 в WAV аналогична WMA V2, поэтому проблем уже не возникло — Awave Studio v.7.0 декодировал все в считанные секунды. Важным отличием WMA V7 от V2 и V1 можно назвать поддержку битрейта 192. С такими темпами в WMA V14 появится и 256 :) Само качество кодирования значительно ухудшилось по сравнению с первыми версиями формата. Кроме того, явно изменился алгоритм кодирования. Если первые две версии были основаны на алгоритме, похожем на МР3 — 2048 первых сэмпла в файле содержат "раскруточную" информацию, необходимую декодеру для корректного начала декодирования — то в V7 алгоритм радикально изменили, и сигнал начинается с 0 сэмпла. Однако в силу неизвестных причин 0 сэмплу декодированного сигнала соответствует ~40000 исходного — это означает, что теряется почти секунда в начале файла. Возможно, этот баг Microsoft исправит в полной версии Windows Media Encoder 7, однако пока пришлось тестировать то, что есть.

Ogg Vorbis 1.0 beta

Этот кодер создается как "заменитель всех старых форматов аудиосжатия". Изначально в его спецификации присутствует поддержка многих платформ (Linux, Windows и т.п.), стриминг (пакетная передача посредством сетей с поддержкой CRC и ECC контрольных сумм), абсолютная независимость от битрейта (оптимизация для битрейтов от 16 кБит/с до 128 Кбит/с, но никто не запрещает кодировать с 8 Кбит/с или 512 кБит/с), VBR, улучшение качества в будущих версиях даже при "замороженном" формате файла и т.п. Причем все это распространяется под GPL!

Пока что доступна только бета версия 1.0 (Win32 console, Linux x86; для BeOS недавно вышла новая бета), которая способна выдавать только VBR ~137 Кбит/с OGG файлы. Для декодирования предлагается плагин к Winamp версии 0.5, а также плагины для наиболее популярных проигрывателей под BeOS (CL-Amp и SoundPlay). На слух пока что OGG явно проигрывает даже 128 МР3, что и было подтверждено проведенными тестами. Тем не менее, этот проект представляет наибольший интерес для массового потребления — уже сейчас многие звукозаписывающие компании хотят перейти к продаже своей продукции через интернет, однако их останавливает "грабительская" лицензия IIS Fraunhofer на MP3. Если OGG "доведут до ума", эпохе безраздельного лидирования МР3 настанет конец.

PULSE MP3 Master v.2.0

Как создать МР3 кодер? Оказывается, очень просто! Взламываем ядро SCMPX, создаем красивый интерфейс с картинкой то ли южного моста какой-то материнской платы, то ли главного чипа какой-то видеоплаты, придумываем название и кодер готов! Именно так и поступил автор этого кодера Болдовский Сергей. Только вот взломали SCMPX не полностью — VBR не поддерживается… и явно немного подпортили алгоритм — результаты получаются немного хуже оригинального SCMPX. Но все равно программа является одним из самых красивых кодеров, принявших участие в тестировании. Эх, вот сделали бы Front-End для lame.dll с таким оформлением… Да, западным разработчикам есть чему поучиться у наших программистов-дизайнеров.

Real Audio v.3

Для интереса было решено протестировать и популярный формат для стриминга аудио в интернете — Real Audio. С помощью Real Audio Encoder v.3 был создан Real Audio V3 80 Кбит/с файл, который потом был конвертирован обратно в WAV с помощью уже упоминавшегося при описании Microsoft WMA V2 Total Recorder-а. Так как наиболее близкий из протестированных битрейтов МР3 — 128 Кбит/с, сравнение проводилось именно с ним. Полученные результаты однозначно показали, что конкурировать с МР3 Real Audio V3 не способен.

SCMPX v.1.5.1

Эта программа по сути дела является не кодером МР3, а целой миниатюрной студией для проигрывания, создания и обработки МР3 и WAV файлов. Интерфейс очень похож на Winamp, однако принцип работы абсолютно иной. Если Winamp является только "оболочкой" для различных plug-in плееров, то SCMPX является "монолитной" программой, код работы с МР3 у которой жестко "зашит" в основном исполняемом файле.

Программа является freeware, а встроенный в нее кодер и декодер МР3 написан автором полностью самостоятельно с использованием документации ISO по стандартам MPEG. Таким образом МР3, получаемый в результате работы этой программы не имеет никакого отношения к IIS Fraunhofer, и совместим только с аудиодекодерами MPEG1 и MPEG2. Однако, по "счастливому совпадению" МР3 от IIS Fraunhofer также совместим с этими аудиодекодерами. Получается, что SCMPX MP3 и IIS Fraunhofer MP3 совместимы между собой! Удивительно, не так ли? ;)

Однако вернемся к возможностям SCMPX. Итак, имеется поддержка битрейтов от 32 Кбит/с то 320 Кбит/с, возможность включения VBR, выбор типа канальности, метода сжатия MPEG Layer I, II или III. Существуют два режима кодирования — быстрый и стандартный. Скорость кодирования при использовании быстрого режима примерно в два раза больше стандартной. Для довершения картины стоит упомянуть фразу, присутствующую в окошке выбора параметров: "ЗАМЕТКА: Для завершения кодирования необходимо очень много времени!". Тем не менее, эта самая скорость раза в два больше GOGO DLL, который в свою очередь является одним из быстрейших исследованных кодеров. Для ценителей Intel стоит упомянуть поддержку MMX, но этим сейчас сложно кого-нибудь удивить.

Streambox Ripper v.2.009

Этот кодер выделяется очень красивым и весьма удобным интерфейсом. Кроме поддержки МР3 в нем есть и поддержка WMA. Также поражает количество читаемых им форматов файлов. Кроме стандартных WAV и MP3 он умеет считывать RM, RA, RMM и треки музыкальных CD. Кодер МР3 основан на коде IIS Fraunhofer L3Enc, поэтому возможности по выбору параметров кодирования полностью совпадают с L3Enc. Также как у MP3Enc и у Lame v.3.61, имеется возможность предварительно пропустить данные через частотный фильтр, реализованный в виде эквалайзера. Существует возможность обработки большого количества файлов сразу, причем из указанной директории кодер самостоятельно выберет все поддерживаемые им звуковые файлы и добросовестно перекодирует их в выбранный формат, производя (где необходимо) ресэмплинг, даунмикшинг и т.п. операции.

TwinVQ Encoder v.2.1.1 & Yamaha SoundVQ Encoder V.2.60b1e

Эти два кодера создают из WAV файл в формате VQF, разработчики которого утверждают, что даже 80 Кбит/с VQF более качественный, чем 128 Кбит/с МР3. Это и было решено проверить. Каждый из кодеров поддерживает три режима кодирования — быстрый, нормальный и качественный. Соответственно варьируются и время кодирования, и качество полученного файла. Максимальный битрейт, поддерживаемый форматом VQF — 96 Кбит/с. Как оказалось, VQF действительно обеспечивает качество кодирования на уровне худших из МР3 кодеров даже при 80 Кбит/с, а VQF 96 Кбит/с от TwinVQ Encoder в качественном режиме сравним даже с IIS Fraunhofer Radium MP3 codec v.1.263. Таким образом, формат VQF имеет огромный нереализованный потенциал — если бы чуть-чуть поднять битрейт…

Для декодирования VQF в WAV использовался Winamp, для которого тут можно скачатьплагин для открытия VQF.

XingMP3 Encoder v.1.5

Этот кодер занимает особое место среди всех протестированных — ведь именно в нем впервые была введена поддержка VBR MP3 файлов. Традиционно все кодеры от XingTech отличаются очень простым и незатейливым интерфейсом, основанном на понятиях "работы" и "профиля". Эта простота с одной стороны делает процесс кодирования файла доступным даже самому неискушенному пользователю, но с другой стороны полностью лишает продвинутого пользователя возможности настроить качество кодирования по своему вкусу. Все "продвинутые" опции в этом кодере собраны в пункте меню Edit -> Preferences -> Advanced Options. Наиболее интересной с точки зрения качества представляется возможность включить специальный режим работы с сохранением высоких частот. Некоторое недоумение вызвало отсутствие поддержки этим кодером кодирования в 256 Кбит/с МР3 файлы.

Если сравнивать этот кодер с XingMPEG Encoder v.2.20, то нельзя не заметить значительную прибавку качества кодирования, однако результат все равно сильно "не дотягивает" до лучших кодеров семейств IIS Fraunhofer и Lame.

XingMPEG Encoder v.2.20

Этот кодер, разработанный фирмой XingTech, отличается от всех остальных рекордно высокой скоростью кодирования. Код сжатия был разработан полностью XingTech, аналогично тому, как это было сделано в SCMPX. Интерфейс кодера направлен явно в сторону максимального упрощения жизни пользователю. Для этого вводится специальное понятие шаблона сжатия, представляющее собой просто определенную комбинацию параметров сжатия, обозначаемую собственным названием. Для кодирования необходимо создать новую "работу", выбрать шаблон для этой работы и наслаждаться быстро полученным результатом. Оборотной стороной простоты стала сложность в создании новых шаблонов — кодер обязательно сначала прогонит пользователя через длинный и бессмысленный wizard, и только после этого даст возможность одновременного редактирования всех параметров. Сложность заключается еще и в том, что кроме аудио это кодер умеет кодировать и видео, из-за чего приходится заполнять нулями все записи, относящиеся к MPEG видео-потоку. Поддерживаются битрейты от 8 Кбит/с до 384Кбит/с, три вида канальности (STEREO, DUAL CHANEL, JOINT STEREO), три частоты дискретизации 32000, 44100 и 48000, а также два вида MPEG1 Layer: II и III.

Результаты тестирования и выводы

Самые свежие результаты данного тестирования можно увидеть по этому адресу

 

Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.