Предисловие
Данный тест является продолжением предыдущего Сравнительного тестирования современных lossy кодеров аудио на вносимые искажения (очень желательно ознакомиться). На этот раз я хотел бы остановиться на кодерах MP3, а точнее, на признанном лидере - LAME.
ВНИМАНИЕ: в результате последних проведенных мною слепых сравнений LAME 3.93.1 и 3.98.4 на битрейте 320 кбит/с я обнаружил некоторое преимущество в качестве кодирования у последней версии 3.99. В связи с этим я не рекомендую использование старых версий LAME.
Материал для теста
File Size : 127MB (133 231 436 bytes)
Duration : 6:17.640 (16653924 samples)
Sample Rate : 44100 Hz
Channels : 2
Bits Per Sample : 32
Bitrate : 2822 kbps
Codec : PCM (floating-point)
Encoding : lossless
Track Gain : -4.52 dB
Track Peak : 0.831764
Используемое ПО
Core (2010-03-06 14:44:16)
foobar2000 core 1.0.1
foo_converter.dll (2010-03-06 14:42:12)
Converter 1.4
foo_rgscan.dll (2010-03-06 14:41:56)
ReplayGain Scanner 2.0.9
foo_verifier.dll (2009-10-05 10:39:20)
File Integrity Verifier 1.1
Sony Sound Forge 10a - вычитание сигналов.
Encoders:
LAME version 3.90.3 MMX (21.12.2001)
LAME version 3.93.1 MMX (01.12.2002)
LAME 32bits version 3.97 (24.09.2006)
LAME 32bits version 3.98.2 (22.09.2008)
LAME 32bits version 3.98.3 (27.02.2010)
LAME 32bits version 3.98.4 - modified to add float wav input support (22.03.2010)
LAME 32bits version 3.99 update 2 (18.10.2011)
Sony MPEG Layer 3 Encoder/Decoder 3.0.0.7379 (09.08.2009) from Sony Sound Forge 10a
Тестирование
1. Подбор параметров и кодирование
2. Декодирование
Декодирование выполнялось с помощью foobar2000 в формат WAV PCM IEEE Float 32-bit.
Для всех версий LAME декодер дал на выходе точно такое же количество семплов, как и у исходного WAV. Для Sony получилось на 2315 семплов больше. Надеюсь, мне удастся совместить исходный и полученный сигналы при вычитании.
3. Вычитание сигналов
Ниже приведен список разностных сигналов.
4. Анализ искажений
Выполняем сканирование разностных сигналов с помощью ReplayGain сканера. Ниже приведен скриншот результатов сканирования. Напомню: большее значение усиления означает меньшую громкость разностных сигналов (для тех кто в танке: меньше громкость шумов - лучше качество).
Еще немного о параметрах
Теперь я хотел бы определиться с несколькими параметрами, которые люди порой очень неуместно используют. Думая, что эти параметры дадут улучшение качества, в итоге они его не получают или же качество даже ухудшается. Но люди всё равно довольны что у них "тру-стерео", а не какое-то там непонятное Joint и что у них полный частотный диапазон на спектрограмме, хотя сами они выше 19-20кГц уже ничего не слышат.
Ключ -k - выключение НЧ фильтра
Наверное я всё-таки в n-сотый раз повторю: человек после рождения слышит звуки примерно от 15 Гц до 20 кГц, с возрастом этот диапазон снижается, главным образом сверху - примерно до 16кГц.
Теперь о кодировании. Формат PCM с частотой дискретизации 44.1 кГц способен передавать гармоники с частотой до 22.05 кГц. Кодек LAME 3.93.1 в режиме максимального качества ограничивает частотный диапазон до 20.5 кГц. Вам не кажется что диапазон слышимых человеком частот сюда вполне вписывается?
Ладно, допустим у Вас сверхъестественные способности и Вы таки способны слышать звуки с частотой 20-22 кГц. Тогда Вы можете использовать ключ -k, при этом сохранив весь... стоп. Не тут то было. Дело в том, что LAME использует психоакустическую модель и учитывает порог слышимости человека на различных частотах. То есть если частоты выше 16кГц будут на очень низком уровне, они просто вырежутся. Более того - LAME отдает приоритет более слышимым частотам, и если при кодировании будет определен пассаж высокой сложности, на очень высокие частоты просто не хватит бит, и ключ -k тут не спасет.
Что ж, если Вы всё еще хотите использовать отключения НЧ фильтра ради призрачной возможности сохранить весь частотный диапазон - Ваше дело. Благо, на высоких битрейтах отключение этого фильтра не слишком сказывается на качестве (в худшую сторону конечно, см. таблицу).
"Настоящее стерео" (-m s) vs Joint Stereo
Здесь мне опять придется повторять слова разработчиков:
В этом режиме кодер не использует возможность корреляции между двумя каналами. Естественно, это может негативно сказаться на количестве битов отведенных обоим каналам. В этом режиме кодер предоставляет одному из каналов меньшее количество битов если тот содержит тишину или же является менее сложным.
joint stereo
В этом режиме кодер использует корреляцию между двумя каналами. Сигнал раскладывается на сумму ("mid"), рассчитанную как L+R, и разницу ("side"), рассчитанную как L-R, большее количество бит выделяется каналу mid.
Такой прием эффективно увеличивает пропускную способность для сигналов с небольшим разделением стерео и дает существенный прирост качества кодирования. В режиме joint stereo, кодер может переключаться между Left/Right и Mid/Side представлением для каждого фрейма в зависимости от его содержимого.
Добавлю, что таким образом, для фреймов имеющих минимальное различие между каналами будет выделяться чуть ли не двойной битрейт (!), для материала с независимым содержимым в двух каналах, результат не будет отличаться от обычного Stereo. И еще: если посмотреть историю версий LAME, можно увидеть, что когда-то существующие проблемы с режимом Joint устранены еще в версии 3.90. Надеюсь, Вы сможете сделать правильные выводы.
Таблица результатов
В таблицу я ко всему прочему включил результаты для LAME 3.93.1 с дополнительными ключами -k и -m s.
Codec |
Bitrate, kbps |
Track Peak |
Track Gain,
dB |
Dif.Signal Peak |
Dif.Signal Gain,
dB |
Original WAV |
2822 |
0.831764 |
-4.52 |
– |
– |
LAME 3.93.1 |
320 |
0.918462 |
-4.51 |
0.178046 |
+21.13 |
LAME 3.93.1 (-k -m s) |
320 |
0.923214 |
-4.51 |
0.169717 |
+21.09 |
LAME 3.90.3 |
320 |
0.949861 |
-4.51 |
0.188262 |
+20.70 |
LAME 3.99 |
320 |
0.900963 |
-4.52 |
0.166792 |
+20.64 |
LAME 3.98.4 float |
320 |
0.904212 |
-4.51 |
0.137791 |
+19.90 |
LAME 3.98.3 |
320 |
0.904212 |
-4.51 |
0.137791 |
+19.90 |
LAME 3.98.2 |
320 |
0.890929 |
-4.51 |
0.149641 |
+19.53 |
LAME 3.97 |
320 |
0.983258 |
-4.51 |
0.151495 |
+18.96 |
Sony MP3 3.0.0.7379 |
320 |
0.922235 |
-4.44 |
0.196102 |
+14.96 |
Таблица обновляется по мере выхода новых версий кодеров. Обновление остальных скриншотов и отчетов не гарантируется.
LAME 3.93.1:
[СКАЧАТЬ] (0.22 МБ)
Информация от спонсора
ZODIKAM Video System: WiFi IP камеры видеонаблюдения. Узнайте Подробнее об ассортименте устройств в каталоге сайта.
Смотрите также:
gpsycho - старая никуда не годная модель которая не умеет толково работать с Joint Stereo, она портит звук, склеивает каналы между собой на сложных стерео семплах по этому в старых версиях начиная с битрейта 192 и выше используется режим Stereo чтобы оправдывать битрейт. Если вы принудительно в старых версиях поставите Joint Stereo, то что 160 кбит что 320 будут звучать одинаково убого.
nspsytune - совершенная модель используется в настоящее время. Отлично работает в режиме Joint Stereo, принудительное прописывание не приводит к багам которые я описал выше. Является режимом по умолчанию на всех битрейтах, на сложных стерео семплах грамотно без потери для качества переключает режимы mid-side и simple stereo.
ЗЫ - В любом из энкодеров будь то старый то новый указывайте только битрейт, не нужно мудрить с режимами, ведь разработчики лучше чем кто либо знают свое детище и не нужно мудрить с режимами стерео этим вы только испортите звук.
Вы прописали в этих старых версиях кодирование по пресету insane, не обратив внимание на то что при этом пресете енкодер начинает работать на тестовой на то время психоакустической модели nspsytune которая используется сейчас в современных версиях и достаточно развита.
И еще одно, нет такового Sony MP3 Encoder - Это обычный FhG (Fraunhofer)
я ж надеюсь вы человек разумный, и не стали бы доказывать, что саундфорджевский кодек, который режет на 16, является таким супер-пупер психооптимизированным)) и не уступает по СЛЫШИМОМУ качеству лэйму, который режет на 20.
Кстати, версии с 3.94 по 3.96 лэйм резали звук очень убого, тупо несколькими полосами после 16 до 20. с 3.97 вроде исправились, но до 3.93 ещё малость не дотягивает. Да, имхо
имелось ввиду wav как лосслесс в общем случае. А контейнером в широком смысле можно и мп3 и огг назвать, так как в них можно и фото, и текст запихать, и ещё хз что))
https://audiophilesoft.com/publ/software/encoders_test/4-1-0-53
А WAV - это контейнер.
Вы смотрите на спектры и считаете что в этом гарант звука?
Вы слишком глубоко заблуждаетесь, Ваш 3.93 никуда не годен.
Даже версии 3.94 3.95 и 3.96 обходят 3.93 Несмотря на то как вы написали имеют убогие срезы после 16 кГц.
Загнать вас на слепой тест и не поймете где оригинал а тем более где какая версия, это на битрейте 320 кбит, даю 100% что между версиями не найдете отличия.
Что я хотел сказать. По поводу спектров. Некоторые умники-"слухачи" говорят, что спектры фигня, нужно слушать ушами. Это может быть справедливо только для ~90% похожих спектров. Но если на одном спектре срез на 16 кГц, а на другом на 20, то только полный музыкальный кретин станет говорить про психоаудиальную или -акустическую оптимизацию и подобный бред. Грубый срез на 16-18 кГц не есть оптимизация, а тупо артефакт жесточайшего сжатия. Умники блин! Понакупили техники за 10 килобаксов и золотых кабелей, а мозгов - нуль:worship:
! Если звук говно, то спектр это сразу покажет! А уши докажут))
https://audiophilesoft.com/publ/my/delusions/11-1-0-80
https://audiophilesoft.com/publ/software/encoders_test/4-1-0-53
Неточно выразился.Под "редактированием" имел ввиду понижение(повышение) при необходимости уровня громкости трека Wavlab'ом. Всегда сохранял в wave 16bit. А Ваш коллега в статье,какой точно не вспомю,рекомендовал сохранять в 24bit. Вот и возник этот вопрос.