Тестирование MPEG Layer 3 (MP3) кодеров


 

Предисловие

Пару слов о стиле изложения. Я хотел сделать материал, изложенный здесь, доступным для максимально большого круга читателей. Поэтому информации очень много, и, почти наверняка, ее больше, чем кому-либо нужно. Так, например, человеку не искушенному в технологиях звукозаписи не будет интересно смотреть на графики с чисто техническими характеристиками звука; а специалисту нет нужды читать, что такое децибелл. Таким образом, прошу вас, если вам какой-то раздел вам не интересен, просто пропустите его. Возможно, он будет интересен кому-то другому.

Прежде всего я хочу очертить круг вопросов, которые я хотел выяснить для себя, проведя это тестирование. Я решил собрать себе фонотеку и сохранить записи в формате MP3. В связи с этим у меня возникло 2 вопроса:

  1. Какой степени сжатия файлов достаточно для сохранения приемлемого уровня качества звука?
  2. Возможно ли сжать хоть чуть-чуть аудио-информацию при полном сохранении качества или с незначительным ухудшением качества?

То есть изначально я планировал сохранять аудио-информацию в двух копиях: одна со сжатием побольше (п. 1) — для ежедневного использования, другая с претензией на максимальное сохранение качества (п. 2) — для использования в будещем, скажем, для записи избранных песен на CD или для переведения фонотеки на новый, более прогрессивный и качественный формат.

Таким образом сразу можно выделить мои предпочтения к кодерам: скорость работы меня не интересовала вообще, степень сжатия (а, значит, и размер результирующего файла) меня интересовали по стольку по скольку. Главным критерием было качество.

Прошу вас, еще раз внимательно перечитайте предисловие и не задавайте мне вопросы типа "А почему ты не любишь Xing (как вариант: формат vqf, или еще что-нибудь)? Он ведь быстрый, и качество сносное." Меня не устраивает сносное качество при высокой скорости, компактности и прочем. Мне нужно максимально возможное качество передачи звука, даже ценой размера и скорости кодирования.

Описание метода тестирования

При помощи программы Digital Audio Copy for Win32 (WinDAC) 1.49 были созданы копии 2-х записей с CD в WAV-файлах. Записи были выбраны по следующим критериям: различимое на слух наличие высокочастотной составляющей, наличие нетривиальных стереоэффектов, наличие песен в моей небогатой фонотеке на CD. В итоге я выбрал Dog New Tricks от Garbage (из альбома Garbage) и Gone Away от Offpring (из альбома Americana).

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

Потом я создавал файлы формата MP3 при помощи нескольких кодеров. С помощью каждого кодера было создано несколько файлов — со всеми степенями сжатия меньше, чем 11:1 (128 kbps) включительно, которые поддерживает данный кодер.

После этого файлы формата MP3 были декодированы в файлы формата WAV и дальнейшая работа велась уже с этими WAV-файлами. Это сделано для того, чтоб ликвидировать искажения, вносимые проигрывателями MP3-файлов. Для декодирования MP3 использовался декодер l3dec V2.71 ISO/MPEG Audio Layer III Software Only Decoder от Fraunhofer-IIS — организации, которая первая разработала и начала распространять коммерческий программный кодер и декодер MP3. Популярность, которую приобрел данный кодер, а также то, что Fraunhofer-IIS продает свои продукты для самых серьезных приложений, оставляет надежду, что декодирование файлов происходит в строгом соответствии со стандартом ISO MPEG (многие проигрыватели MP3 пытаются как-то улучшить качество звучания и единственное что у них получается наверняка — это внести дополнительные искажения). В случае, если файл невозможно декодировать при помощи l3dec (некоторые файлы со сжатием 4:1, 320 kbps), использовался WinAmp 2.24, декодер которого построен также на основе кода от Fraunhofer-IIS.

Далее при помощи программы CoolEdit Pro 1.1 (в последнее время — версии 1.2) анализировались первые 30.000 секунд каждого файла и строилсиь амплитудно-частотные характеристики (АЧХ) отдельно для левого, правого каналов и условного центра (смесь левого и правого каналов в пропорции 1:1). Так уж этот CoolEdit устроен, но нормально эти АЧХ выглядят только в диапазоне от 350 Гц до 21.7 кГц. Для дальнейшего анализа АЧХ я написал программу на языке Object Pascal в среде Borland Delphi 3 - программа очень сильно привязана к локальной структуре каталогов и именам файлов у меня на винчестере, поэтому вам наверняка не удастся запустить ее сразу. Тем не менее — вот ее исходные тексты (20.5 Kb). Программа имеет на входе набор копий экрана (screenshot'ов) из CoolEdit'а с АЧХ, а на выходе создает набор более-менее оформленных рисунков с этими АЧХ и графики сравнения АЧХ оригинальной записи с CD с АЧХ файла MP3. Именно эти графики наиболее наглядно представляют информацию о качестве кодирования, именно они и представлены на этой странице. Впрочем, при помощи ссылок вы сможете получить доступ ко всем графикам и АЧХ.

Программа использует несложные формулы, которые описаны в соответствующем разделе.

Описание терминов

Термин Описание
Кодер (англ. coder, encoder) Программа и/или устройство, используемые для преобразования информации из одного вида в другой (кодирование). Мы рассматриваем программы, которые преобразуют аудио-данные из формата PCM WAV в ISO MPEG Audio Layer III (MP3).
Декодер (англ. decoder) По сути то же, что и кодер, но осуществляет преобразование в обратном направлении.
Кодек (англ. codec) Кодер и декодер в одном блоке.
Степень сжатия Отношение размера входного (некодированного) файла к размеру выходного (кодированного) файла. Например, степень сжатия 11:1 означает, что закодированный файл в 12 раз меньше оригинала.
Битрейт (англ. bitrate) Количество бит, отведенное для записи еденицы времени аудио-информации. Измеряют обычно в кб/с, то есть килобит в секунду (англ. kb/s или kbps).
Децибелл (англ. decibell, обознач. дБ, dB) Еденица измерения каких-либо величин. Очень часто используется в звукотехнике из-за особенностей восприятия звуков человеком. По опрелению значение величины в децибеллах равно двадцати логарифмам отношения величины в обычных единицах к некоей опорной величине в обычных единицах. В звукотехнике часто в качестве опроной величины берется максимальный уровень звука, таким образом если обозначить нашу величину как Ux, формула для определения этой же величины в децибеллах запишется как Значение величины в децибеллах получается отрицательным. Особенность человеческого слуха в том, что звук в -40 дБ кажется в 2 раза тише, чем звук в -20 дБ, хотя очевидно (см. формулу), что величина U40, описывающая этот звук (напр. мощность звукового потока), в 100 раз меньше величины U20. Получается что "ухо слышит в децибеллах".
Логарифмическая шкала Шкала, в которой величины, соответствующие соседним отметкам, различаются не на одинаковую величину (как это делается обычно — линейная шкала), а в одинаковое число раз. Понятно, что при этом логарифмы эти величин будут отличаться на одинаковые величины — откуда и пошло название. Особенность человеческого слуха хорошо демонстрируется музыкальным рядом: частота зауков, соответствующих одной и той же ноте из двух соседних октав, различаются в 2 раза. Таким образом для того, чтоб отметки, соответствующие октавам, отстояли на одном и том же расстоянии друг от друга на графике, шкала по частоте должна быть логарифмической и частоты, соответствующие отметкам, должны различаться в 2 раза. Если нанести еще отметки — посредине между уже имеющимися — то частота, соответствующая двум соседним отметкам будет отличаться в раз — именно так и сделано на приведенных ниже на этой странице графиках с логарифмической шкалой. (В графиках, добавленных при обновлении страницы, используется шкала вдвое мельче — значения соседних отметок различаются в 21/4 раза.)
АЧХ (амплитудно-частотная характеристика, англ. AFG, amptitude to frequency graph) Зависимость уровня сигнала от частоты сигнала. Из-за того, что уровень может измеряться и в единицах мощности звукового потока, и в еденицах электрического напряжения (по отношению к электрическому представлению этого же сигнала в схемах, скажем, усилителя), и много чего еще; а также учитывая особенности человеческого слуха (см. Децибелл), уровень сигнала часто измеряют в дБ и не конкретизируют, об уровне чего (громкости, напряжения) идет речь. АЧХ можно построить в виде графика.

Напомню, что стандарт ISO MPEG Audio Layer III предусматривает сжатие с потерями качества, причем потери тем больше, чем больше степень сжатия. Между степенями сжатия и битрейтами существует регламентируемая стандартом однозначная зависимость:

Степень сжатия Битрейт
11:1 128 кб/с
8:1 160 кб/с
7:1 192 кб/с
6:1 224 кб/с
5:1 256 кб/с
4:1 320 кб/с

(Таблица не полная, тут перечисленны только битрейты, которые я использовал в тестировании. Таблица составлена в предположении, что на вход подаются аудиоданные в формате PCM 16 бит, стерео, с частотой дискретизации 44 кГц.)

Использовавшиеся формулы

Как уже упоминалось, наиболее наглядно информация о качестве кодирования показана на графиках, где сравниваются АЧХ оригинального и закодированного файлов. Учитывая то, что CoolEdit строит АЧХ в дБ, нетривиально как сравнивать величины с АЧХ. Тем более, что результирующие графики я хотел тоже построить в дБ: отношение уровня сигнала закодированного файла к уровню сигнала оригинала.

Обозначим уровень сигнала как Ux. Нас интерисует величина

(1)

Эта же величина в дБ равна

(2)

Выполним простые математические преобразования в (2):

(3)

Считая, что

(4)

получим

(5)

Строго говоря, у нас нет никаких оснований считать, что (4) верно. Но, учитывая то, что в обе части равенства относятся к одной и той же записи (оригинальный вариант и закодированный), будем считать что при кодировании максимальный уровень сигнала не изменяется или почти не изменяется.

Таким образом мы получили удобную формулу (5) для анализа АЧХ и построения интересующих нас зависимостей. Формула (5) используется в программе для анализа АЧХ, которая упомянута выше.

Использовавшиеся кодеры

На сегодняшний день существует 3 основных источника, создавшие программы для кодирования музыки в MP3. Это уже упоминавшийся Fraunhofer-IIS, Xing Technologies и собственно ISO, которая приложила к стандарту ISO MPEG демонстрационный свободно распространяемый (но весьма медленный) код. Львиная доля созданных на сегодня кодеров использует код одной из этих организаций. Кодеры на основе кода от Fraunhofer-IIS работают достаточно быстро, весьма качественно, но не обеспечивают степень сжатия 4:1 (320 кб/с). Кодеры на основе кода от Xing быстры но некачственны. Кодеры на основе кода от ISO очень медленны (демонстрационный код совсем не оптимизирован), обеспечивают высокое качество и степени сжатия вплоть до 4:1. Итак:

AudioCatalyst by Xing Technology Corporation — version 2.1

Коммерческий кодер от Xing Technology Corp. Весьма оригинальная программа: представляет собой оригинальный код от Xing Tech в режиме "без высоких частот" и код от Fraunhofer'а оптимизированный по скорости (качество, соответственно упало, но все же лучше чистого Xing'а) в режиме "сохранения высоких частот". Все это — в одном блоке с программой для копирования музыки с CD - AudioGrabber. Работает очень быстро, но качество оставляет желать лучшего, хотя опять же: при "сохранении высоких частот" качество лучше оригинального Xing'а, хотя и до Fraunhofer'а не дотягивает. Домашняя страница — www.xingtech.com. Интерфейс программы полностью позаимствован у AudioGrabber'а.

