WebSound.ru Home
    Главная | Комментарии | Архив выпусков | Форум и чат | AudioTag.info | Музоблог | reTracked | Авторский блог  



  Поиск:

Поиск по WebSound.Ru:
Поиск в Интернете:
Powered by




  Партнеры, реклама:




Audio watermarking
TrustedAudio.com



 

Краткое тестирование енкодера/декодера по алгоритму Ogg Vorbis

Автор: Александр Радзишевский (Alex Y. Radzishevsky)
Copyright (C) 2000, Alex Y. Radzishevsky

Все права в отношении данного документа принадлежат автору. Воспроизведение данного текста или его части разрешается только с письменного разрешения автора.

 

Тестирование проводилось на oggenc.exe v0.4 (енкодер), in_vorbis.dll (плаг-ин для WinAMP).

Кодек Ogg Vorbis, вышел в свет в июне 2000. Этот формат является частью проекта Ogg Squish по созданию полностью открытой системы мультимедиа. Иными словами, и сам проект, и Ogg Vorbis в частности являются открытыми и свободными для распространения, а также разработки на его основе нового программного обеспечения. В FAQ от разработчика (группа Xiphophorus) написано, что Ogg Vorbis является алгоритмом, принципиально схожим с известными MPEG-1 Layer II, MPEG-2 AAC, VQF и проч., однако использует оригинальный математический алгоритм и собственную психоакустическую модель, что освобождает его от необходимости выплачивать какие-то лицензионные сборы и производить иные выплаты сторонним фирмам-изготовителям аудио форматов. Алгоритм Ogg Vorbis рассчитан на сжатие данных на всех возможных битрейтах без ограничений от 8 Kbps до 512 Kbps, а также на кодирование с переменным битрейтом (VBR). Алгоритм предусматривает хранение внутри файлов подробных комментариев об исполнителе и названии композиции, а также графической информации. В алгоритме предусматривается также возможность кодирования нескольких каналов аудио (более двух, теоретически до 255), возможность редактирования содержимого файлов, а также так называемый "масштабируемый битрейт" - возможность изменения битрейта потока без необходимости декодирования. Поддерживается потоковое воспроизведение (streaming). Для хранения данных используется собственный универсальный формат bitstream Ogg Squish, рассчитанный на хранение любой информации мультимедиа системы Ogg Squish (идея реализации универсального формата bitstream Ogg Squish аналогична идее ASF - Advanced Streaming Format от Microsoft).

В тестируемой версии енкодера выбор битрейта явным образом произвести нельзя, можно лишь выбрать приблизительный битрейт, вокруг которого будет колебаться VBR: mode 2 (около 128 Kbps), mode 3 (около 160 Kbps), mode 4 (около 192 Kbps), mode 5 (около 256 Kbps) и mode 6 (около 350 Kbps). Таким образом в данной версии енкодера кодирование производится исключительно на VBR. Енкодер позволяет указать (а прилагаемый плаг-ин для WinAMP правильно читает) информацию о кодируемом потоке (исполнитель, группа, альбом, а также комментарии). Для осуществления кодирования обрабатываемый файл должен иметь обычные характеристики: PCM WAV, 44.1 Khz, 16 bit, stereo. 

Для тестирования как всегда я постарался подобрать два звуковых фрагмента разной длины и спектрального состава: 15 секундный фрагмент с преимущественно высокими частотами и 40 секундный фрагмент с глубокими басами и множественными пиками в средней и верхней полосах частот. Итак, приступим.

Сначала протестируем mode 2 (VBR в пределах 128 Kbps). Оба вышеуказанных фрагмента были сжаты в .OGG, а затем декодированы обратно в .WAV с помощью прилагаемого плаг-ина для WinAMP. Попутно следует заметить, что при воспроизведении с помощью данного плаг-ина в окне WinAMP в поле о текущем битрейте корректно отображается текущий битрейт. Битрейты проскакивают непривычные, например: 151 Kbps, 129 Kbps, 131 и т.д. То есть масштабируемость алгоритма налицо. Также замечу попутно, что декодер отнимает приличную долю процессорного времени - на моем Celeron 300A (366 Mhz o/c) он "кушает" 15-19%. С чем будем сравнивать? Естественно, с оригинальным .WAV и .MP3, сжатым с помощью Lame Encoder v3.86. Со сравнением с MP3 возникла небольшая проблема. Так как Ogg Vorbis кодирует только с VBR, да еще и на нестандартных битрейтах, параметры кодирования Lame пришлось подбирать каждый раз так, чтобы размеры результирующих файлов приблизительно совпадали. Таким образом, иногда кодирование MP3 производилось на VBR, а иногда на CBR. Сейчас мы сравниваем mode 2, так что тут пришлось сжимать на VBR 112-160 Kbps, при этом размеры файлов .OGG и .MP3 отличались совсем незначительно. Посмотрим на качество.

АЧХ в нижней полосе частот я не стал демонстрировать, так как там ничего интересного не происходит. В этой части АЧХ, как видно, и MP3, и OGG отличаются от оригинального WAV, однако похоже, что OGG ближе к WAV. Хотя, судить очень сложно, так как местами график MP3 оказывается немного точнее. Однако следует учитывать, что тестируемый звуковой фрагмент составляет всего 15 секунд и данный график показывает скорее различия психоакустических систем тестируемых кодеров, то есть на этой АЧХ мы видим как бы мелкие детали; полную же картину мы увидим на следующей АЧХ, где в качестве звукового фрагмента взят файл протяженностью 40 секунд.

