"На заборе тоже написано... А за забором - дрова."
"Из говна конфетку не сделаешь."

MP3 encoding


Статья о различных кодеках, применяемых для формата mp3,
их сравнении и треках, перекодированных из более низкого битрейта.


В первую очередь, хочу сказать, что всё нижеследующее оспариваемо и обсуждаемо. На абсолютную истину я не претендую. Данные выкладки приводятся лишь как результаты моего общения с форматом mp3 в течение долгого времени, и кое-каких выводов, из этого общения сделанных.

Лирическое вступление.

Однажды я приобрёл в одном достаточно известном в нашем городе магазине компакт-диск с несколькими альбомами какой-то группы. На обложке гордо красовалось: "320 kbps. Пять часов высококачественного звучания в формате mp3". Это хорошо, подумал я. Придя домой и скопировав содержимое диска на компьютер, я включил музыку и понял, что не всегда стоит доверять тому, что написано на обложке. Звук явно был хуже ожидаемого: смазанное звучание частот среднего диапазона, исковерканные высокие частоты...

Общие положения.

Формат записи PCM (импульсно-кодовая модуляция), принятый на AudioCD, недостаточно компактен, чтобы его можно было использовать для хранения музыки на своем компьютере, и уж совершенно непригоден для обмена музыкой через интернет. Поэтому разрабатываются и постоянно совершенствуются математически чрезвычайно сложные алгоритмы сжатия аудиоданных и форматы их хранения. Эти алгоритмы порой сильно отличаются по качеству звучания друг от друга. Перед многочисленными пользователями стоит постоянная проблема выбора: какой программой, по какому алгоритму и с какими параметрами кодировать свою любимую музыку?
Несмотря на то, что создано множество различных алгоритмов и форматов, абсолютным лидером на сегодняшний день является только один из них. Это формат сжатия MPEG 1.0 Audio Layer III, называемый в народе просто "mp3". Формат mp3 является потоковым форматом передачи и хранения цифрового аудиосигнала, и был разработан институтом Fraunhofer IIS, как часть стандартов сжатия аудио/видео MPEG. А стандарт сжатия MPEG, в свою очередь, был разработан Экспертной группой кинематографии (Moving Picture Experts Group - MPEG). Вообще говоря, MPEG применяется для кодирования и звука, и видео. Ну, это вы знаете. Кому интересно, подробную информацию по стандартам MPEG можно прочитать на сайте iXBT.com.

Формат mp3 предусматривает сжатие звуковой волны, в грубом приближении наподобие архиватора (RAR, ZIP). Но, в отличие от зазипованного файла, при разжатии звука, закодированного в mp3, восстановления частотного спектра до первоначального его облика не происходит. Аудиокодек при своей работе урезает частотный спектр таким образом, чтобы, не нарушая общей звуковой картины композиции, уменьшить размер файла. Поэтому, при последующей записи аудиодиска из mp3 или при перекодировке, например, из битрейта 128 kbps в битрейт 320 kbps, ждать улучшения качества уже не стоит. Звуковой волне с уже "обрезанной" верхушкой неоткуда взять недостающие фрагменты. В итоге мы можем слышать, что всякие тарелочки, звенелочки и прочие высокочастотные звуки в композиции звучат приглушённо, ненатурально. Методику работы кодеков мы здесь рассматривать не будем, информацию по этому поводу вы можете найти на страницах, указанных в самом низу этой статьи, в разделе "Рекомендуемые материалы".

Битрейт.

К моему удивлению, некоторые любители музыки подчас не имеют ни малейшего представления, что такое битрейт. Некоторые смутно догадываются, что "чем его больше, тем лучше". Что ж, оно вполне логично. Но давайте всё же рассмотрим, что такое битрейт и с чем его едят.



Информация о битрейте в Winamp-е.

Итак, битрейт (от английского bit rate, скорость передачи в битах) показывает, какой объём цифровой информации в секунду проходит через цифро-аналоговый преобразователь звуковой карты. Наиболее распространёнными битрейтами закодированного в mp3 звука являются 128, 160, 192, 224, 256 и 320 kbps (kilobits per second - килобит в секунду). От показателя битрейта, в частности, напрямую зависит и размер полученного mp3-файла: например, одна секунда звучания mp3 с битрейтом 320 kbps будет "весить" 320 килобит, или 40 килобайт (тем, кто забыл: 1 байт равен 8 бит). Таким образом, объём пятиминутной композиции будет равен 5*60*320/8=12000 килобайт, или примерно 11.7 мегабайт (тем, кто забыл: 1 мегабайт равен 1024 килобайт).
Отличить запись с битрейтом 128 от таковой с битрейтом 256 или 320 можно даже на слух. Нужно лишь иметь нормальные не потоптанные медведем уши и слушать не на переносном китайском магнитофончике формата "мыльница". Отличить на слух разницу в звучании mp3 с битрейтом 256 или 320 и AudioCD практически невозможно. Во всяком случае, не раз проводившиеся по этой теме опыты с участием профессионалов это подтвердили.