BladeEnc : Blade's MP3 Encoder — version 0.82

Свободно распространяемый кодер, написанный Тордом Янсоном (Tord Jansson). Представляет собой оптимизированный код от ISO. Работает быстрее, чем "чистый" ISO-код, но в интернете есть сообщения о некорректной работе на степени сжатия 11:1 (128 кб/с). Домашняя страница — bladeenc.cjb.net. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек к Blade. Я использовал Bladebatch 2.97 SE Евгения Логинова, тоже свободно-распространяемая программа, домашняя страница на eal.da.ru.

LAME : LAME Ain't an Mp3 Encoder, version 3.24

Свободно распространяемый патч для исходного кода ISO, разрабатываемый группой энтузиастов. Представляет собой оптимизированный код от ISO. Распространяется в виде набора исходных файлов, которые являются дополнениями и исправлениями исходного кода ISO (Это сделано для обхода законов про лицензирование программ кодирования MP3 фирмой Fraunhofer. Ведь LAME это не программа, это набор исходников, значит ее нельзя запретить к свободному распространению :) Тем не менее в интернете легко найти уже компилированые варианты LAME под любую ОС.). Работает быстрее и качественее, чем "чистый" ISO-код. Домашняя страница — www.sulaco.org/mp3. Интерфейс программы только из командной строки.

Примечание: этот кодер тестировался в двух режимах: со включенной и с выключенной психоаккустической моделью (LAME -f). Это не 2 разных кодера, а всего лишь 2 режима работы одного кодера, хотя они и отличаются по результату.

MP3 Compressor v. 0.9f by MP3hC

Свободно распространяемый кодер на основе кода от Fraunhofer IIS, написанный неким MP3hC. Является дальнейшем развитием l3enc — а именно переписанная версия того же алгоритма. За счет оптимизации программа работает в 3 раза быстрее (со слов автора). Поддерживает только степень сжатия 11:1 (128 кб/с). Веб страница — www.chez.com/mp3hc/. Интерфейс программы очень удобный и имеет уникальную в своем роде возможность изменения приоритета выполнения программы кодирования непосредственно во время кодирования файлов.

MP3 Encoder : MPEG Layer-3 Encoder V3.1 Demo by Fraunhofer IIS-A

Свободно распространяемая демо-версия коммерческого кодера от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница — www.iis.fhg.de/audio/. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек. Я создавал обычные пакетные (batch, *.bat) файлы. Эта демо-версия кодирует только первые 30 секунд файла.

MP3 Producer : .mp3 Producer v. 2.1 (Build 47) by Fraunhofer-Gesellschaft — IIS

Коммерческий кодер от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше, но ушел от него очень и очень далеко. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница — www.iis.fhg.de/audio/. Интерфейс программы не самый лучший, но все же лучше, чем командная строка.

mpegEnc : mpeg Encoder v. 0.07 by SoloH

Свободно распространяемый кодер, написанный неким SoloH. Представляет собой оригинальный код от ISO. Работает медленно, но точно качественно. Домашняя страница — www.isafeelin.org/soloh/mpegEnc.html. Интерфейс программы весьма и весьма хорош.

Xing : XingMP3 Encoder 1.02 by Xing Technology Corporation

Коммерческий кодер от Xing Technology Corp. Представляет собой оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего. Домашняя страница — www.xingtech.com. Интерфейс программы весьма оригинален но не очень удобен.

Xing : XingMP3 Encoder 1.5 by Xing Technology Corporation

Новая версия коммерческого кодера от Xing Technology Corp. Оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего — за время с выхода предыдушей версии был введен режим "сохранения высоких частот", но и он не спасает положения, хоть все-таки высоких частот чуть-чуть добавляет. Домашняя страница — www.xingtech.com. Интерфейс программы совсем не измеился.

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

Поддержка битрейтов

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst да да да да да да
Blade Enc. да да да да да да
LAME да да да да да да
MP3 Compr. да нет нет нет нет нет
MP3 Enc. да да да да да нет
MP3 Producer да да да нет да нет
mpeg Enc. да да да да да да
XingMP3 Enc. 1.02 да нет да нет нет да
XingMP3 Enc. 1.5 да да да да да да

Поддержка стерео режимов

По стандарту ISO MPEG существует несколько способов кодирования стерео сигналов:

Dual chanel или
dual mono или
dual stereo
Левый и правый каналы кодируются раздельно как 2 разных записи, на каждый из каналов отводится ровно половина места в результирующем файле.
Stereo Левый и правый каналы кодируются раздельно как 2 разных записи, но кодер может выделить одному из каналов в данный момент времени больше места — это делается для того, чтоб избежать кодирования тишины в одном канале, если во втором есть сигнал. Оптимальный вариант.
Joint stereo Левый и правый каналы кодируются вместе, а в результирующий файл записывается информация о двух каналах в нетривиальной форме, например: левый канал и отличие правого канала от левого (на 2-ю часть отдается меньше места). Есть несколько стандартов представления информации joint stereo, но всех их объединяет существенный недостаток: плохая передача стерео эффектов, в частности портится фазовая информация.

Некоторые кодеры позволяют в явном виде выбирать режим кодирования стерео сигнала, другие выбирают автоматически. Следуюшая таблица иллюстрирует это:

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst JS S JS S JS S JS S JS S JS
Blade Enc. S S S S S S
LAME S JS S JS S JS S JS S JS S JS
MP3 Compr. JS - - - - -
MP3 Enc. JS S S S S -
MP3 Producer JS JS JS - S -
mpeg Enc. S DC S DC S DC S DC S DC S DC
XingMP3 Enc. 1.02 S - S - - S
XingMP3 Enc. 1.5 S JS S JS S JS S JS S JS S JS

Обозначения: JS — joint stereo, S — stereo, DC — dual chanel; если указано несколько значений, значит программа допускает выбор режима. Первым указан режим использовавшийся при тестировании.

Скорость кодирования

Как я уже говорил, для меня этот параметр не критичен: если программа работает качественно, то я согласен подождать. Тем не менее, для того, чтоб тестирование было более полным, я протестировал и производительность кодеров.

