Как правильно кодировать аудиофайлы в MP3, или Почему не все кодеки одинаково полезны, статья. Журнал "Stereo & Video"


Не будем морщить носы — без MP3 сегодня никуда. WEB-презентация, автомобиль, телефон или другой портативный гаджет, когда в устройстве нет поддержки ни FLAC, ни Apple Lossless, не говоря уж о других редких форматах сжатия звуковых файлов. Но даже в этих непростых условиях можно оставаться требовательным слушателем, а степень деградации качества сигнала сделать осознанной.

Периодически возникают сообщения о новом кодеке, который-де побил старую «эмпетриху». Какие-то из них получают ограниченное распространение, например — Ogg Vorbis, другие остаются экзотикой. Тем не менее, не они, а именно MP3 остается в главном фокусе нашего интереса, как формат, по которому наблюдается полный консенсус среди всего воспроизводящего аудиооборудования. И вот вопрос, в каком битрейте его готовить?

Казалось бы, ответ очевиден — с емкостью носителей сейчас проблем не наблюдается. Гигабайт туда, гигабайт сюда — ставь 320 кбит/c и не разводи мелочную экономию со всякими VBR-режимами. Но не тут-то было. По сути, 320 кбит/c — это всего лишь формальный диаметр трубы, но что по ней течет и можно ли это пить, решается в другом месте.

320 кбит/с ≠ 320 кбит/с

Начнем с полевого теста. Мой портативный рекордер Sony PCM-D100 имеет две цепи АЦП: таким образом, можно одновременно фиксировать аудиосигнал как в PCM, так и MP3 формате. Его мы и установим на искомые 320 кбит/c, а PCM оформим в стандартные 16 бит/44 кГц. Из этого же РСМ-файла затем будем вручную перепаковывать файлы в 320 кбит/c, но уже по версиям того или иного кодера. Я намеренно выполнил запись одинокого инструмента (фортепиано) с высоким фоном окружающего шума, чтобы по изменению его характера можно было наглядно оценить прирост дополнительных артефактов.

Оригинальная PCM-запись 16 бит/44.1 кГц, выполненная рекордером Sony PCM-D100

Параллельная МР3-версия от рекордера Sony выглядит вполне адекватной. Характер шума становится немного более грубым, «зернистым». Спектрограмма показывает, что, в отличие от PCM-версии, высокие частоты фильтруются на 22 кГц, то есть практически в полушаге от потолка возможности дискретизации. Но в целом отличия от полноценной PCM-версии минимальные.

Дубликат MP3 320 кбит/c, выполненный непосредственно рекордером Sony PCM-D100

Одной из популярных оболочек для конвертирования является dBpowerAMP Music Converter. Он многое кодирует в обе стороны: WAVE, MP3, MP4, WMA, Ogg Vorbis, AAC, Monkeys Audio, FLAC. Даже ресемплингом занимается. Но нас интересует качество обработки в 320 кбит/c.

На странице настроек можно выбрать несколько алгоритмов: Lame, Fraunhofer и Helix. Сначала пробуем самый продвинутый Lame. Добросовестность кодирования ставим на Slow (High Quality) и никаких Joint Stereo.

Батюшки, а это что за новости? Спектр жестко отсечен по 19 кГц, а характер шума начиная от 16 кГц стал еще более грубым и чешуйчатым. Вот тебе и Slow (High Quality)… Может быть, старый-добрый Fraunhofer исправит ситуацию?

320 кбит/c по версии Lame 3.99 в оболочке dBpowerAMP — пресет Slow (High Quality)

Кошмар, а Fraunhofer вообще отчекрыжил все, начиная с 16 кГц. И это, замечу вам, те же самые 320 кбит/c, практически CD-качество по заверениям разработчиков. Что же тогда творится на 192 кбит/с? Кодер Helix не может ответить даже на этот вопрос, у него предельный битрейт 160 кбит/c, так что и смотреть его не будем.

320 кбит/c по версии кодера Fraunhofer

