Что такое MP3
MP3 — сокращение от MPEG Layer3. Это один из потоковых форматов хранения и передачи аудиосигнала в цифровой форме, разработанный Fraunhofer IIS и THOMSON, позднее утвержденный как часть стандартов сжатого видео и аудио MPEG1 и MPEG2. Данная схема является наиболее сложной схемой семейства MPEG Layer 1/2/3. Она требует наибольших затрат машинного времени для кодирования по сравнению с двумя другими и обеспечивает более высокое качество кодирования. Используется главным образом для передачи аудио в реальном времени по сетевым каналам и для кодирования CD Audio. Полные спецификации формата доступны на сайте www.mp3tech.org.
Детали
MP3 — потоковый формат. Это означает, что передача данных происходит потоком независимых отдельных блоков данных — фреймов. Для этого исходный сигнал при кодировании разбивается на равные по продолжительности участки, именуемые фреймами и кодируемые отдельно. При декодировании сигнал формируется из последовательности декодированных фреймов.
Высокая степень компактности MP3 по сравнению с PCM 16Bit Stereo 44.1kHz (CD Audio) и ему подобными форматами при сохранении аналогичного качества звучания достигается с помощью дополнительного квантования по установленной схеме, позволяющей минимизировать потери качества.
Последнее, в свою очередь, достигается учетом особенностей человеческого слуха, в том числе эффекта маскирования слабого сигнала одного диапазона частот более мощным сигналом соседнего диапазона, когда он имеет место, или мощным сигналом предыдущего фрейма, вызывающего временное понижение чувствительности уха к сигналу текущего фрейма. Также учитывается неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, разного для разных частотных диапазонов.
Подобные техники называются адаптивным кодированием и позволяют экономить на наименее значимых с точки зрения восприятия человеком деталях звучания. Степень сжатия, и, соответственно, объем дополнительного квантования, определяются не форматом, а самим пользователем в момент задания параметров кодирования. Ширина потока (bitrate) про кодировании сигнала, аналогичного CD Audio (44.1kHz 16Bit Stereo) варьируется от наибольшего, 320kbs (320 килобит в секунду, также пишут kbs, kbps или kb/s), до 96kbs и ниже.
Термин битрейт в общем случае обозначает общую величину потока, количество передаваемой за единицу времени информации, и поэтому не связан с внутренними тонкостями строения потока, его смысл не зависит от того, содержит ли поток моно или стерео, или пятиканальное аудио с текстом на разных языках, или что-либо еще.
Кстати, несмотря на то, что в формате MP3 действительно при определенных условиях может кодироваться и пятиканальное аудио, рассмотрение всех случаев, кроме стерео, по понятным причинам не включено в данный обзор. Весь обзор построен вокруг и около процесса кодирования CD Audio.
Продолжаем про битрейты. На проведенных тестах специально приглашенные опытные эксперты, специализирующиеся на субъективной оценке качественности звучания, не смогли различить звучание оригинального трека на CD и закодированного в MP3 с коэффициентом сжатия 6:1, то есть с битрейтом в 256kbs. Правда, тесты были проведены на небольшом количестве материала, и на самом деле не все столь хорошо, нередко бывает действительно нужно пользоваться 320kbs. Для себя я счел это достаточным основанием для полного перехода на кодирование с битрейтом 320kbs.
Более низкие битрейты, несмотря на их популярность, не дают возможности обеспечить надлежащее качество кодирования, что незаслуженно обеспечило mp3 дурную славу любительского формата. На самом деле, хотя и 256kbs, и даже 320kbs тоже не дают возможности осуществить полностью прозрачное кодирование, но отличия от CD Audio, по которому кодируется тестовый MP3, сравнимы с отличиями самого CD Audio от исходного аналогового сигнала, из которого он был получен путем оцифровки. То есть потери, конечно, есть, но несущественны с точки зрения того, кому качество CD Audio представляется достаточным. Фактически, их обнаружение обычно является задачей нетривиальной на аппаратуре класса Hi-Fi.
Настоящее и будущее MP3
MP3 на сегодня имеет два огромных преимущества перед другими доступными форматами его рода. Одно из них состоит в том, что ни про один из существующих подобных форматов нельзя пока сказать, что он полностью гарантирует устойчивое сохранение качества звучания на достаточно высоких битрейтах, кроме MP3, который достойно выдержал проверку временем. Пожалуй, единственный известные мне конкурент в этом плане — последние варианты формата ATRAC, используемый в минидисках.
Для MP3 также написано множество удобного программного обеспечения. Этот факт отражает второе, не менее важное преимущество — на ближайшие годы, а возможно, и на все десятилетие, MP3 стал стандартом де факто, настолько много сделано в него вложений пользующимися им сторонами, в том числе и цифровыми радиостанциями.
MP3 довольно долго оставался неизвестным, но несколько лет назад начался взрывной рост его популярности, столь же быстро начали появляться залежи нелегальных MP3 файлов. Сейчас налажено производство аппаратных MP3 плееров, а карманных, и для автомобилей. Таким образом, MP3 стал первым массово признанным форматом хранения аудио после CD-Audio.
Несмотря на то, что MP3 появился достаточно давно, более новые форматы, претендующие на его место, появившиеся к настоящему моменту, все на поверку оказались любительскими. Они могут быть или не быть хороши по сравнению с MP3 на низких битрейтах, это зависит от трека и особенностей слуха конкретного человека, но на место MP3 256kbs… 320kbs претендовать не способны.
Возможно, «монополия» MP3 в сфере компьютеров на низких битрейтах все же будет отчасти сломлена новым форматом от Microsoft — WMA. Но пока рано говорить об этом. С другой стороны, появление Microsoft на данном рынке со столь сильной разработкой означает быстрое отсеивание оказавшимися неудачными ветвей AAC и VQF. Впрочем, остается надежда, что AAC еще будет доработан.
В завершение упомяну один адрес, по которому расположился проект по созданию свободного от патентных ограничений кодера — www.sulaco.org/mp3/free.html. Правда, патентов вокруг MP3 накопилось столько, что, думаю, проект этот завершен не будет.
(Впрочем, если говорить о свободных от патентах аудиокодерах вообще, то существует и более реальный проект, не являющийся проектом MP3 кодера. Он расположен по адресу www.xiph.org.)
Описание процесса кодирования
Подготовка к кодированию. Фреймовая структура
Перед кодированием исходный сигнал разбивается на участки, называемые фреймами, каждый из которых кодируется отдельно и помещается к конечном файле независимо от других. Последовательность воспроизведения определяется порядком расположения фреймов. Каждый фрейм может кодироваться с разными параметрами. Информация о них содержится в заголовке фрейма.
Начало кодирования
Кодирование начинается с того, что исходный сигнал с помощью фильтров разделяется на несколько, представляющих отдельные частотные диапазоны, сумма которых эквивалентна исходному сигналу.
Работа психоакустической модели
Для каждого диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если она превышает мощность сигнала интересующего диапазона или мощность сигнала в нем оказывается ниже определенного опытным путем порога слышимости, то для данного фрейма данный диапазон сигнала не кодируется.
Для оставшихся данных для каждого диапазона определяется, сколькими битами на сэмпл мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта. При этом учитывается, что потеря одного бита ведет к внесению шума квантования величиной порядка 6 dB.
Завершение кодирования
После завершения работы психоакустической модели формируется итоговый поток, который дополнительно кодируется по Хаффману, на этом кодирование завершается.
Замечание
На практике схема несколько сложнее. Например, необходимо согласовываться с требованиями битрейта. В зависимости от кодера это приводит при повышении битрейта к разного рода релаксациям при отборе сохраняемой части исходного сигнала, а при понижении — наоборот, к ужесточению критериев.
Способы кодирования стерео сигнала
В рамках MP3 кодирование стереосигнала допустимо четырьмя различными методами:
Dual Channel — Каждый канал получает ровно половину потока и кодируется отдельно как моно сигнал. Рекомендуется главным образом в случаях, когда разные каналы содержат принципиально разный сигнал — скажем, текст на разных языках.
Выставляется в некоторых кодерах по требованию.
Stereo — Каждый канал кодируется отдельно, но кодер может принять решение отдать одному каналу больше места, чем другому. Это может быть полезно в том случае, когда после отброса части сигнала, лежащей ниже порога слышимости или полностью маскируемой, оказалось, что код не полностью заполняет выделенный для данного канала объем, и кодер имеет возможность использовать это место для кодирования другого канала. В документации к mp3enc замечено, что этим, например, избегается кодирование «тишины» в одном канале, когда в другом есть сигнал.
Данный режим выставлен по умолчанию в большинстве ISO-based кодеров, а также используется продукцией FhG IIS на битрейтах выше 192kbs. Применим и на более низких битрейтах порядка 128kbs… 160kbs.