Для тестирования скорости кодирования я отрезал по 30.000 секунд от WAV-файлов с записью песен с CD. В таблице приведено время кодирования 30 секунд песни Garbage, ниже — Offspring'а. Все тесты проведены на моем домашнем компьютере (Pentium 60 МГц, ОЗУ 24 МБ, ОС Windows 98). Во время тестирования запущены только 2 программы — "Свойства: Дата и время" из "Панели управления" (там часы с секундомером) и кодер (на переднем плане). Если программа поддержавает выбор приоритета выполнения операции кодирования, то выбирался приоритет Normal.

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst 0:36
0:36
0:37
0:37
0:37
0:37
0:37
0:37
0:39
0:38
0:40
0:38
Blade Enc. 4:35
4:35
4:04
4:12
3:59
4:01
3:53
3:56
3:49
3:51
3:49
3:54
LAME 3:21
3:21
2:58
3:01
2:41
2:48
2:32
2:32
2:29
2:27
2:28
2:26
LAME -f 1:22
1:20
1:25
1:24
1:27
1:25
1:28
1:27
1:29
1:28
1:31
1:30
MP3 Compr. 2:09
2:01
- - - - -
MP3 Enc. 19:14
18:38
22:25
22:17
13:55
14:27
19:09
18:08
10:32
9:52
-
MP3 Producer 5:23
4:07
6:05
4:44
5:48
5:14
- 4:58
4:18
-
mpeg Enc. 24:16
23:58
19:43
20:42
17:18
17:32
15:36
15:33
14:59
14:54
14:14
14:39
XingMP3 Enc. 1.02 0:40
0:41
- 0:40
0:41
- - 0:44
0:44
XingMP3 Enc. 1.5 0:36
0:37
0:37
0:37
0:37
0:37
0:37
0:37
0:39
0:37
0:40
0:38

Ниже эти же данные приведены в более наглядной форме — на гистрограмме отложены средние по двум отрывкам песен времена кодирования.

Скорость работы AudioCatalyst 2.1 и XingMP3 Encoder 1.5 полностью совпадает.

Анализ АЧХ

Это, собственно, основной раздел, ради которого я и начал проводить тестирование. Он получился большим, поэтому я вынес его на отдельную страницу. Если вас интересуют только результаты тестирования и вам не интересно, откуда они взялись — вы можете пропустить раздел с анализом и читать сразу выводы.

Ссылки на все файлы в одном месте

Учитывая огромный объем информации на этой странице мне показалось, что такой раздел не будет лишним. Даже сам раздел со ссылкам оказался настолько большим, что я вынес его на отдельную страницу.

Прочие комментарии

Кроме качества воспроизведения АЧХ на качество звучания влияет еще много факторов, например, воспроизведение мелких деталей, передача фазовой информации (что Xing сделал из голоса с эхом в Gone Away — это надо слышать!!), так что я от комментариев воздержусь. Рассказывать, что "звучание того-то и того-то более сочно" я не буду, ибо считаю это попыткой описать неописуемое. Только в выводах я буду ссылаться на свои впечатления. А вам советую послушать самим и для себя решить самостоятельно.

Выводы

Еще раз замечу: я не претендую на истину в последней инстанции. Все, что написано в этом разделе — лишь мое мнение. Правда, мнение это базируется на аргументах, в данном случае — результатах тестирования. Тем не менее, на этой странице я представляю все результаты тестирования для того, чтоб вы могли на основании тех же данных составить свое мнение.

Как показала практика, даже такой грубый метода как сравнение АЧХ дает неплохие результаты — все что явно слышно на слух (напр. мало высоких, звон ISO-кодеров) отлично отражено на графиках. Так что можно считать, что при помощи графиков можно сравнивать качество кодирования даже там, где на слух разницы не слышно. Против аргумента "это же кодирование с потерями — какая к черту точная передача сигнала!" я могу возразить следующее — в ходе измерений делалось усреднение по достаточно большому отрывку (30 сек), который содержал и тишину (начало песни) и громкую музыку с заполнением всего частотного диапазона. По-моему такое усреднение по времени и определило очень хорошо согласующиеся с оценкой "на слух" результаты.

AudioCatalyst