Кодеки.

Для кодирования звука в формат mp3 применяется целое семейство специальных программ, носящее название "кодеки" (codecs). У каждого кодека есть свои плюсы и минусы. Желающие могут найти в интернете немало сравнительных тестов разных кодеков.
В основном, в настоящее время используются кодеки FhG (Fraunhofer), Lame, Blade и Xing. Каждый из этих кодеков использует при своей работы различные методы и алгоритмы, разница в которых и позволяет отличить их между собой. Информацию о кодеке, которым был сжат mp3-файл, можно получить программно. Лично я для работы с mp3 использую связку EncSpot и PZ TagEditor. Эти программы умеют не только отображать информацию о битрейте и используемом кодеке, но и многое другое, кстати.



Общий вид программ EncSpot и PZ TagEditor. Информация о кодеках.

Режимы кодирования.

Формат mp3 позволяет производить кодирование аудиосигнала следующими методами:

  • Dual Stereo. Левый и правый канал кодируются как два отдельных потока, причём под каждый из них отводится ровно по половине суммарного потока. Фактически, dual stereo представляет из себя два отдельных моно-сигнала. Этот режим рекомендуется, когда каналы содержат принципиально разный сигнал - например, текст на разных языках. При кодировании музыки могут возникать артефакты: к примеру, у меня было такое, что один канал звучит тише другого и содержит непонятного происхождения щелчки.
  • Stereo. Каждый канал также кодируется самостоятельно, объём суммарного потока остаётся постоянным, однако за счёт разницы между объёмами каналов в текущий момент кодек может выделять больше места под кодирование одного из каналов, если второй канал частично занят сигналом, находящимся ниже порога слышимости.
  • Joint Stereo. Итоговый поток подразделяется на средний (между каналами) и разностный между ними. При этом, тем не менее, низкочастотный сигнал воспринимается и обрабатывается кодеком как обычное стерео. Такой режим может быть полезен при кодировании с низким битрейтом (224 и ниже), а также высококачественного аудиосигнала, когда, в целом, фазы каналов совпадают. Однако оцифровка источников с разницей в фазах каналов приводит к резкому ухудшению качества звучания. Таким образом, в режиме joint stereo не рекомендуется оцифровывать записи с аудиокассет, а также AudioCD, которые, возможно, были записаны ремастерингом также с плёнки (например, очень старые альбомы, т.к. первоначально они, в основном, записывались и микшировались на магнитной плёнке).

    Спектральный анализ.

    Чуть ниже мы попробуем разобраться, чем отличаются результаты работы различных кодеков при кодировании музыки из разных источников, и в этом нам поможет спектральный анализ. Его использование позволяет нам наглядно увидеть сигнал, сформированный при кодировании mp3 и сделать кое-какие выводы.
    Как мы знаем из школьного курса физики, звук представляет собой волну, сформированную колебаниями среды, через которую он проходит. Но на самом деле, оказывается, всё не так плоско, двумерно и однозначно...

    Историческая справка с сайта www.3dnews.ru.
    Исследованиями природы звука люди стали заниматься достаточно давно. Догадаться о том, что звук имеет волновую природу, совсем нетрудно - достаточно посмотреть на колебания натянутой струны, закрепленной с обоих концов. Первые серьёзные исследования в этой области стал проводить Пифагор (6 в. до н. э.), который доказал зависимость высоты тона от длины струны и вывел определённый звукоряд, впоследствии долгое время применявшийся в музыке. Чуть ближе к нам по сетке времени Аристотель, который предположил, что звук - это упругие колебания воздуха. В 18 веке русский учёный М.В. Ломоносов доказал, что газы, в том числе и воздух, обладают свойством упругости. А 1807 год можно считать ключевым в истории звука, поскольку в это время английский учёный Томас Юнг окончательно установил его природу. Причем в качестве подручных средств он использовал шип розы, бокал и закопчёное стекло. Прикрепив сургучом шип к бокалу и, направив конец иглы на поверхность стекла, ученый ударил по бокалу, заставив его звенеть и в это время начал смещать стекло. В результате на закопчённой поверхности появилась извилистая линия, которая, как мы теперь уже знаем, соответствовала форме звуковой волны. В этом же году, Юнг создал первый самописец, состоящий из камертона и закопченного цилиндра.
    Теперь перенесёмся во Францию, во Французский Институт. В том же, 1807 году, математик и физик Жан Батист Жозеф Фурье представляет доклад о синусоидальном представлении температурных распределений. Данная научная работа содержала спорное утверждение о том, что любой непрерывный периодический сигнал может быть представлен суммой выбранных должным образом сигналов синусоидальной формы. К сожалению, эта работа была отклонена, так как против предположения Фурье высказался не менее знаменитый математик Жозеф Луи Лагранж, состоявший тогда в комитете института. Он сказал, что данный метод неприменим к разрывным функциям, например, таким как сигнал прямоугольной формы. В частности правы были оба. Но работа Фурье, ставшая ключевой для современной науки, была издана на много лет позже (в 1822 году), уже после смерти Лагранжа.
    В 1827-м известный немецкий физик Георг Ом высказал предположение, что воспринимаемый нами звук - это сумма синусоидальных колебаний, и человеческое ухо способно разлагать его спектр на частотные составляющие (простые тона). Впоследствии это и подтвердилось открытием Фурье, которое применили к описанию звуковых колебаний.


    Трехмерная модель представления сложной звуковой волны.

    Если посмотреть на эту проекцию слева, то можно увидеть амплитудно-временной график, практически тот же, что получил Юнг на самописце, и с которым мы привыкли работать в звуковых редакторах. А если посмотреть справа, то мы получим, собственно, картину спектра звука для одного канала.

    И вот здесь мы вооружимся программой Sony Sound Forge. Во всяком случае, лично я вооружусь. Это многофункциональный, мощный комплекс для профессиональной работы со звуком. В меню "Вид" поставим галочку "Анализ спектра". Дальнейшие манипуляции будем производить именно с появившимся после этого окном "Анализ спектра".


    Общий вид программы Sony Sound Forge.


    Окно "Анализ спектра".

    Дальше берём какой-нибудь аудиодиск, желательно фирменный или лицензионный (ну, во всяком случае, внушающий доверие своим происхождением, чтобы отмести возможные пиратские подделки). Вооружаемся аудиограббером и кодируем один и тот же трек разными кодеками и в разных режимах. В рамках моего эксперимента я кодировал трек Cassandra с альбома THEATRE OF TRAGEDY 1997 Aegis. Данный трек был скопирован на винчестер 32 раза в следующих вариациях:

  • Кодек blade, режимы dual stereo и stereo, битрейты 192, 256 и 320.
  • Кодек FhG, режимы high quality и normal quality, битрейты 192, 256 и 320.
  • Кодек lame 3.93, режимы dual stereo, joint stereo и stereo, битрейты 192, 256 и 320, а также, для общего развития, режим stereo vbr0 (переменный битрейт с максимальным качеством, ориентировочное значение битрейта 274).
  • Кодек lame 3.96, режимы dual stereo, joint stereo и stereo, битрейты 192, 256 и 320, а также stereo vbr0 (аналогично lame 3.93).
    Думаю, все понимают, что сравнивать нужно спектры для различных кодеков в аналогичных режимах кодирования. Итак,

    Сравнение спектров для треков с битрейтом 192 kbps.


    Blade, dual stereo

    Blade, stereo

    FhG, high q., stereo

    FhG, normal q., stereo

    Lame 3.93, dual stereo

    Lame 3.93, joint stereo

    Lame 3.93, stereo

    Lame 3.96, dual stereo

    Lame 3.96, joint stereo

    Lame 3.96, stereo

    Как видно из предоставленных скриншотов, основная "масса" закодированного звука приходится на частотный диапазон до 16 кГц. Этот порог не случаен. В большинстве учебников прямо говорится о неспособности человека слышать частоты выше 16kHz. Но во-первых, это просто неверно, т.к. многое зависит от мощности сигнала и от возраста слушателя. Во-вторых, человек - существо, не лишенное оригинальности. Даже когда он не слышит такие звуки с помощью уха осознанно, он все же ощущает их. И это влияет на восприятие. Поэтому обрезание частот выше 16kHz можно считать обоснованным на низких битрейтах, когда оно позволяет намного лучше закодировать более низкие диапазоны, но нельзя не брать в расчет, когда речь заходит о высоких битрейтах, приближающих качество сигнала к уровню CD Audio. Да, кстати, у детей частотный порог слышимости куда выше 16kHz.
    Касательно же сравнения кодеков, можно сказать, что разница между ними для битрейта 192 kbps не столь существенна. К тому же, битрейт 192 был рассмотрен здесь, как наиболее распространённый, "ширпотребовский". Тем не менее, следует отметить более точную передачу частот кодеком blade и кодеком lame 3.93 в режимах dual stereo и stereo.

    Сравнение спектров для треков с битрейтом 256 kbps.


    Blade, dual stereo

    Blade, stereo

    FhG, high q., stereo

    FhG, normal q., stereo

    Lame 3.93, dual stereo

    Lame 3.93, joint stereo

    Lame 3.93, stereo

    Lame 3.96, dual stereo

    Lame 3.96, joint stereo

    Lame 3.96, stereo

    Обратите внимание на явные различия в спектрах режимов high quality и normal quality у кодека FhG!
    Также удивил кодек lame 3.93, показавший в режиме stereo довольно некрасивое обрезание частот верхнего спектра. Самый правдоподобный, точный спектр этот кодек показал в режиме dual stereo. Но, как я говорил выше, этот режим стоит использовать с осторожностью, т.к. не всегда потом треки, им закодированные, корректно воспроизводятся. Лично я от использования dual stereo отказался вообще.
    А вот lame 3.96 внаглую отрезает частоты выше примерно 18 кГц.
    Стоит заметить также, что вид спектра зависит и от уровня и природы звукового сигнала в конкретный момент времени. Если, например, идёт глухая барабанная дробь, то не стоит пессимизировать по поводу того, что спектр "не поднимается" выше, скажем, 10 кГц.

    Сравнение спектров для треков с битрейтом 320 kbps.


    Blade, dual stereo

    Blade, stereo

    FhG, high q., stereo

    FhG, normal q., stereo

    Lame 3.93, dual stereo

    Lame 3.93, joint stereo

    Lame 3.93, stereo

    Lame 3.96, dual stereo

    Lame 3.96, joint stereo

    Lame 3.96, stereo

    Интересная картина. Кодек FhG, судя по всему, "забыл", что ему нужно кодировать mp3 с битрейтом 320 kbps, и упорно режет частоты выше уровня 16 кГц. Наиболее точный спектр выдают кодеки blade и lame 3.93. Что странно, в данном случае спектр lame 3.93 с режимом joint stereo выглядит если не лучше, то, во всяком случае, на уровне stereo. Что же касается lame 3.96, то частоты выше 18 кГц ему так и остались недоступны. Кстати, аналогичным образом обрезают спектр кодеки lame 3.95 и lame 3.97. Лично я не рекомендую их использовать.

    Сравнение спектров для треков с переменным битрейтом (vbr0, ~274 kbps)


    Lame 3.93, stereo

    Lame 3.96, stereo

    Здесь мы видим какую-то ступенчатую картину для обоих кодеков. Первая ступень - стандартные 16 кГц, вторая - около 18 кГц. Причём вторая ступенька у lame 3.93 чуть-чуть, но повыше.
    Таким образом, режим vbr (variable bitrate), на мой взгляд, является самым недоброкачественным: кодек самостоятельно решает, какие сэмплы и на каких частотах резать, и что из этого потом получится - неизвестно. Гораздо более привлекательным кажется использование cbr (constant bitrate), дабы обеспечить кодеку "широкую дорогу" полного спектра. Да, файл получится несколько более объёмным. Но на данный момент, когда основная масса прогрессивных трейдеров записывает музыку на DVD-носители, экономия трёх-четырёх мегабайт на альбом неуместна.

    Следует учитывать, что картинка спектрального анализа может варьироваться в зависимости от оригинального носителя, студии звукозаписи, личных предпочтений звукорежиссёра и используемой им аппаратуры. Есть, конечно, и другие причины. Но об этом в следующем разделе.

    Перекод из более низкого битрейта.

    Вполне естественно ожидать, что битрейт mp3-файла должен соответствовать его спектральному графику, и наоборот. Поэтому, если вы проверяете спектр файла с битрейтом 320, закодированного, скажем, кодеком lame 3.93, и видите что спектр практически полностью урезан до 16 кГц, то знайте - файл перекодирован из более низкого битрейта. Скорее всего, 192. Однако, могут быть и варианты. При проверке спектров следует учитывать, кроме сказанного выше, следующее:

  • Год выпуска альбома. Вполне естественным будет, что спектр треков, записанных, скажем, в 1960 году, будет заметно отличаться от более поздних произведений. Здесь следует помнить, что эра цифрового звука началась несколько позже, поэтому оригиналом, в таком случае, вряд ли был цифровой носитель.

  • Возможная оцифровка с магнитной плёнки. Отличие от первого пункта заключается в том, что ремастеринг альбома не проводился, и альбом "загоняли в цифру" кустарным способом, поскольку более качественных оригинальных носителей попросту не осталось. Этот вариант часто встречается среди ранних (и не только) альбомов отечественных групп, использующих для записи своего демо-материала подручные средства.
    Нередко записи, относящиеся к этому пункту, могут различаться характером спектра. Но типичными являются два вида картинок:


    "Самиздат"

    Оцифровка с плёнки

    В первом случае, очевидно, предоставленный группой материал записывался в гараже или каком-то подполье. Ребята играли, как умели, о звукорежиссуре не могло быть и речи и т.п.
    Во втором случае, запись была сделана, возможно, на какой-никакой, но всё же студии, но на момент оцифровки записи использовалась магнитная плёнка. Кстати, второй скриншот сделан с трека с битрейтом 320 kbps. Применение высоких битрейтов при кодировании музыки с плёнки оправдано тем, что электромагнитные шумы, свойственные этому типу носителей, отнимают изрядную долю полезного места, предоставляемого кодеком для оцифровки файла с определённым битрейтом. Отличительной особенностью спектра таких треков является "размазанность" отдельных сэмплов по оси абсцисс, характерная для аналогового носителя.

    Ну вот, вроде бы основные исключения из правила формирования графической спектрограммы мы рассмотрели. Поэтому, если вы видите, к примеру, в спектре явную двухэтажную конструкцию, то можете быть уверены, что это vbr или раньше был им. Если же вы видите, что кодек альбома с битрейтом 320 kbps определяется, как lame, а спектр урезан на уровне 16 кГц - это явный перекод из битрейта 192 kbps, если не ниже.

    Мои личные убеждения и предпочтения.

    Мои личные предпочтения сводятся к кодированию музыки кодеком lame 3.93 с наибольшим битрейтом в режиме stereo. Также я недоволен результатом работы кодеков lame 3.95-3.97. Как было показано выше, эта линейка кодеков неадекватно работает с высокими частотами. Объективных претензий к кодеку FhG я не имею: не раз попадались альбомы с кодеком FhG, спектр которых был на очень высоком уровне. Но, к сожалению, по умолчанию у продуктов FhG IIS выставлены довольно посредственные режимы medium quality и joint stereo. Поэтому в большинстве своём спектр FhG с битрейтом 256 и 320 kbps больше напоминает 192 kbps: далеко не все при оцифровке звука глубоко копаются в настройках.
    Что же касается кодека Xing, закодированные им mp3 всегда славились и продолжают славиться невысоким качеством. Сравнительно недавно появилась новая версия этого кодека (в частности, EncSpot различает Xing old и Xing new). Разработчики уверяют, что алгоритм кодирования полностью переработан и теперь Xing работает с куда более высоким качеством. Ну что же, давайте проверим...


    Xing new

    Согласен, качество безусловно повысилось, но для серьёзного кодирования музыки этот кодек остаётся непригодным, да и не для этого он создавался. В частности, в семействе кодеков Xing практикуется искажение сигнала, дающее эффект "лучшей слышимости высоких", что действительно часто может оказаться приятно, но высококачественное кодирование по определению подразумевает отсутствие подобных искажений. И не зря.

    Бывают, кстати, удивительные вещи: например, мне как-то попался альбом, закодированный lame 3.87 с битрейтом 224 kbps, спектр которого невозможно было отличить от 320 kbps. Чем это объяснить - рассказывать долго и скучно. Поэтому почитайте лучше вот это...

    Рекомендуемые материалы.

    MP3 Overview
    Аудио компрессия для меломанов
    Преодолевая звуковой барьер
    3D-звук

    Последняя редакция: 10 июля 2007 г.



    А написать мне можно сюда.


    © Oleg V. Avdeenko aka Shade.
    Участник Российского вебринга по обмену mp3 № 299


    Пожалуйста, при использовании данного материала не забывайте дать ссылку на сайт The Blackshades.

    Hosted by uCoz