Ну, что же, похоже, будем начинать хоронить MP3. Комментарии, думаю, излишни. Размер файлов .OGG и .MP3 отличался всего на несколько килобайт, битрейт .OGG колебался в пределах 124-132 Kbps, битрейт MP3 составлял 112-160 Kbps, результат вы видите сами: АЧХ MP3 безобразна. Причем завал начинается аж с 15 Кгц!

Переходим к тестированию mode 3 (VBR около 160 Kbps). Рассмотрение мелких деталей на примере 15-секундного фрагмента опустим пока, так как этот тест мало что дает. Глянем сразу на второй фрагмент.

Опять же, размер файлов .OGG и .MP3 отличается совсем незначительно. График сюрпризов не принес: оба кодека показывают пропорционально улучшившийся результат. Однако для MP3 все-таки стоит готовить надгробие RiP. Здесь он явно исправился, но и близко не подобрался к OGG. Полосу средних и нижних частот я опять же намеренно не показываю, так как на них никаких сюрпризов нет. Вообще, я чувствую, что звуковой фрагмент я подобрал удачно: несколько пиков на высоких, насыщенные средние частоты - все это хороший тест для качества кодирования. И еще меня не покидает ощущение, что Ogg Vorbis - не только достойный конкурент MP3, но и сильно его превосходящий противник.

Смотрим дальше: OGG mode 5 (VBR 256 Kbps), MP3 (256 Kbps CBR), тот же 40-секундный фрагмент (масштаб немного увеличен).

Здесь уже разницу увидеть сложнее, я даже склоняюсь к мысли, что MP3 местами точнее, но не везде - там где присутствуют всплески MP3 явно недотягивает. Однако в целом оба кодека показывают хороший результат.

Небольшое замечание следует сделать по поводу самих декодированных файлов. При кодировании и декодировании файлов .WAV с помощью Ogg Vorbis, размер результирующих файлов байт в байт совпадал с размером оригинальных, чего не скажешь об MP3, который всегда чего-нибудь да откусит. Кроме того, всем известно, что звучание MP3 начинается не сразу, а с паузой около 30 мс в самом начале потока. Такого эффекта в Ogg Vorbis нет, что позволяет делать сравнение оригинального .WAV и декодированного из .OGG с помощью вычитания одного из другого, что очень часто является крайне показательным тестом. Так, для всех протестированных режимов кодирования (mode 2, 3 и 5) я произвел вычитание декодированных файлов из оригинальных. С уверенностью можно сказать, что уровень разонстного сигнала уменьшается с увеличением битрейта. Если при mode 2 в оставшемся сигнале можно разобрать даже отдельные звуки инструментов и в целом общий уровень сигнала составляет около -72 дБ, то при mode 5 остается лишь некоторое шипение с уровнем около -84 дБ. Безусловно, так как разностный сигнал - это ни что иное, как сигнал удаленный кодером при сжатии (замаскированные неслышимые частоты, лишняя информация об аудио панораме), то уровень и характер этого сигнала сильно зависит от сжимаемой аудио информации. По этой причине делать общую численную оценку удаляемого при сжатии сигнала некорректно, однако тенденцию пронаблюдать все же можно.

Субьективно, звучание OGG мне нравится больше, чем MP3. Даже при кодировании с самым низким битрейтом, появление артефактов не наблюдается, звук не искажается.

Важно отметить, что даже при указании режима кодирования (mode 2, 3, 4, 5 или 6) енкодер производит кодирование отдельных фреймов по своему усмотрению, то есть указание режима - это указание на приоритетный битрейт. Однако если кодер "сочтет" его недостаточным для кодирования какого-то фрейма, то битрейт будет поднят на столько, на сколько это необходимо. Этот вывод подтверждается некоторыми экспериментами. Так, при кодировании одного из фрагментов в режиме mode 3 битрейт варьировал в пределах 151-175 Kbps, однако при кодировании другого фрагмента в том же режиме битрейт иногда заскакивал выше 190 Kbps. 

Кстати, очень немаловажен факт способности работы кодера во всем диапазоне битрейтов от 8 до 512 Kbps без ограничения (обычно битрейты фиксированы на 64, 96, 128, 144, 160, 192 Kbps и т.д., в Ogg Vorbis же битрейты изменяются абсолютно произвольно и разница между битрейтами соседних фреймов может составлять, например, 1 или 2 Kbps). Это очень важная способность алгоритма подтверждающая его полную масштабируемость 

Вывод прост и фундаментален. Если развитие Ogg Vorbis (а сегодня мы протестировали всего лишь вторую модификацию кодека) пойдет в том же духе, MP3 точно можно будет хоронить (и это при том, что Lame считается одним из самых качественных MP3-кодеков). Для второй беты алгоритм просто удивляет качеством. Я не могу сказать, что Ogg вообще не искажает сигнал, однако искажения вносимые этим алгоритмом, особенно на самых низких битрейтах, много меньше искажений, вносимых Lame Encoder'ом. Причем крайне существенным фактором является еще и то, что Ogg Vorbis бесплатен как для пользователей, так и для разработчиков. Это открывает поистине неограниченные просторы для производителей оборудования и пользователей: никаких лицензионных отчислений, никаких исков и проч. Следует только корректно исполнять пункты, указанные в лицензии GNU. Что же, пожелаем авторам проекта Ogg Squish всяческих успехов!

Если у вас есть замечания, предложения или дополнения, присылайте их на e-mail.