ВНИМАНИЕ: в результате последних проведенных мною слепых сравнений LAME 3.93.1 и 3.98.4 на битрейте 320 кбит/с я обнаружил некоторое преимущество в качестве кодирования у последней версии 3.99. В связи с этим я не рекомендую использование старых версий LAME.
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
Самая старая из используемых сейчас версий LAME. Установлен специальный alt-preset insane, который по мнению его разработчика дает максимально возможное качество кодирования. Но я всё-таки воспользовался возможностью дополнить его ключем -q0, который по предварительным тестам дал таки некоторое улучшение. При этом скорость кодирования значительно упала (возможно, это и была причина по которой этот параметр не включили в пресет)
Эта версия примерно на год новее чем 3.90.3 и тоже пользуется большой популярностью, так как всё ещё позволяет выключать фильтр нижних частот и таким оброзом передавать весь частотный диапазон (тут вопрос качества довольно спорный, к нему мы вернемся позже). В списке изменений указано объединение параметров alt-preset и preset, командная строка изменена соответствующим образом.
Фактически устаревшая, но (по непонятным мне причинам) всё еще используемая так называемой Сценой версия LAME. Временный входной файл (%s) более не требуется, кодировщик отлично работает в режиме pipe encoding. Пресеты в этой версии уже не актуальны, так как заключают в себе лишь значения параметров -b (или -V для VBR) и -q, мы же пропишем эти параметры вручную - максимальный битрейт и максимальное качество алгоритмов.
Версия датированная 27 февраля 2010. Параметры ничем не отличатся от предыдущих. В списке изменений LAME 3.98.3 указано улучшение алгоритма упаковки фреймов. По предварительным тестам на 320 кбит/с это дало небольшое улучшение качества в сравнении с предыдущей версией.
Включает в себя некоторые багфиксы. Важным отличием этой компиляции (кстати говоря, почти все рассматриваемые кодеры скомпилированы john33, владельцем сайта rarewares.org) является возможность подачи на вход кодера данных с плавающей точкой.
Для всех версий LAME декодер дал на выходе точно такое же количество семплов, как и у исходного WAV. Для Sony получилось на 2315 семплов больше. Надеюсь, мне удастся совместить исходный и полученный сигналы при вычитании.
Выполняем сканирование разностных сигналов с помощью 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
Здесь мне опять придется повторять слова разработчиков:
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
TrackPeak
TrackGain, dB
Dif.SignalPeak
Dif.SignalGain, 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.4float
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
Таблица обновляется по мере выхода новых версий кодеров. Обновление остальных скриншотов и отчетов не гарантируется.
Здесь автором статьи вроде поощряется, но я заметил, что в примерах и в других статьях на сайте эта команда отсутствует. Рекомендуется ли все же, использовать Joint Stereo?
Еще один вопрос. Настойчиво рекомендуется использовать последние библиотеки ламы. Почему же, можно подробней, ведь лучше всего на бумаге показал себя 3.93.1?
"Даже спорить с вами не стану. Лень что-то доказывать."
я ж надеюсь вы человек разумный, и не стали бы доказывать, что саундфорджевский кодек, который режет на 16, является таким супер-пупер психооптимизированным)) и не уступает по СЛЫШИМОМУ качеству лэйму, который режет на 20.
Кстати, версии с 3.94 по 3.96 лэйм резали звук очень убого, тупо несколькими полосами после 16 до 20. с 3.97 вроде исправились, но до 3.93 ещё малость не дотягивает. Да, имхо
имелось ввиду wav как лосслесс в общем случае. А контейнером в широком смысле можно и мп3 и огг назвать, так как в них можно и фото, и текст запихать, и ещё хз что))
Аффтару респект! Годная статья.
Что я хотел сказать. По поводу спектров. Некоторые умники-"слухачи" говорят, что спектры фигня, нужно слушать ушами. Это может быть справедливо только для ~90% похожих спектров. Но если на одном спектре срез на 16 кГц, а на другом на 20, то только полный музыкальный кретин станет говорить про психоаудиальную или -акустическую оптимизацию и подобный бред. Грубый срез на 16-18 кГц не есть оптимизация, а тупо артефакт жесточайшего сжатия. Умники блин! Понакупили техники за 10 килобаксов и золотых кабелей, а мозгов - нуль:worship:
! Если звук говно, то спектр это сразу покажет! А уши докажут))
Возник еще один вопрос. В результате анализа ReplayGain (в вашей таблице) самое большее значение усиления получилось у Lame 3.93.1, получается и качество у него лучше? А последняя версия чуть ниже.
"Перед рипом сохраняю отредактированные треки в РСМ 16 bit,но слышал будто лучше в 24. Так ли это?"
Неточно выразился.Под "редактированием" имел ввиду понижение(повышение) при необходимости уровня громкости трека Wavlab'ом. Всегда сохранял в wave 16bit. А Ваш коллега в статье,какой точно не вспомю,рекомендовал сохранять в 24bit. Вот и возник этот вопрос.
Ответ: Как можно понизить громкость трека еще до того, как сохранишь его на жесткий диск (выполнишь рип)?
Проясните,пожалуйста. Вот уже вышел 3.99.3. На оф.сайте до сих пор предлагают 3.99. Это бэтки? Стоит ли их использовать или ждать пока их предложат предложу на сайте? И ещё. Перед рипом сохраняю отредактированные треки в РСМ 16 bit,но слышал будто лучше в 24. Так ли это?
Ответ: Разработчикам просто лень обновлять главную страницу. Смотрите историю версий.
А как это вы редактируете треки перед рипом?? Что-то здесь не сходится