Введение
Данное тестирование имело (в первоначальном своем варианте) предварительный характер. Однако с выяснением некоторых подробностей об алгоритме MP3Pro, данный документ был доработан таким образом, что теперь на его основе можно сложить достаточно четкое мнение о том, что представляет собой новый алгоритм MP3Pro, а также что можно ожидать от него в будущем, с выходом полноценно рабочей версии.
По адресу: http://www.thomson-multimedia.com/gb/06/c01/010614.htm можно ознакомиться с документом, анонсирующим новый формат сжатия аудио данных MP3Pro. Формат разработан компанией Coding Technologies вместе с Tomson Mulimedia и институтом Fraunhofer. Формат MP3Pro является продолжением, или, точнее, развитием старого доброго MP3. MP3Pro является совместимым с MP3 назад (полностью) и вперед (частично). То есть файлы, закодированные с помощью MP3Pro, можно воспроизводить в обычных проигрывателях, однако качество звучания при этом заметно хуже, чем при воспроизведении в специальном проигрывателе. Это связано с тем, что файлы MP3Pro имеют два потока аудио, в то время как обычные проигрыватели распознают в них только один поток. Обозреватели отмечают, что появление нового формата внесет коррективы в существующее положение дел. Анонсированный Microsoft и выпущенный в свет кодек WMA 8.0 является качественным решением, кроме того набирающий популярность Ogg Vorbis также имеет массу преимуществ. Поэтому MP3Pro должен сначала доказать его прогрессивность и качество, однако он имеет на это все шансы. Помимо всего прочих немногочисленных технических подробностей, отмечается, что декодирование потока MP3Pro является намного более ресурсоемкой операцией, нежели декодирование MP3 или WMA. Это означает, что те аппаратные проигрыватели аудио, которые поддерживают перепрошивку BIOS и встраивание новых кодеков, могут просто "не потянуть" декодирование MP3Pro по причине нехватки процессорной мощности. Такой нюанс, естественно, является сдерживающим на пути MP3Pro.
Как отмечают разработчики, в MP3Pro использована новая технология - SBR (Spectral Band Replication). Эта технология предназначена для передачи верхнего частотного диапазона. Идея технологии и предпосылки таковы. Дело в том, что технологии использования психоакустических моделей имеют один общий недостаток: все они работают качественно до битрейта 128 Kbps. На более низких битрейтах начинаются различные проблемы: либо для передачи аудио необходимо обрезать частотный диапазон, либо кодирование приводит к появлению различных артефактов. Этот ключевой момент показывает, что использования психоакустической модели мало при работе с битрейтами ниже 128 Kbps. Кстати, эти слова разработчиков подтверждаются практикой: вспомните историю становления и развития WMA - именно такие проблемы можно было заметить в этом кодеке (да и сейчас тоже самое - читайте мои старые обзоры по WMA, где я писал о позвякиваниях и прочих артефактах). Новая технология SBR дополняет использование психоакустических моделей. Идея ее такова: давайте передавать чуть более узкий диапазон частот (то есть чуть подобрежем "верхи"), а верхние частоты будем воссоздавать (восстанавливать) основываясь на информации о более низких частотах. Таким образом, технология SBR применяется фактически не столько на стадии сжатия, сколько на стадии декодирования. На сколько я понимаю, этот загадочный второй "параллельный" поток данных, содержащийся в MP3Pro как раз и есть та минимальная необходимая информация, которая используется при воспроизведении для восстановления верхних частот. Кстати, все логично. Тогда действительно, оставшийся первый поток, который "видят" все старые проигрыватели - это и есть самый обыкновенный Layer III поток от старого доброго формата MPEG-1 Layer III. А все преимущество у тех проигрывателей, которые могут считать второй, параллельный поток и использовать его для восстановления высокий частот. Вот такая принципиально новая хитрость использована в новом формате. (в скобках замечу, что SBR (Spectral Band Replication) запатентована. В этом можно убедиться самому, сходив вот сюда: тут (login/password: guest) и тут. Сходив по второй ссылке, можно ознакомиться с полным описанием SBR). И, кстати, все мои мысли подтверждаются еще одним фактом: во время тестирования (см. ниже) я заметил, что хотя АЧХ оригинального и MP3Pro сигналов отличаются достаточно сильно, звучание почти неотличимо. Это подтверждает то, что высокие частоты созданы искусственно и хотя графики и не совсем точно совпадают, звучание все же остается похожим. Однако, возможно, все это только впечатление. Сейчас разберемся поподробнее.
Тестируемый кодек: MP3 Pro.
Кодеки, использованные для сравнения: Microsoft Windows Media Audio 8.0 (WMA), Lame Encoder (MP3).
Использованные кодеры: MP3 Pro Audio Player Demo v1.0 build 84, WM8EUtil от 23.Mar.2001 (Windows Media Audio), Lame Encoder MMX v3.88 beta 1 от 26.Mar.2001 (MPEG-1 Layer III); в конце тестирования использован более новый кодек MP3 Pro (не демо), входящий в поставку Nero Burning ROM v5.5.4.0.
Метод тестирования: кодирование оригинального .WAV-фрагмента каждым из кодеков, обратное декодирование в .WAV и сравнение результирующих АЧХ оригинального и полученного .WAV-файлов.
Фрагменты, взятые для несинтетического тестирования: MAIN.WAV, 10,600,008 байт, PCM WAV 44.1 KHz, 16 bit, stereo; имеет продолжительность 1 минуту, очень насыщенный спектр на всех частотах (Jean Michel Jarre, Oxygene VII). Композиция с таким "экстремальным" спектром выбрана специально. Второй фрагмент: BELLS.WAV, 1,782,356 байт, PCM WAV 44.1 KHz, 16 bit, stereo; очень чистая запись звучания колокольчиков; имеет очень насыщенный спектр в области средних и высоких частот.
Примечания:
параметры кодирования: Lame Enc: -b [bitrate] -m j -h -k (без фильтрации, joint stereo, оптимизация по качеству); WMA и MP3 Pro - предустановленные параметры для соответствующих битрейтов.
Несинтетическое тестирование
Сначала протестируем кодек на фрагменте музыки Jarre. Вот что получается во всей полосе частот до 21 Khz (цветовые обозначения и битрейты сбоку от графиков).
Увеличенный масштаб:
Что ж, очевидно, что старый MP3 в этом соревновании ужасно отстал. Однако также очевидно, что MP3Pro не предоставляет на 64 Kbps такое качество кодирования, какое предоставляется тем же Lame'ом на 128 Kbps. Однако комментарий чуть позже.
Теперь давайте заменим MP3 128 Kbps на WMA 8.0 64 Kbps.
Как видите, по графику WMA оказывается качественнее MP3Pro. На слух могу сказать, что это не так. Звук WMA какой-то звякающий, чересчур звонкий, в то время как MP3Pro звучит достаточно прилично. Хотя АЧХ остается АЧХ - факты - вещь упрямая.
Теперь заменим WMA 64 на WMA 96. Вот что получается.
Выходит, что в целом WMA более точно передает полосу частот оригинального сигнала. Однако статичный график АЧХ не может показать нам динамику спектра, поэтому остается только оценивать на слух либо взглянуть на сонограммы. Относительно субъективного звучания, могу сказать, что MP3 Pro 64 воспринимается на слух чуть-чуть лучше WMA 96. Звук чуть более живой и менее звонкий.
Давайте теперь взглянем на сонограммы оригинального сигнала, MP3Pro 64 Kbps и WMA 64 Kbps. Сонограмма оригинального сигнала:
Теперь сонограмма MP3Pro:
Очевидно видна разница - частотные составляющие размыты как во времени, так (что еще хуже) по полосам частот.
А теперь взглянем на то, что предоставляет WMA на 64 Kbps:
Тут сложно сказать что-то определенное по поводу нижней полосы частот, однако с уверенностью можно сказать, что полосу высоких часот WMA отрабатывает честнее и точнее, чем MP3Pro. Звучание WMA кажется чуть более звонким, чем MP3Pro, и по этой причине мне показалось вначале, что MP3Pro звучит качественнее, однако очевидно, что в целом WMA более точен (хотя и тоже не без огрех).
Теперь давайте сменим звуковой фрагмент. Возьмем звук колокольчиков. Итак, MP3 Pro 64, MP3 128 и MP3 64.
MP3 Pro почти как оригинал. MP3 64 отстал, MP3 128 чуть лучше MP3 Pro. Однако звучание всех кодеков отличить сложно.
Заменим теперь MP3 128 на WMA 64.
MP3 Pro вытворил под конец спектра что-то странное, WMA 64 в этом смысле более точен. Больше ничего сказать не могу.
Теперь проверим вот что. Как пишут разработчики, файлы в формате MP3Pro могут воспроизводиться и в обычных проигрывателях MP3 (то бишь старого образца), однако качество звучания в них будет сильно хуже, чем звучание в специальном проигрывателе. Это объясняется наличием в файлах MP3Pro двух параллельных независимых аудио потоков, один из которых не будет распознаваться в старых проигрывателях. Давайте проверим это утверждение (в качестве обычного проигрывателя MP3 выступал Windows Media Player). Обозначения на графиках: OWNPLAYER - сигнал от собственного проигрывателя MP3Pro, USUAL - сигнал от обычного MP3 проигрывателя.
Вот что выходит при воспроизведении музыки Jarre.
А вот что выходит при проигрывании звука колокольчиков.
Действительно, просто очевидно, что разработчики не солгали. Качество воспроизведения собственного плеера MP3Pro разительно отличается от качества в других MP3 проигрывателях. На слух разница тоже более чем очевидна. Такая колоссальная разница может быть объяснена, конечно, только чем-то принципиальным, вроде того, о чем говорят разработчики - наличием в MP3Pro двух независимых потоков данных и синтезированием недостающих частот.
Тестирование синтетическое
Все написанное выше было прелюдией к тому, что сейчас произойдет. Письма некоторых читателей, которые прислали мне свои соображения и доводы, помогут мне сейчас препарировать кодек и показать вам его "истинное лицо". Просто неоценимую помощь в этом мне оказал своими соображениями Дмитрий Куцанов, за что ему огромное спасибо. Итак, вот выдержки из его письма.
"Mp3_pro файл (от демо версии кодера) представляет собой обычный 64кбит/с mpeg2layer3. При этом около десяти процентов уходит на ancillary_data, куда собственно говоря, и записывается дополнительная информация. Аncillary_data суются в каждый фрейм, что является явным излишком для обычного мп3. Кодирование, наверное, происходит следующим образом: 1) спектр нарезается на куски: от 0 до 8.6 кГц, это будет обычный мп3-шник, выше, пусть, 16кГц (точно не смотрел) выкидывается, серединка 8.6 - 16 режется на несколько кусков; 2) кодируется основная мп3-шка, в каждом высокочастотном куске вычисляется средняя мощность на фрейм и записывается в ancillary_data. Декодирование, похоже, что происходит следующим образом: декодируется обычный мп3шник, из него выделяется диапазон 4.3 - 8.6 кГц. этому кусочку делают raising pitch ровно в два раза, полученный диапазон 8.8 - 17.2 нарезают на кусочки как при кодировании, из ancillary_data достается информация о мощности и присваивается этим кусочкам. Всё это запихивается обратно. Итого имеем: мп3шник с чуть более худшим качеством 64кБ/с - 10% с частотой до 8.6кГц и синтезированные из средних частот высокие частоты с такой же мощностью."
Вот, такие соображения. Сейчас проверим. Дмитрий предложил оригинальный тест: взять сигнал, состоящий из белого шума, скажем, в диапазоне от 0 до 6-8 кГц, а также взять тон, например, на 12 Khz. Теперь закодировать все это и раскодировать обратно. Посмотрим, что же получилось (обозначения сбоку от графиков).
И тоже самое в большем масштабе:
Выходит, что предположение верно! Почему оригинальный тон на 12 кГц размазался до неимоверных размеров? Потому что именно этот тон задавал мощность сигнала в области, в которую он попал при "нарезке" сигнала выше 8 кГц. Таким образом при декодировании произошло следующее: для восстановления потерянных высоких частот был взят сигнал "снизу" (до 8 кГц), затем был сделан питч наверх и помножен на мощность сигнала в участках, расположенных выше 8 кГц. Поскольку это мощность равна нулю везде кроме того участка частот, куда попал наш тон, то там везде ноль, как и должно быть. В том же участке, где находился тон произошло следующее: информация о виде сигнала в этой области была утеряна при кодировании (то есть был там тон или что-то другое - декодер не знает), и теперь известна лишь мощность сигнала в этой области (которую как раз и задавал этот тон при кодировании); таким образом теперь шум, взятый снизу, и поднятый путем питча вверх просто был умножен на мощность сигнала в этой области. Что поучилось? Правильно! Вместо тона получили шум в достаточно широком диапазоне.
Теперь я позволю себе поглумиться еще больше. Возьмем тот же шум в диапазоне 0 - 8 кГц, только смешаем его не со статичным тоном на одной частоте, а с тоном плавно поднимающимся с 9 до 18 кГц на протяжении всего сигнала. Чтобы увидеть динамику происходящего воспользуемся не графиком АЧХ, а сонограммами. Вот сонограмма оригинального сигнала:
А вот то, что получилось при декодировании файла MP3 Pro 64 Kbps.:
График говорит сам за себя. Теперь можно сказать точно: предположение Дмитрия верно - сигнал действительно рубится на куски (их девять - это легко посчитать) и восстановление сигнала происходит путем питча вверх нижних частот с их умножением на заранее сохраненную мощность сигнала в этих областях. Видите эти ступеньки? Они получились в результате перехода тона из одной полосы, где определяется мощность сигнала, в другую. Таким образом, внутри одной полосы не важно где находится тон, задающий мощность сигнала этой полосы, но как только тон переходит из одной полосы в другую мы сразу видим границу перехода, выраженную ступенькой на сонограмме.
Теперь также становится ясно, почему выше, на сонограммах, были видно, как MP3Pro размазывает сигнал по частоте.
Все прочитанное вами выше было написано тогда, когда была доступна лишь демо-версия кодера. В конце августа 2001 стала доступна полная версия кодера (которая поставляется в комплекте с программой Nero Burning ROM v5.5.4.0), позволяющая кодировать сигналы на битрейтах до 96 Kbps и предоставляющая возможность пользователю отключать режим Intensity Setero. Таким образом появилась возможность проверить данные вышеприведенных тестирований на более новой, не демо версии кодека. Не долго думая я решил попробовать провести самое жестокое синтетическое тестирование, которое вы видели два абзаца назад. Итак, я сгенерировал (похожий на уже использованный) сигнал продолжительностью 13 секунд, включающий в себя белый шум на всей протяженности сигнала в частотном диапазоне от 0 до 10 Khz, а также тоновый сигнал, плавно переходящий от 10 Khz (на нулевой секунде) до 19 Khz (на 13 секунде). Вот как выглядит сонограмма оригинального сигнала:
А, вот результат кодирования этого сигнала в формат MP3 Pro на битрейте 96 Kbps (не Intensity Stereo):
Что же изменилось с демо версии кроме позволения пользователю кодировать файлы на битрейтах выше 64 Kbps (до 96 максимум)? Ничего. Принцип кодирования, как и можно было предположить, остался прежним. Использованная технология SBR остается в силе, очевидно, что тем или иным способом сигнал действительно режется на куски выше определенной частоты, которая, похоже, зависит то битрейта, и все частоты, идущие выше этой частоты не кодируются, а лишь регистрируются по мощности. Частоты же ниже разделительной кодируются в обычный поток MP3. Таким образом, от битрейта зависит лишь эта граничная частота, а также диапазон регистрируемых частот (на битрейте 64 Kbps максимальная частота была 16 Khz, на битрейте 96 Kbps - выше 19 Khz, как видно).
Вывод
Протестированная демо версия кодера работала только на битрейте 64 Kbps. Логично было предположить, что с увеличением битрейта возрастет полоса реально передаваемых частот (при 64 Kbps она составляет, как отмечено выше, приблизительно 8 Khz), что и произошло, в этом можно было убедиться при тестировании не демо версии кодека на 96 Kbps. Более высокие битрейты (выше 96 Kbps) реализовать не планируется. Технология работы кодека была довольно подробно изучена выше, что позволяет сделать некоторые вполне однозначные выводы.
Кодек не пригоден по своей сути для хранения аудио данных в высоком качестве. Изощренная хитрость, придуманная разработчиками, действительно позволяет создать очень убедительную иллюзию качественного звучания. Я сам попался на этот крючок. Однако, как показали синтетические тесты, примененная хитрость является достаточно грубым приемом, который может сильно сказаться на качестве звучания. Ясно, что синтетические тесты нельзя считать тестером качества, однако такие тесты помогают выявить потенциально опасные или подозрительные места в работе алгоритмов. В то же время, кодек является очень серьезным конкурентом тем кодекам, которые предназначены для ведения аудио трансляции через Интернет или другие средства связи, поскольку воспринимаемое качество звучания аудио остается на высоком уровне в не зависимости от вносимых кодеком искажений. Это действительно колоссальный плюс MP3Pro. Кроме того, MP3Pro может быть использован для изготовления превью аудио материалов, а также использоваться для прослушивания аудио в диск-мэнах и прочих мобильных устройствах. Другими словами, кодек пригоден там, где нет необходимости в восстановлении аудио данных с максимально возможной приближенностью к оригиналу, и, в то же время, неприменим для хранения студийных или даже любительских аудио записей высокого качества.
В дополнение к сказанному приведу небольшое письмо Алексея Самохина:
"Все, казалось бы, хорошо, звучок приятный - НО: проблема сжатия переходит из чисто технологической в, что ли, "этическую". Ведь, что делает MP3Pro - он низы жмет при помощи Mp3 (отдавая бОльшую часть потока под это - заметьте, что Mp3Pro@64 на старом mp3-плейере (WA) звучит в принципе, не совсем ужасно. Наверное, где-то на 48 кил.) Так вот, та мизерная часть битрейта помогает воссоздать верхи из низов. Т.е., например, бочка - внизу, сразу - "тарелки" - вверху ;-). Понятно, что АЧХ, как Вы правильно заметили, изменяется до неузнаваемости, звук же - остается приемлемым. КОНЕЧНО - ведь декодер (или кодер) сам "разукрашивает" сигнал. Забивая на авторские задумки в HF-области. Еще с давних пор существовал такой способ "восстановления" старых кассет/пластинок: Цифруем, сдвигаем 3-7KHz сигнал на 10KHz вверх, небольшой shift, eq, и все Ob. На халяву получаем верхи. Но то ли задумывал автор? В этом весь вопрос. Так что, Mp3Pro, конечно? Интересно, но имхо только для низкоскоростных битрейтов. Мне же нужно высочайшее качество - я использую Lame @ 320."
Действительно, с такими ухищрениями можно поднимать и вопрос об этике. Мне кажется, выигрыш в качестве за счет "нечестного" восстановления (а, на самом деле, самого настоящего синтезирования) высоких частот является неэтичным приемом, тем более что компания-разработчик как всегда заявляет о потрясающем качестве при крохотном битрейте. Но это уже философия. А на практике мы имеем кодек, который способен побороть конкурентов по живым трансляциям аудио и, в то же время, не способен заменить MP3 или другие кодеки аудиофилам.
На последок скажу, что проигрыватель MP3Pro на моем Pentium III 720 Mhz (system clock 146 Mhz) кушает 9-12% процессорного времени, что действительно много, и что доказывает по всей вероятности невозможность встраивания этого кодека в уже существующие аппаратные проигрыватели MP3 (их мощности просто не хватит для декодирования аудио в MP3Pro).
Если у вас есть замечания, предложения или дополнения, присылайте их на e-mail.