Описание процесса кодирования звука в MP3

Описание процесса кодирования звука в MP3

Перед кодированием исходный сигнал разбивается на участки, называемые фреймами, каждый из которых кодируется отдельно и помещается к конечном файле независимо от других. Последовательность воспроизведения определяется порядком расположения фреймов. Каждый фрейм может кодироваться с разными параметрами. Информация о них содержится в заголовке фрейма.

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

Работа психоакустической модели Для каждого диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если она превышает мощность сигнала интересующего диапазона или мощность сигнала в нем оказывается ниже определенного опытным путем порога слышимости, то для данного фрейма данный диапазон сигнала не кодируется. Для оставшихся данных для каждого диапазона определяется, сколькими битами на сэмпл мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта. При этом учитывается, что потеря одного бита ведет к внесению шума квантования величиной порядка 6 dB.

Завершение кодирования После завершения работы психоакустической модели формируется итоговый поток, который дополнительно кодируется по Хаффману, на этом кодирование завершается.

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

Способы кодирования стерео сигнала В рамках MP3 кодирование стереосигнала допустимо четырьмя различными методами:

Dual Channel -- Каждый канал получает ровно половину потока и кодируется отдельно как моно сигнал. Рекомендуется главным образом в случаях, когда разные каналы содержат принципиально разный сигнал -- скажем, текст на разных языках. Выставляется в некоторых кодерах по требованию.

Stereo -- Каждый канал кодируется отдельно, но кодер может принять решение отдать одному каналу больше места, чем другому. Это может быть полезно в том случае, когда после отброса части сигнала, лежащей ниже порога слышимости или полностью маскируемой, оказалось, что код не полностью заполняет выделенный для данного канала объем, и кодер имеет возможность использовать это место для кодирования другого канала. В документации к mp3enc замечено, что этим, например, избегается кодирование "тишины" в одном канале, когда в другом есть сигнал.

Данный режим выставлен по умолчанию в большинстве ISO-based кодеров, а также используется продукцией FhG IIS на битрейтах выше 192kbs. Применим и на более низких битрейтах порядка 128kbs... 160kbs.

Joint Stereo (MS Stereo) -- Стереосигнал раскладывается на средний между каналами и разностный. При этом второй кодируется с меньшим битрейтом. Это позволяет несколько увеличить качество кодирования в обычной ситуации, когда каналы по фазе совпадают. Но приводит и к резкому его ухудшению, если кодируются сигналы, по фазе не совпадающие. В частности, фазовый сдвиг практически всегда присутствует в записях, оцифрованных с аудиокассет, но встречается и на CD, особенно если CD сам был записан в свое время с аудиоленты.

Joint Stereo (MS/IS Stereo) -- Вводит еще один метод упрощения стереосигнала, повышающий качество кодирования на особо низких битрейтах. Состоит в том, что для некоторых частотных диапазонов оставляется уже даже не разностный сигнал, а только отношение мощностей сигнала в разных каналах. Понятно, для кодирования этой информации употребляется еще меньший битрейт.

В отличие от всех предыдущих, этот метод приводит к потере фазовой информации, но выгоды от экономии места в пользу среднего сигнала оказываются выше, если речь идет о очень низких битрейтах. Этот режим по умолчанию используется продукцией FhG IIS для высоких частот на битрейтах от 96kbs и ниже (другими качественными кодерами этот режим практически не используется). Но, как уже говорилось, при применении данного режима происходит потеря фазовой информации, также теряется любой противофазный сигнал.

Простые заблуждения и ошибки, делаемые пользователями MP3

Вокруг MP3 набралось столько заблуждений, что создается впечатление, что так все и было задумано, что это чей-то заговор. :) Но -- по порядку.

Одно из самых больших заблуждений, связанных с MP3, постоянно проявляется в споре "128kbs vs 256kbs -- с каким битрейтом кодировать". Аргументы сторонников первого варианта исчерпываются напоминанием, что такие MP3 вдвое меньше. Утверждение, что уж лучше держать CD Audio вместо MP3 256kbs, несостоятельно -- качество MP3 256kbs... 320kbs практически сответствует оригиналу, а занимаемый объем в 4.5--6 раз меньше. Заблуждение же состоит в том, что и 128kbs дает достаточно высокое качество. На самом же деле для людей, сознательно выбирающих 128kbs, сохранение близкого к исходному качества просто не является слишком важным, так как их аппаратура обычно не лучше плееров -- "мыльниц;". В то же время многие владельцы CD кодируют их в MP3 даже просто потому, что гораздо реже нужно CD менять - на моем 8Gb винчестере поместится более пятидесяти часов музыки в MP3 битрейта 320kbs. Как говорится, в этом случае мотивы пользователей 128kbs нам непонятны.

Чтобы не суметь отличить MP3 128kbs от оригинала, нужно либо не иметь слуха, либо взять аппаратуру похуже. И то, что на большинстве компьютерных систем с момента покупки стоит ужасно шумная звуковая плата от ESS, известно всем хорошо. Только мне с некоторых пор кажется, что дело еще и в постоянном отравлении некачественным звуком, и, как следствие, временной (но постоянно возобновляемой) потере чувствительности. Мы слишком часто слушаем то, что слушать не стоило бы, и дело не только характеристиками компьютерной техники -- MP3 128kbs при нормальном слухе не понравится и на ESS. Конечно, по сравнению с дребезгом колонок уличного киоска под аккомпанемент трамвая звучание MP3 128kbs может казаться весьма неплохим, но это не нормально.

А что до карты - простая малошумная карта и относительно приличные наушники стоят не так уж много. Поэтому в обзоре не учитываются шумы компьютера и карты -- эти трудности вполне преодолимы.

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