Скорость превыше всего. Страдает, естественно, качество. Тем не менее если сравнивать с XingMP3 Encoder'ом — то качество заметно лучше (в режиме "сохранение высоких частот", когда работает код Fraunhofer'а). На высоких битрейтах высокие частоты не так однозначно вырезаются — и понятно почему. Качество при всех битрейтах на слух ощутимо хуже всех других кодеров (даже от того же Fraunhofer'а - ведь код явно был оптимизирован по скорости с потерями качества), кроме, естественно, XingMP3 Encoder'а. Так, качество при 320 кб/с сравнимо с 192 кб/с ISO-кодеров. Кстати, за счет использования стороннего кода нет старых ошибок Xing'а — страшных искажений фазовой информации. Кстати, даже новый XingMP3 грешит этим. Скорость стала еще больше по сравнению, опять же, с XingMP3 Encoder'ом 1.02 и равна скорости XingMP3 Encoder'а 1.5. Кодер явно расчитан на тех, кто хочет быстро получить результат, пусть даже не самый лучший.

Blade Encoder

Быстрый кодер. Основан на коде от ISO, отсюда его свойства: высокое качество на высоких битрейтах и характерный звон на низких (128 кб/с). Кроме того Blade содержит ошибку, которая дает себя знать хорошо слышимыми искажениями на 128 кб/с. Устранен основной недостаток кода ISO — медлительность. Blade работает в 3 — 6 раз быстрее, чем mpeg Encoder, который построен на оригинальном неоптимизированном ISO-коде. Качество кодирования уступает mpeg Encoder'у, однако разница мизерна (на слух не воспринемается) и если учесть разницу в скорости работы, то Blade становится очень привлекательным выбором для битрейтов выше 192 кб/с.

LAME

Очень быстрый кодер. Основан на коде от ISO, соответственно его свойства: высокое качество на высоких битрейтах и характерный звон на низких (128 кб/с). Естественно, нет ошибки Blade, которая дает себя знать на 128 кб/с. Устранен основной недостаток кода ISO — медлительность. Работает в 1,5 раза быстрее Blade (а в режиме -f — в 2.5 раза!), а качество выше, чем у mpeg Encoder'а, который построен на оригинальном неоптимизированном ISO-коде. (Режиме -f отключает психоаккустические фильтры, что делает звук чище на высоких битрейтах, но существенно ухудшает на низких.) Первый кодер, который при отличном качестве звука сравним с Xing'ом по скорости. Однозначно лучший выбор для высоких битрейтов — 224 кб/с и выше.

MP3 Compressor

Быстрый кодер. Основан на коде от Fraunhofer-IIS, отсюда его свойства: высокое качество на 128 кб/с. Кодер работает в 9 раз быстрее, чем старенький MP3 Encoder и в 2 раза быстрее нового MP3 Producer'а. Примерно на столько же MP3 Compressor быстрее, чем Blade. Качество кодирования слегка уступает MP3 Producer'у, иногда проявляется хорошо слышимые огрехи, которых у Producer'а нет. Если учесть его скорость кодирования — хороший выбор для 128 кб/с.

MP3 Encoder

Продолжение старой линии кодеров от Fraunhofer-IIS l3enc. Работает медленно (в 2-4 раза медленнее, чем новый MP3 Producer того же Fraunhofer'а), кодирует не очень качественно, интерфейс неудобный. Динозавр, вымирающий вид. К использованию крайне не рекомендуется.

MP3 Producer

Новая линия кодеров от Fraunhofer-IIS. Работает быстро (в 2-4 раза быстрее, чем старый MP3 Encoder того же Fraunhofer'а; сравним по скорости с Blade), кодирует очень качественно на низких битрейтах (128 кб/с и, вероятно, ниже). Вот она, известная психоаккустическая модель Fraunhofer'а! На высоких битрейтах (от 160 кб/с и выше) явно уступает кодерам на основе ISO-кода. Рекомендуется для низких битрейтов (160 кб/с и ниже).

mpeg Encoder

Основан на оригинальном неоптимизированном коде от ISO, отсюда его свойства: высокое качество на высоких битрейтах и мало высоких частот на низких (128 кб/с). Работает в 3 — 6 раз медленнее, чем Blade, который построен на оптимизированом ISO-коде. Качество кодирования отличное на высоких битрейтах. Для тех, кому нужно качество без компромиссов не смотря на скорость работы.

XingMP3 Encoder 1.02

Скорость превыше всего. Страдает, естественно, качество. Все высокие частоты нещадно режутся. Конечно, качество при 320 кб/с получше чем при 128 кб/с, но даже тогда оно еле дотягивает до 192 кб/с ISO-кодеров. Сравнивать скорость с другими кодерами бесполезно — тут Xing вне конкуренции. Хотя… Скорость LAME в режиме -f всего вдвое меньше. Кодер явно расчитан на тех, кто хочет быстро получить результат, пусть даже плохой.

XingMP3 Encoder 1.5

Нечего сказать. За все время с момента выхода предыдущей версии практически никаких изменений. Вот только скорость работы еще больше, да добавлен режим "сохранения высоких частот", который сохраняет высоких частот больше, но совсем не на много. До уровня качества любого другого кодера Xing'у как до неба на четвереньках (украинская пословица :).

Другие кодеры

Из известных кодеров я могу назвать еще Audioactive. Распространена также так называемая Radium-optimized версия MP3 Producer'а. Audioactive содержит неизмененный блок кодирования то Fraunhofer-IIS, поэтому от него неразумно ожидать характеристики, отличные от MP3 Producer'а. Более того, я сам это проверил и убедился в идентичности результатов. Правда, у Audioactive есть быстрый режим, когда он работает почти вдвое быстрее, но качество, естественно, ухудшается. Именно поэтому я не тестировал этот кодер. Механизм VBR я тоже не тестировал по идеологическим соображениям — переменный битрейт призван уменьшить размер файла при сохранении почти такого же качества. Очевидно, что если битрейт не уменьшать, то качество будет выше, чем с VBR. Radium-optimized MP3 Producer работает немного быстрее (где-то на 20%), чем оригинальный MP3 Producer, но в интернете есть сообщения об ошибках, которые приводят к снижению качества кодирования. Так что я бы ради этих 20% скорости не рисковал качеством.

Вообще, на сегодня практически все кодеры основаны на коде либо от ISO, либо от Fraunhofer'а, либо от Xing'а. Соответственно и свойства этих программ наследуются вместе с кодом.

128 кб/с (11:1)

Самый популярный на сегодня битрейт. Степень сжатия 11:1 — это, конечно, аргумент, особенно для Интернета, где каждый килобайт на счету. Используя этот битрейт можете забыть, что такое "высокие частоты". Это не значит, что их нет совсем. Они оставлены в таком объеме, что музыка звучит как в дешевом магнитофоне — "штоб свистело и бумкало". Кстати, тот, кто сказал что при этом битрейте сохраняется качество звучания CD очевидно имел в виду, что на вашем компьютере с маленькими-плохонькими колоночками (а то и вообще встроенными колонками, например в клавиатуру) вы не почуствуете разницы в качестве звучания CD и файла MP3 с 128 кб/с. (Мысль это не моя, то, по-моему, совершенно точно описывающая положение вещей.)

На 128 кб/с лучше себя ведут кодеры от Fraunhofer-IIS — они оставляют больше высоких частот, чем кодеры ISO и, тем более, Xing. Но чуда не будет: больше это не означает "воспроизводит идеально". Качество все равно оставляет желать много лучшего. Все ISO кодеры как один добавляют характерный звон, наличие которого связано с обобенностью психоаккустических фильтров ISO — если фильтр отключить (LAME -f), то звон исчезнет (хотя качество останется существенно хуже кодеров от Fraunhofer). На этом битрейте просто отлично себя показал MP3 Producer, специально оптимизированный под низкие битрейты.

160 кб/с (8:1)

Лучше, чем 128 кб/с. Но все равно слышен существенный недостаток высоких частот. На этом битрейте себя лучше проявили кодеры от Fraunhofer — ISO кодеры продолжают "звенеть", хотя и меньше. Выбирать приходится между кодерами от Fraunhofer, поэтому выбор — более новый MP3 Producer.

192 кб/с (7:1)

Все еще ощущается недостаток высоких частот. Кодеры от от Fraunhofer убирают высоких больше, чем кодеры ISO, которые все еще слегка "звенят". На этом битрейте кодеры от ISO и от Fraunhofer практически на равных — и у тех грехи, и у тех. Выбор за вами.

224 кб/с (6:1)

Высокие частоты передаются в почти полном объеме, но мелкие детали, как то: стерео эффекты или небольшие перепады громкости, на высоких частотах теряются. MP3 Producer 224 кб/с не умеет, а старый MP3 Encoder существенно хуже по качеству, чем кодеры ISO. А среди кодеров от ISO, качество которых почти одинаково, есть явный лидер — LAME (особенно в режиме -f, когда качество его звучания, судя по графикам — на слух этого не слышно,- чуть-чуть лучше других кодеров).

256 кб/с (5:1)

Вот тут я совсем перестаю ощущать разницу между записью с CD и MP3-файлами. Кроме MP3 Producer'а — он съедает больше высоких частот и его MP3 все таки отличается от CD. Все ISO-кодеры обеспечивают на слух одинаковое качество, по графикам места распределились так: LAME -f, LAME, mpeg Encoder, Blade.

320 кб/с (4:1)

Вот этого я уже не понимаю. Это что, попытка быть святее Папы Римского? Ну нет разницы на слух между ISO 256 кб/с и CD. Зачем же 320? В расчете на тех, кто эту разницу услышит? Так эти наверняка предпочтут все таки CD, который, как традиционно считается, обеспечивает качество Hi-Fi. Ведь даже 320 кб/с дает завал в -6 дБ на уровне в 21 кГц, а -6 дБ — это легко воспринимаемая на слух разница уровней. Правда, далеко не все слышат звуки с частотой в 21 кГц (ваш покорный слуга уже еле-еле различает тон в 19 кГц). Но во-первых, принято считать, что даже если человек столь высокочастотный звук и не слышит, он его все равно как-то вопринимает. А во-вторых, тот, кому необходимо качество Hi-Fi, либо слышит эти 21 кГц, либо из принципа не согласится на -6 дБ. Кстати, Fraunhofer, очевидно, со мной солидарна и потому 320 кб/с не поддерживает. Так что если вы выбрали 320 кб/с — вы хотете качества любой ценой. И тут ISO-кодеры обеспечивают на слух одинаковое качество, судя по графикам места распределились так: LAME -f, LAME, mpeg Encoder, Blade.

Ответы на вопросы

В начале этой статьи я сформулировал 2 вопроса, которые я поставил перед собой перед началом тестирования. Теперь, после окончания тестов, врем на них ответить.

Вопрос: Какой степени сжатия файлов достаточно для сохранения приемлемого уровня качества звука?
Ответ: Зависит, конечно, от того, что называть приемлемым уровнем. Если подразумевать под этим отсутствие слышимых на слух искажений — то 256 кб/с, ISO кодер. Если достаточно качества средней руки магнитофона, то достаточно 224 кб/с, может даже 192 кб/с. Ну а если колонки вашего компьютера воспроизводят CD как MP3 файл с 128 кб/с, то 128 кб/с — как раз для вас. Мой личный выбор — 256 кб/с, LAME -f. (Специальная благодарность Михаилу Федотову, который обратил мое внимание на этот действительно отличный кодер.)
Вопрос: Возможно ли сжать хоть чуть-чуть аудио-информацию при полном сохранении качества или с незначительным ухудшением качества?
Ответ: Чуть-чуть сжать всегда можно. Взять WAV-файл и сжать, скажем, ZIP-ом или RAR-ом. Как показывает практика при таком сжатии объем аудио-данных можно сократить на 30 — 40%. Теперь о сжатии с потерями, а именно — MP3. Когда речь идет о сохранении качества, даже я против потери 6 дБ на 21 кГц. Идеология Hi-Fi не позволяет (кот не знает: это сокращение от High Fidelity — высокая точность). Есть CD, который теоретически может давать сигнал/шум в 96 дБ. Есть сжатие MP3, которое запись с CD однозначно испортит. Так что на современном этапе для высококачественного хранения аудио информации MP3 использовать нельзя. Как минимум CD с его форматом PCM, 16 бит, стерео, частота дискретизации — 44100 Гц. Как максимум — … Тут максимума по-моему нет :) Кому нужно высокое качество, тот будет использовать PCM и с 32 бит на отсчет (больше, в общем, смысла нет), и больше двух каналов, и бóльшие частоты дисретизации (новый стандарт DVD-audio предусматривает не то 96, не то 128 кГц).

Ссылки

bladeenc.cjb.net Страница автора Blade Encoder'а.
eal.da.ru Страница автора BladeBatch'а.
www.sulaco.org/mp3 Страница проекта LAME.
hwww.chez.com/mp3hc/ Страница автора MP3 Compressor'а.
www.iis.fhg.de/audio/ Страница Fraunhofer-Gesellschaft — IIS.
www.xingtech.com Страница Xing Technology Corporation.
move.to/mp3soft Страница MP3 Soft — отличный сборник софта для работы со звуком — кодеры, декодеры, проигрыватели, редакторы, грабберы, прочее.
www.download.com Download.com — заходите и давите на ссылку "MP3" — получите неплохой набор ссылок на софт для работы с MP3.
"Страница MP3" Михаила Федотова Много информации об MP3 вообще, о кодерах, декодерах, проигрывателях, тестированиях, много ссылок, несколько переводов статей с английского. Все по-русски. Настоятельно рекомендую к ознакомлению. Для энтузиастов — MP3 Forum.

М-да, негусто со ссылками. Ну ничего, меньше времени потратите лазаючи по ним. А, если честно, я не видел в Сети обзоров или тестирований, посвященный именно качеству кодирования. Если найдете — пишите мне: будет интересно взглянуть.

Распространение ссылки на эту страницу приветствуется, особенно если вы сообщите о ней людям, держащим сайты по MP3.

 

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

Тестирование MPEG Layer 3 (MP3) кодеров

Тестирование MPEG Layer 3 (MP3) кодеров

 

Предисловие

Пару слов о стиле изложения. Я хотел сделать материал, изложенный здесь, доступным для максимально большого круга читателей. Поэтому информации очень много, и, почти наверняка, ее больше, чем кому-либо нужно. Так, например, человеку не искушенному в технологиях звукозаписи не будет интересно смотреть на графики с чисто техническими характеристиками звука; а специалисту нет нужды читать, что такое децибелл. Таким образом, прошу вас, если вам какой-то раздел вам не интересен, просто пропустите его. Возможно, он будет интересен кому-то другому.

Прежде всего я хочу очертить круг вопросов, которые я хотел выяснить для себя, проведя это тестирование. Я решил собрать себе фонотеку и сохранить записи в формате MP3. В связи с этим у меня возникло 2 вопроса:

  1. Какой степени сжатия файлов достаточно для сохранения приемлемого уровня качества звука?
  2. Возможно ли сжать хоть чуть-чуть аудио-информацию при полном сохранении качества или с незначительным ухудшением качества?

То есть изначально я планировал сохранять аудио-информацию в двух копиях: одна со сжатием побольше (п. 1) — для ежедневного использования, другая с претензией на максимальное сохранение качества (п. 2) — для использования в будещем, скажем, для записи избранных песен на CD или для переведения фонотеки на новый, более прогрессивный и качественный формат.

Таким образом сразу можно выделить мои предпочтения к кодерам: скорость работы меня не интересовала вообще, степень сжатия (а, значит, и размер результирующего файла) меня интересовали по стольку по скольку. Главным критерием было качество.

Прошу вас, еще раз внимательно перечитайте предисловие и не задавайте мне вопросы типа "А почему ты не любишь Xing (как вариант: формат vqf, или еще что-нибудь)? Он ведь быстрый, и качество сносное." Меня не устраивает сносное качество при высокой скорости, компактности и прочем. Мне нужно максимально возможное качество передачи звука, даже ценой размера и скорости кодирования.

Описание метода тестирования

При помощи программы Digital Audio Copy for Win32 (WinDAC) 1.49 были созданы копии 2-х записей с CD в WAV-файлах. Записи были выбраны по следующим критериям: различимое на слух наличие высокочастотной составляющей, наличие нетривиальных стереоэффектов, наличие песен в моей небогатой фонотеке на CD. В итоге я выбрал Dog New Tricks от Garbage (из альбома Garbage) и Gone Away от Offpring (из альбома Americana).

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

Потом я создавал файлы формата MP3 при помощи нескольких кодеров. С помощью каждого кодера было создано несколько файлов — со всеми степенями сжатия меньше, чем 11:1 (128 kbps) включительно, которые поддерживает данный кодер.

После этого файлы формата MP3 были декодированы в файлы формата WAV и дальнейшая работа велась уже с этими WAV-файлами. Это сделано для того, чтоб ликвидировать искажения, вносимые проигрывателями MP3-файлов. Для декодирования MP3 использовался декодер l3dec V2.71 ISO/MPEG Audio Layer III Software Only Decoder от Fraunhofer-IIS — организации, которая первая разработала и начала распространять коммерческий программный кодер и декодер MP3. Популярность, которую приобрел данный кодер, а также то, что Fraunhofer-IIS продает свои продукты для самых серьезных приложений, оставляет надежду, что декодирование файлов происходит в строгом соответствии со стандартом ISO MPEG (многие проигрыватели MP3 пытаются как-то улучшить качество звучания и единственное что у них получается наверняка — это внести дополнительные искажения). В случае, если файл невозможно декодировать при помощи l3dec (некоторые файлы со сжатием 4:1, 320 kbps), использовался WinAmp 2.24, декодер которого построен также на основе кода от Fraunhofer-IIS.

Далее при помощи программы CoolEdit Pro 1.1 (в последнее время — версии 1.2) анализировались первые 30.000 секунд каждого файла и строилсиь амплитудно-частотные характеристики (АЧХ) отдельно для левого, правого каналов и условного центра (смесь левого и правого каналов в пропорции 1:1). Так уж этот CoolEdit устроен, но нормально эти АЧХ выглядят только в диапазоне от 350 Гц до 21.7 кГц. Для дальнейшего анализа АЧХ я написал программу на языке Object Pascal в среде Borland Delphi 3 - программа очень сильно привязана к локальной структуре каталогов и именам файлов у меня на винчестере, поэтому вам наверняка не удастся запустить ее сразу. Тем не менее — вот ее исходные тексты (20.5 Kb). Программа имеет на входе набор копий экрана (screenshot'ов) из CoolEdit'а с АЧХ, а на выходе создает набор более-менее оформленных рисунков с этими АЧХ и графики сравнения АЧХ оригинальной записи с CD с АЧХ файла MP3. Именно эти графики наиболее наглядно представляют информацию о качестве кодирования, именно они и представлены на этой странице. Впрочем, при помощи ссылок вы сможете получить доступ ко всем графикам и АЧХ.

Программа использует несложные формулы, которые описаны в соответствующем разделе.

Описание терминов

Термин Описание
Кодер (англ. coder, encoder) Программа и/или устройство, используемые для преобразования информации из одного вида в другой (кодирование). Мы рассматриваем программы, которые преобразуют аудио-данные из формата PCM WAV в ISO MPEG Audio Layer III (MP3).
Декодер (англ. decoder) По сути то же, что и кодер, но осуществляет преобразование в обратном направлении.
Кодек (англ. codec) Кодер и декодер в одном блоке.
Степень сжатия Отношение размера входного (некодированного) файла к размеру выходного (кодированного) файла. Например, степень сжатия 11:1 означает, что закодированный файл в 12 раз меньше оригинала.
Битрейт (англ. bitrate) Количество бит, отведенное для записи еденицы времени аудио-информации. Измеряют обычно в кб/с, то есть килобит в секунду (англ. kb/s или kbps).
Децибелл (англ. decibell, обознач. дБ, dB) Еденица измерения каких-либо величин. Очень часто используется в звукотехнике из-за особенностей восприятия звуков человеком. По опрелению значение величины в децибеллах равно двадцати логарифмам отношения величины в обычных единицах к некоей опорной величине в обычных единицах. В звукотехнике часто в качестве опроной величины берется максимальный уровень звука, таким образом если обозначить нашу величину как Ux, формула для определения этой же величины в децибеллах запишется как Значение величины в децибеллах получается отрицательным. Особенность человеческого слуха в том, что звук в -40 дБ кажется в 2 раза тише, чем звук в -20 дБ, хотя очевидно (см. формулу), что величина U40, описывающая этот звук (напр. мощность звукового потока), в 100 раз меньше величины U20. Получается что "ухо слышит в децибеллах".
Логарифмическая шкала Шкала, в которой величины, соответствующие соседним отметкам, различаются не на одинаковую величину (как это делается обычно — линейная шкала), а в одинаковое число раз. Понятно, что при этом логарифмы эти величин будут отличаться на одинаковые величины — откуда и пошло название. Особенность человеческого слуха хорошо демонстрируется музыкальным рядом: частота зауков, соответствующих одной и той же ноте из двух соседних октав, различаются в 2 раза. Таким образом для того, чтоб отметки, соответствующие октавам, отстояли на одном и том же расстоянии друг от друга на графике, шкала по частоте должна быть логарифмической и частоты, соответствующие отметкам, должны различаться в 2 раза. Если нанести еще отметки — посредине между уже имеющимися — то частота, соответствующая двум соседним отметкам будет отличаться в раз — именно так и сделано на приведенных ниже на этой странице графиках с логарифмической шкалой. (В графиках, добавленных при обновлении страницы, используется шкала вдвое мельче — значения соседних отметок различаются в 21/4 раза.)
АЧХ (амплитудно-частотная характеристика, англ. AFG, amptitude to frequency graph) Зависимость уровня сигнала от частоты сигнала. Из-за того, что уровень может измеряться и в единицах мощности звукового потока, и в еденицах электрического напряжения (по отношению к электрическому представлению этого же сигнала в схемах, скажем, усилителя), и много чего еще; а также учитывая особенности человеческого слуха (см. Децибелл), уровень сигнала часто измеряют в дБ и не конкретизируют, об уровне чего (громкости, напряжения) идет речь. АЧХ можно построить в виде графика.

Напомню, что стандарт ISO MPEG Audio Layer III предусматривает сжатие с потерями качества, причем потери тем больше, чем больше степень сжатия. Между степенями сжатия и битрейтами существует регламентируемая стандартом однозначная зависимость:

Степень сжатия Битрейт
11:1 128 кб/с
8:1 160 кб/с
7:1 192 кб/с
6:1 224 кб/с
5:1 256 кб/с
4:1 320 кб/с

(Таблица не полная, тут перечисленны только битрейты, которые я использовал в тестировании. Таблица составлена в предположении, что на вход подаются аудиоданные в формате PCM 16 бит, стерео, с частотой дискретизации 44 кГц.)

Использовавшиеся формулы

Как уже упоминалось, наиболее наглядно информация о качестве кодирования показана на графиках, где сравниваются АЧХ оригинального и закодированного файлов. Учитывая то, что CoolEdit строит АЧХ в дБ, нетривиально как сравнивать величины с АЧХ. Тем более, что результирующие графики я хотел тоже построить в дБ: отношение уровня сигнала закодированного файла к уровню сигнала оригинала.

Обозначим уровень сигнала как Ux. Нас интерисует величина

(1)

Эта же величина в дБ равна

(2)

Выполним простые математические преобразования в (2):

(3)

Считая, что

(4)

получим

(5)

Строго говоря, у нас нет никаких оснований считать, что (4) верно. Но, учитывая то, что в обе части равенства относятся к одной и той же записи (оригинальный вариант и закодированный), будем считать что при кодировании максимальный уровень сигнала не изменяется или почти не изменяется.

Таким образом мы получили удобную формулу (5) для анализа АЧХ и построения интересующих нас зависимостей. Формула (5) используется в программе для анализа АЧХ, которая упомянута выше.

Использовавшиеся кодеры

На сегодняшний день существует 3 основных источника, создавшие программы для кодирования музыки в MP3. Это уже упоминавшийся Fraunhofer-IIS, Xing Technologies и собственно ISO, которая приложила к стандарту ISO MPEG демонстрационный свободно распространяемый (но весьма медленный) код. Львиная доля созданных на сегодня кодеров использует код одной из этих организаций. Кодеры на основе кода от Fraunhofer-IIS работают достаточно быстро, весьма качественно, но не обеспечивают степень сжатия 4:1 (320 кб/с). Кодеры на основе кода от Xing быстры но некачственны. Кодеры на основе кода от ISO очень медленны (демонстрационный код совсем не оптимизирован), обеспечивают высокое качество и степени сжатия вплоть до 4:1. Итак:

AudioCatalyst by Xing Technology Corporation — version 2.1

Коммерческий кодер от Xing Technology Corp. Весьма оригинальная программа: представляет собой оригинальный код от Xing Tech в режиме "без высоких частот" и код от Fraunhofer'а оптимизированный по скорости (качество, соответственно упало, но все же лучше чистого Xing'а) в режиме "сохранения высоких частот". Все это — в одном блоке с программой для копирования музыки с CD - AudioGrabber. Работает очень быстро, но качество оставляет желать лучшего, хотя опять же: при "сохранении высоких частот" качество лучше оригинального Xing'а, хотя и до Fraunhofer'а не дотягивает. Домашняя страница — www.xingtech.com. Интерфейс программы полностью позаимствован у AudioGrabber'а.

BladeEnc : Blade's MP3 Encoder — version 0.82

Свободно распространяемый кодер, написанный Тордом Янсоном (Tord Jansson). Представляет собой оптимизированный код от ISO. Работает быстрее, чем "чистый" ISO-код, но в интернете есть сообщения о некорректной работе на степени сжатия 11:1 (128 кб/с). Домашняя страница — bladeenc.cjb.net. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек к Blade. Я использовал Bladebatch 2.97 SE Евгения Логинова, тоже свободно-распространяемая программа, домашняя страница на eal.da.ru.

LAME : LAME Ain't an Mp3 Encoder, version 3.24

Свободно распространяемый патч для исходного кода ISO, разрабатываемый группой энтузиастов. Представляет собой оптимизированный код от ISO. Распространяется в виде набора исходных файлов, которые являются дополнениями и исправлениями исходного кода ISO (Это сделано для обхода законов про лицензирование программ кодирования MP3 фирмой Fraunhofer. Ведь LAME это не программа, это набор исходников, значит ее нельзя запретить к свободному распространению :) Тем не менее в интернете легко найти уже компилированые варианты LAME под любую ОС.). Работает быстрее и качественее, чем "чистый" ISO-код. Домашняя страница — www.sulaco.org/mp3. Интерфейс программы только из командной строки.

Примечание: этот кодер тестировался в двух режимах: со включенной и с выключенной психоаккустической моделью (LAME -f). Это не 2 разных кодера, а всего лишь 2 режима работы одного кодера, хотя они и отличаются по результату.

MP3 Compressor v. 0.9f by MP3hC

Свободно распространяемый кодер на основе кода от Fraunhofer IIS, написанный неким MP3hC. Является дальнейшем развитием l3enc — а именно переписанная версия того же алгоритма. За счет оптимизации программа работает в 3 раза быстрее (со слов автора). Поддерживает только степень сжатия 11:1 (128 кб/с). Веб страница — www.chez.com/mp3hc/. Интерфейс программы очень удобный и имеет уникальную в своем роде возможность изменения приоритета выполнения программы кодирования непосредственно во время кодирования файлов.

MP3 Encoder : MPEG Layer-3 Encoder V3.1 Demo by Fraunhofer IIS-A

Свободно распространяемая демо-версия коммерческого кодера от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница — www.iis.fhg.de/audio/. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек. Я создавал обычные пакетные (batch, *.bat) файлы. Эта демо-версия кодирует только первые 30 секунд файла.

MP3 Producer : .mp3 Producer v. 2.1 (Build 47) by Fraunhofer-Gesellschaft — IIS

Коммерческий кодер от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше, но ушел от него очень и очень далеко. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница — www.iis.fhg.de/audio/. Интерфейс программы не самый лучший, но все же лучше, чем командная строка.

mpegEnc : mpeg Encoder v. 0.07 by SoloH

Свободно распространяемый кодер, написанный неким SoloH. Представляет собой оригинальный код от ISO. Работает медленно, но точно качественно. Домашняя страница — www.isafeelin.org/soloh/mpegEnc.html. Интерфейс программы весьма и весьма хорош.

Xing : XingMP3 Encoder 1.02 by Xing Technology Corporation

Коммерческий кодер от Xing Technology Corp. Представляет собой оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего. Домашняя страница — www.xingtech.com. Интерфейс программы весьма оригинален но не очень удобен.

Xing : XingMP3 Encoder 1.5 by Xing Technology Corporation

Новая версия коммерческого кодера от Xing Technology Corp. Оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего — за время с выхода предыдушей версии был введен режим "сохранения высоких частот", но и он не спасает положения, хоть все-таки высоких частот чуть-чуть добавляет. Домашняя страница — www.xingtech.com. Интерфейс программы совсем не измеился.

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

Поддержка битрейтов

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst да да да да да да
Blade Enc. да да да да да да
LAME да да да да да да
MP3 Compr. да нет нет нет нет нет
MP3 Enc. да да да да да нет
MP3 Producer да да да нет да нет
mpeg Enc. да да да да да да
XingMP3 Enc. 1.02 да нет да нет нет да
XingMP3 Enc. 1.5 да да да да да да

Поддержка стерео режимов

По стандарту ISO MPEG существует несколько способов кодирования стерео сигналов:

Dual chanel или
dual mono или
dual stereo
Левый и правый каналы кодируются раздельно как 2 разных записи, на каждый из каналов отводится ровно половина места в результирующем файле.
Stereo Левый и правый каналы кодируются раздельно как 2 разных записи, но кодер может выделить одному из каналов в данный момент времени больше места — это делается для того, чтоб избежать кодирования тишины в одном канале, если во втором есть сигнал. Оптимальный вариант.
Joint stereo Левый и правый каналы кодируются вместе, а в результирующий файл записывается информация о двух каналах в нетривиальной форме, например: левый канал и отличие правого канала от левого (на 2-ю часть отдается меньше места). Есть несколько стандартов представления информации joint stereo, но всех их объединяет существенный недостаток: плохая передача стерео эффектов, в частности портится фазовая информация.

Некоторые кодеры позволяют в явном виде выбирать режим кодирования стерео сигнала, другие выбирают автоматически. Следуюшая таблица иллюстрирует это:

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst JS S JS S JS S JS S JS S JS
Blade Enc. S S S S S S
LAME S JS S JS S JS S JS S JS S JS
MP3 Compr. JS - - - - -
MP3 Enc. JS S S S S -
MP3 Producer JS JS JS - S -
mpeg Enc. S DC S DC S DC S DC S DC S DC
XingMP3 Enc. 1.02 S - S - - S
XingMP3 Enc. 1.5 S JS S JS S JS S JS S JS S JS

Обозначения: JS — joint stereo, S — stereo, DC — dual chanel; если указано несколько значений, значит программа допускает выбор режима. Первым указан режим использовавшийся при тестировании.

Скорость кодирования

Как я уже говорил, для меня этот параметр не критичен: если программа работает качественно, то я согласен подождать. Тем не менее, для того, чтоб тестирование было более полным, я протестировал и производительность кодеров.

Для тестирования скорости кодирования я отрезал по 30.000 секунд от WAV-файлов с записью песен с CD. В таблице приведено время кодирования 30 секунд песни Garbage, ниже — Offspring'а. Все тесты проведены на моем домашнем компьютере (Pentium 60 МГц, ОЗУ 24 МБ, ОС Windows 98). Во время тестирования запущены только 2 программы — "Свойства: Дата и время" из "Панели управления" (там часы с секундомером) и кодер (на переднем плане). Если программа поддержавает выбор приоритета выполнения операции кодирования, то выбирался приоритет Normal.

Степень сжатия и битрейт
11:1 8:1 7:1 6:1 5:1 4:1
128 кб/с 160 кб/с 192 кб/с 224 кб/с 256 кб/с 320 кб/с
AudioCatalyst 0:36
0:36
0:37
0:37
0:37
0:37
0:37
0:37
0:39
0:38
0:40
0:38
Blade Enc. 4:35
4:35
4:04
4:12
3:59
4:01
3:53
3:56
3:49
3:51
3:49
3:54
LAME 3:21
3:21
2:58
3:01
2:41
2:48
2:32
2:32
2:29
2:27
2:28
2:26
LAME -f 1:22
1:20
1:25
1:24
1:27
1:25
1:28
1:27
1:29
1:28
1:31
1:30
MP3 Compr. 2:09
2:01
- - - - -
MP3 Enc. 19:14
18:38
22:25
22:17
13:55
14:27
19:09
18:08
10:32
9:52
-
MP3 Producer 5:23
4:07
6:05
4:44
5:48
5:14
- 4:58
4:18
-
mpeg Enc. 24:16
23:58
19:43
20:42
17:18
17:32
15:36
15:33
14:59
14:54
14:14
14:39
XingMP3 Enc. 1.02 0:40
0:41
- 0:40
0:41
- - 0:44
0:44
XingMP3 Enc. 1.5 0:36
0:37
0:37
0:37
0:37
0:37
0:37
0:37
0:39
0:37
0:40
0:38

Ниже эти же данные приведены в более наглядной форме — на гистрограмме отложены средние по двум отрывкам песен времена кодирования.

Скорость работы AudioCatalyst 2.1 и XingMP3 Encoder 1.5 полностью совпадает.

Анализ АЧХ

Это, собственно, основной раздел, ради которого я и начал проводить тестирование. Он получился большим, поэтому я вынес его на отдельную страницу. Если вас интересуют только результаты тестирования и вам не интересно, откуда они взялись — вы можете пропустить раздел с анализом и читать сразу выводы.

Ссылки на все файлы в одном месте

Учитывая огромный объем информации на этой странице мне показалось, что такой раздел не будет лишним. Даже сам раздел со ссылкам оказался настолько большим, что я вынес его на отдельную страницу.

Прочие комментарии

Кроме качества воспроизведения АЧХ на качество звучания влияет еще много факторов, например, воспроизведение мелких деталей, передача фазовой информации (что Xing сделал из голоса с эхом в Gone Away — это надо слышать!!), так что я от комментариев воздержусь. Рассказывать, что "звучание того-то и того-то более сочно" я не буду, ибо считаю это попыткой описать неописуемое. Только в выводах я буду ссылаться на свои впечатления. А вам советую послушать самим и для себя решить самостоятельно.

Выводы

Еще раз замечу: я не претендую на истину в последней инстанции. Все, что написано в этом разделе — лишь мое мнение. Правда, мнение это базируется на аргументах, в данном случае — результатах тестирования. Тем не менее, на этой странице я представляю все результаты тестирования для того, чтоб вы могли на основании тех же данных составить свое мнение.

Как показала практика, даже такой грубый метода как сравнение АЧХ дает неплохие результаты — все что явно слышно на слух (напр. мало высоких, звон ISO-кодеров) отлично отражено на графиках. Так что можно считать, что при помощи графиков можно сравнивать качество кодирования даже там, где на слух разницы не слышно. Против аргумента "это же кодирование с потерями — какая к черту точная передача сигнала!" я могу возразить следующее — в ходе измерений делалось усреднение по достаточно большому отрывку (30 сек), который содержал и тишину (начало песни) и громкую музыку с заполнением всего частотного диапазона. По-моему такое усреднение по времени и определило очень хорошо согласующиеся с оценкой "на слух" результаты.

AudioCatalyst

Скорость превыше всего. Страдает, естественно, качество. Тем не менее если сравнивать с XingMP3 Encoder'ом — то качество заметно лучше (в режиме "сохранение высоких частот", когда работает код Fraunhofer'а). На высоких битрейтах высокие частоты не так однозначно вырезаются — и понятно почему. Качество при всех битрейтах на слух ощутимо хуже всех других кодеров (даже от того же Fraunhofer'а - ведь код явно был оптимизирован по скорости с потерями качества), кроме, естественно, XingMP3 Encoder'а. Так, качество при 320 кб/с сравнимо с 192 кб/с ISO-кодеров. Кстати, за счет использования стороннего кода нет старых ошибок Xing'а — страшных искажений фазовой информации. Кстати, даже новый XingMP3 грешит этим. Скорость стала еще больше по сравнению, опять же, с XingMP3 Encoder'ом 1.02 и равна скорости XingMP3 Encoder'а 1.5. Кодер явно расчитан на тех, кто хочет быстро получить результат, пусть даже не самый лучший.

Blade Encoder

Быстрый кодер. Основан на коде от ISO, отсюда его свойства: высокое качество на высоких битрейтах и характерный звон на низких (128 кб/с). Кроме того Blade содержит ошибку, которая дает себя знать хорошо слышимыми искажениями на 128 кб/с. Устранен основной недостаток кода ISO — медлительность. Blade работает в 3 — 6 раз быстрее, чем mpeg Encoder, который построен на оригинальном неоптимизированном ISO-коде. Качество кодирования уступает mpeg Encoder'у, однако разница мизерна (на слух не воспринемается) и если учесть разницу в скорости работы, то Blade становится очень привлекательным выбором для битрейтов выше 192 кб/с.

LAME

Очень быстрый кодер. Основан на коде от ISO, соответственно его свойства: высокое качество на высоких битрейтах и характерный звон на низких (128 кб/с). Естественно, нет ошибки Blade, которая дает себя знать на 128 кб/с. Устранен основной недостаток кода ISO — медлительность. Работает в 1,5 раза быстрее Blade (а в режиме -f — в 2.5 раза!), а качество выше, чем у mpeg Encoder'а, который построен на оригинальном неоптимизированном ISO-коде. (Режиме -f отключает психоаккустические фильтры, что делает звук чище на высоких битрейтах, но существенно ухудшает на низких.) Первый кодер, который при отличном качестве звука сравним с Xing'ом по скорости. Однозначно лучший выбор для высоких битрейтов — 224 кб/с и выше.

MP3 Compressor

Быстрый кодер. Основан на коде от Fraunhofer-IIS, отсюда его свойства: высокое качество на 128 кб/с. Кодер работает в 9 раз быстрее, чем старенький MP3 Encoder и в 2 раза быстрее нового MP3 Producer'а. Примерно на столько же MP3 Compressor быстрее, чем Blade. Качество кодирования слегка уступает MP3 Producer'у, иногда проявляется хорошо слышимые огрехи, которых у Producer'а нет. Если учесть его скорость кодирования — хороший выбор для 128 кб/с.

MP3 Encoder

Продолжение старой линии кодеров от Fraunhofer-IIS l3enc. Работает медленно (в 2-4 раза медленнее, чем новый MP3 Producer того же Fraunhofer'а), кодирует не очень качественно, интерфейс неудобный. Динозавр, вымирающий вид. К использованию крайне не рекомендуется.

MP3 Producer

Новая линия кодеров от Fraunhofer-IIS. Работает быстро (в 2-4 раза быстрее, чем старый MP3 Encoder того же Fraunhofer'а; сравним по скорости с Blade), кодирует очень качественно на низких битрейтах (128 кб/с и, вероятно, ниже). Вот она, известная психоаккустическая модель Fraunhofer'а! На высоких битрейтах (от 160 кб/с и выше) явно уступает кодерам на основе ISO-кода. Рекомендуется для низких битрейтов (160 кб/с и ниже).

mpeg Encoder

Основан на оригинальном неоптимизированном коде от ISO, отсюда его свойства: высокое качество на высоких битрейтах и мало высоких частот на низких (128 кб/с). Работает в 3 — 6 раз медленнее, чем Blade, который построен на оптимизированом ISO-коде. Качество кодирования отличное на высоких битрейтах. Для тех, кому нужно качество без компромиссов не смотря на скорость работы.

XingMP3 Encoder 1.02

Скорость превыше всего. Страдает, естественно, качество. Все высокие частоты нещадно режутся. Конечно, качество при 320 кб/с получше чем при 128 кб/с, но даже тогда оно еле дотягивает до 192 кб/с ISO-кодеров. Сравнивать скорость с другими кодерами бесполезно — тут Xing вне конкуренции. Хотя… Скорость LAME в режиме -f всего вдвое меньше. Кодер явно расчитан на тех, кто хочет быстро получить результат, пусть даже плохой.

XingMP3 Encoder 1.5

Нечего сказать. За все время с момента выхода предыдущей версии практически никаких изменений. Вот только скорость работы еще больше, да добавлен режим "сохранения высоких частот", который сохраняет высоких частот больше, но совсем не на много. До уровня качества любого другого кодера Xing'у как до неба на четвереньках (украинская пословица :).

Другие кодеры

Из известных кодеров я могу назвать еще Audioactive. Распространена также так называемая Radium-optimized версия MP3 Producer'а. Audioactive содержит неизмененный блок кодирования то Fraunhofer-IIS, поэтому от него неразумно ожидать характеристики, отличные от MP3 Producer'а. Более того, я сам это проверил и убедился в идентичности результатов. Правда, у Audioactive есть быстрый режим, когда он работает почти вдвое быстрее, но качество, естественно, ухудшается. Именно поэтому я не тестировал этот кодер. Механизм VBR я тоже не тестировал по идеологическим соображениям — переменный битрейт призван уменьшить размер файла при сохранении почти такого же качества. Очевидно, что если битрейт не уменьшать, то качество будет выше, чем с VBR. Radium-optimized MP3 Producer работает немного быстрее (где-то на 20%), чем оригинальный MP3 Producer, но в интернете есть сообщения об ошибках, которые приводят к снижению качества кодирования. Так что я бы ради этих 20% скорости не рисковал качеством.

Вообще, на сегодня практически все кодеры основаны на коде либо от ISO, либо от Fraunhofer'а, либо от Xing'а. Соответственно и свойства этих программ наследуются вместе с кодом.

128 кб/с (11:1)

Самый популярный на сегодня битрейт. Степень сжатия 11:1 — это, конечно, аргумент, особенно для Интернета, где каждый килобайт на счету. Используя этот битрейт можете забыть, что такое "высокие частоты". Это не значит, что их нет совсем. Они оставлены в таком объеме, что музыка звучит как в дешевом магнитофоне — "штоб свистело и бумкало". Кстати, тот, кто сказал что при этом битрейте сохраняется качество звучания CD очевидно имел в виду, что на вашем компьютере с маленькими-плохонькими колоночками (а то и вообще встроенными колонками, например в клавиатуру) вы не почуствуете разницы в качестве звучания CD и файла MP3 с 128 кб/с. (Мысль это не моя, то, по-моему, совершенно точно описывающая положение вещей.)

На 128 кб/с лучше себя ведут кодеры от Fraunhofer-IIS — они оставляют больше высоких частот, чем кодеры ISO и, тем более, Xing. Но чуда не будет: больше это не означает "воспроизводит идеально". Качество все равно оставляет желать много лучшего. Все ISO кодеры как один добавляют характерный звон, наличие которого связано с обобенностью психоаккустических фильтров ISO — если фильтр отключить (LAME -f), то звон исчезнет (хотя качество останется существенно хуже кодеров от Fraunhofer). На этом битрейте просто отлично себя показал MP3 Producer, специально оптимизированный под низкие битрейты.

160 кб/с (8:1)

Лучше, чем 128 кб/с. Но все равно слышен существенный недостаток высоких частот. На этом битрейте себя лучше проявили кодеры от Fraunhofer — ISO кодеры продолжают "звенеть", хотя и меньше. Выбирать приходится между кодерами от Fraunhofer, поэтому выбор — более новый MP3 Producer.

192 кб/с (7:1)

Все еще ощущается недостаток высоких частот. Кодеры от от Fraunhofer убирают высоких больше, чем кодеры ISO, которые все еще слегка "звенят". На этом битрейте кодеры от ISO и от Fraunhofer практически на равных — и у тех грехи, и у тех. Выбор за вами.

224 кб/с (6:1)

Высокие частоты передаются в почти полном объеме, но мелкие детали, как то: стерео эффекты или небольшие перепады громкости, на высоких частотах теряются. MP3 Producer 224 кб/с не умеет, а старый MP3 Encoder существенно хуже по качеству, чем кодеры ISO. А среди кодеров от ISO, качество которых почти одинаково, есть явный лидер — LAME (особенно в режиме -f, когда качество его звучания, судя по графикам — на слух этого не слышно,- чуть-чуть лучше других кодеров).

256 кб/с (5:1)

Вот тут я совсем перестаю ощущать разницу между записью с CD и MP3-файлами. Кроме MP3 Producer'а — он съедает больше высоких частот и его MP3 все таки отличается от CD. Все ISO-кодеры обеспечивают на слух одинаковое качество, по графикам места распределились так: LAME -f, LAME, mpeg Encoder, Blade.

320 кб/с (4:1)

Вот этого я уже не понимаю. Это что, попытка быть святее Папы Римского? Ну нет разницы на слух между ISO 256 кб/с и CD. Зачем же 320? В расчете на тех, кто эту разницу услышит? Так эти наверняка предпочтут все таки CD, который, как традиционно считается, обеспечивает качество Hi-Fi. Ведь даже 320 кб/с дает завал в -6 дБ на уровне в 21 кГц, а -6 дБ — это легко воспринимаемая на слух разница уровней. Правда, далеко не все слышат звуки с частотой в 21 кГц (ваш покорный слуга уже еле-еле различает тон в 19 кГц). Но во-первых, принято считать, что даже если человек столь высокочастотный звук и не слышит, он его все равно как-то вопринимает. А во-вторых, тот, кому необходимо качество Hi-Fi, либо слышит эти 21 кГц, либо из принципа не согласится на -6 дБ. Кстати, Fraunhofer, очевидно, со мной солидарна и потому 320 кб/с не поддерживает. Так что если вы выбрали 320 кб/с — вы хотете качества любой ценой. И тут ISO-кодеры обеспечивают на слух одинаковое качество, судя по графикам места распределились так: LAME -f, LAME, mpeg Encoder, Blade.

Ответы на вопросы

В начале этой статьи я сформулировал 2 вопроса, которые я поставил перед собой перед началом тестирования. Теперь, после окончания тестов, врем на них ответить.

Вопрос: Какой степени сжатия файлов достаточно для сохранения приемлемого уровня качества звука?
Ответ: Зависит, конечно, от того, что называть приемлемым уровнем. Если подразумевать под этим отсутствие слышимых на слух искажений — то 256 кб/с, ISO кодер. Если достаточно качества средней руки магнитофона, то достаточно 224 кб/с, может даже 192 кб/с. Ну а если колонки вашего компьютера воспроизводят CD как MP3 файл с 128 кб/с, то 128 кб/с — как раз для вас. Мой личный выбор — 256 кб/с, LAME -f. (Специальная благодарность Михаилу Федотову, который обратил мое внимание на этот действительно отличный кодер.)
Вопрос: Возможно ли сжать хоть чуть-чуть аудио-информацию при полном сохранении качества или с незначительным ухудшением качества?
Ответ: Чуть-чуть сжать всегда можно. Взять WAV-файл и сжать, скажем, ZIP-ом или RAR-ом. Как показывает практика при таком сжатии объем аудио-данных можно сократить на 30 — 40%. Теперь о сжатии с потерями, а именно — MP3. Когда речь идет о сохранении качества, даже я против потери 6 дБ на 21 кГц. Идеология Hi-Fi не позволяет (кот не знает: это сокращение от High Fidelity — высокая точность). Есть CD, который теоретически может давать сигнал/шум в 96 дБ. Есть сжатие MP3, которое запись с CD однозначно испортит. Так что на современном этапе для высококачественного хранения аудио информации MP3 использовать нельзя. Как минимум CD с его форматом PCM, 16 бит, стерео, частота дискретизации — 44100 Гц. Как максимум — … Тут максимума по-моему нет :) Кому нужно высокое качество, тот будет использовать PCM и с 32 бит на отсчет (больше, в общем, смысла нет), и больше двух каналов, и бóльшие частоты дисретизации (новый стандарт DVD-audio предусматривает не то 96, не то 128 кГц).

Ссылки

bladeenc.cjb.net Страница автора Blade Encoder'а.
eal.da.ru Страница автора BladeBatch'а.
www.sulaco.org/mp3 Страница проекта LAME.
hwww.chez.com/mp3hc/ Страница автора MP3 Compressor'а.
www.iis.fhg.de/audio/ Страница Fraunhofer-Gesellschaft — IIS.
www.xingtech.com Страница Xing Technology Corporation.
move.to/mp3soft Страница MP3 Soft — отличный сборник софта для работы со звуком — кодеры, декодеры, проигрыватели, редакторы, грабберы, прочее.
www.download.com Download.com — заходите и давите на ссылку "MP3" — получите неплохой набор ссылок на софт для работы с MP3.
"Страница MP3" Михаила Федотова Много информации об MP3 вообще, о кодерах, декодерах, проигрывателях, тестированиях, много ссылок, несколько переводов статей с английского. Все по-русски. Настоятельно рекомендую к ознакомлению. Для энтузиастов — MP3 Forum.

М-да, негусто со ссылками. Ну ничего, меньше времени потратите лазаючи по ним. А, если честно, я не видел в Сети обзоров или тестирований, посвященный именно качеству кодирования. Если найдете — пишите мне: будет интересно взглянуть.

Распространение ссылки на эту страницу приветствуется, особенно если вы сообщите о ней людям, держащим сайты по MP3.