Посмотрим возможности популярного плеера Foobar2000. В нем используется кодек Lame предыдущей версии 3.98. Здесь следует напомнить, что любые программы, использующие Lame, хоть dBpowerAMP, хоть Foobar2000 — это, так называемые, front-end оболочки, то есть интерфейс к работе модуля. Сам же Lame довольно гибко управляется командной строкой, где можно указать прорву условий — битрейт, пресеты для VBR, ширину фильтров и прочее. Но для всего этого в Foobar следует создать отдельный кастомный пресет со списком задач командной строки. А мы пока смотрим работу кодера по умолчанию. В Foobar стоит простая шкала — Best Quality равно 320 кбит/с.

Этот вариант, конечно, оказался лучше Fraunhofer, но адаптивный фильтр по чуть-чуть надкусил спектр в районе 19 кГц. Психоакустическая модель определенно разбушевалась!

320 кбит/с по версии Lame 3.98 в оболочке Foobar2000 — пресет Best Quality

Я вообще не понимаю, почему в lossy-кодировании все кодеки первым делом набрасываются на высокие частоты, пускай и малослышимые? Энергии, «массы» аудиосигнала там, в отличие от басов, совсем немного. Экономия выходит на копейку, а все легкое и нежное из фонограммы выдувается. А потом, когда все это убрали из фонограммы, и получается тот MP3, который долго слушать довольно утомительно. Может лучше бы резали сначала инфраниз, стоит же рокот-фильтр в фонокорректорах, например, и никто не жалуется.

Найди правильную опцию

В моем dBpowerAMP стоит Lame 3.99. В разделе advanced можно увидеть суть командной строки Lame, которая по умолчанию выглядит следующим образом:

$ –b 320 –q2 -noreplaygain

Эти символы обозначают постоянный битрейт 320 кбит/с, качество нойз-шейпинга и алгоритма обработки «2» — т.е. высокое, но еще не максимальное, которое обозначается цифрой «0». Функция «replaygain», которая снижает уровень сигнала для предотвращения клиппирования, не задействована. Но самая полезная опция — «-k», которая активирует обход фильтра, не только отсутствовала, но и действительно более не поддерживается в современных кодеках Lame.

Конспирологическая версия гласит, что возможность не трогать спектр отменили, чтобы избежать подделок под lossless-форматы. Оптимисты говорят, что, наоборот не в спектре счастье, да и психоакустическая технология была существенно доработана. Но я бы все-таки предпочел видеть все частоты на месте, максимально приближенными к оригиналу. В dBpowerAMP, как и многих других «оболочках», оказалось невозможно прописать кастомные настройки Lame.

Можно наткнуться на предания старых людей о том, что нынешние версии никуда не годятся, а все хорошее закончилось на 3.93.1. Кодер, который я нашел, не захотел работать в моем Foobar2000. Может у кого-то получится — дерзайте и сообщите в комментариях о результатах. Настройку компонентов можно посмотреть здесь.

Словом, эта карусель вокруг не такого уж и ценного формата сжатия данных начала откровенно надоедать. И тут коллега Максим Семейкин из журнала ProHighEnd напомнил мне о программе EAC, который в отсутствие необходимости я уже стал забывать, спасибо ему. Оказалось, что у EAC вполне дружественный интерфейс, где даже рассказывается, какие инструменты Lame собирается применить к вашему WAV-файлу, например:

Using polyphase lowpass filter, transition band: 21517 Hz - 22050 Hz

Проклятый 3.93.1 так и не завелся, так что я плюнул и взял еще более древнюю версию 3.90.3, и, наконец выставил в командной строке EAC опции «–k» и «–q0». Вот этот вариант меня и устроил более всего.

Попробуйте мои или сделайте свои варианты. Возможно, у вас будут другие впечатления. Тестовые файлы можно забрать, послушать и изучить здесь.

320 кбит/с по версии Lame 3.90.3 с выключенным фильтром (опция -k)

Подготовлено по материалам журнала "Stereo & Video", март 2016 г. www.stereo.ru

Эту статью прочитали 16 188 раз
Статья входит в разделы:Полезные советы

Поделиться материалом:
Обсуждение данного материала
9 января 2020, 23:47
Альберт (Гость)
lame
Приветствую, подскажи как раздобыть сей кодек. На просторах никак не могу найти.
27 ноября 2021, 03:42
Миша (Гость)
lame.sourceforge.io
Написать свой комментарий