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


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

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

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.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

Код этого кодера основан на демонстрационном варианте ISO кода, отличаясь только значительной оптимизацией по скорости кодирования.

BladeEnc - представитель первого поколения программ сжатия в МРЗ, которые имели разные функциональные возможности, но работали в командной строке MS-DOS и выполняли сжатие довольно медленно.

BladeEnc является консольным приложением Win32, т.е. выглядит как DOS-программа, но работает только под Win95/98/NT. В качестве самостоятельной программы BladeEnc на сегодня малоинтересен, но открытость исходного текста программы позволи встроить ее в множество более современных систем, в частности, в некоторые рипперы.

СЖАТИЕ В МРЗ: BladeEnc поддерживает много возможностей тонкой настройки создания МРЗ, принимает в качестве исходных файлов WAV, AIF, а также произвольный поток данных, переданный другой программой, позволяет создавать МРЗ с битрейтом до 320 kbps. Наиболее серьезным упущением является отсутствие поддержки VBR, также вызывает удивление отсутствие настройки сжатия стереофонических аудиопотоков (всегда используется Joint Stereo).

СКОРОСТЬ СЖАТИЯ: BladeEnc работает очень медленно. Скорость можно немного увеличить за счет установки высокого приоритета выполнения программы, но тогда на компьютере нельзя будет выполнять параллельно другую работу.

ИНТЕРФЕЙС: отсутствует.

ПЛЮСЫ: доступность, возможность встраивания в более сложные и современные системы.

МИНУСЫ: интерфейс с командной строкой, отсутствие поддержки VBR и Simple Stereo.

РЕЗЮМЕ: использование как самостоятельной программы нецелесообразно, но пользователь легко может столкнуться с этим компрессором при использовании других продуктов для создания МРЗ.

 

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.

Значимым отличием кодера от одноименных библиотек новых версий являются более гибкие возможности настройки и поддержка режима 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 пс