МР3 изнутри: психофизиология звука
Как уже говорилось, MP3 является потоковым форматом. Это означает, что звуковая информация при кодировании разбивается на равные по продолжительности участки, которые называются фреймами. Все фреймы взаимно независимы. Каждый из этих фреймов кодируется отдельно со своими параметрами и имеет заголовок, в котором эти параметры описаны. При воспроизведении последовательность декодированных фреймов и порождает непрерывное звучание записанного звука.
Какие преимущества дает данный подход? Во-первых, возможность перемотки, так как возможен легкий переход к произвольному фрейму, и воспроизведение звука именно с этого места. Во-вторых, именно эта структурная особенность и делает MP3 по настоящему сетевым форматом. Загрузив первые несколько фреймов в оперативную память или дисковый кэш, проигрыватель начинает их воспроизводить, при этом одновременно подгружая новые фреймы, чем достигается непрерывность воспроизведения. И наконец, если вы не смогли целиком скачать MP3 файл из сети Internet, то ничего страшного, музыку все равно можно будет слушать, просто проигрыватель дойдет до того места, на котором оборвалась связь и остановится.
Так вот вернемся к нашим фреймам. При высоком качестве MP3, а это bitrate ~ 320 кbs, для кодирования фреймов применяются только математические алгоритмы сжатия. Качество при этом совершенно не страдает, но и размер уменьшается всего в четыре раза, то есть коэффициент сжатия такой, какой бы дал обычный архиватор; именно поэтому файлы формата МР3 практически не ужимаются обычными архиваторами. При уменьшении полосы пропускания (bitrate) до 256 kbs и ниже, в дело вступают те самые алгоритмы удаления «ненужных» звуков, которые основаны на особенностях восприятия звука человеческим ухом, так называемая «психоакустическая модель». Процессы удаления «ненужных» звуков называются квантованием. Чем меньше bitrate, тем жестче идет квантование.
По каким же критериям оценивается «нужность» и «ненужность» звуков? Подавляющее число кодеков выбрасывает звуки, которые считаются выходящими за порог слышимости человека. При этом за значение порога, так сказать de fakto, принимается величина равная 16kHz. Несмотря на то, что этот порог признан азбучной величиной и вписан во все учебники по физике, этот подход неверен. Люди весьма разнообразны по своим физиологическим особенностям. Кроме того, нужно учитывать, что у молодежи слуховой порог гораздо выше, чем у пожилых людей, и запросто может превышать эту среднестатистическую величину. Так же многое зависит от интенсивности сигнала. Следовательно, удаление частот выше 16kHz абсолютно неприемлемо для высоких битрейтов претендующих на CD качество, но вполне уместно для низких битрейтов, где качество приносится в жертву размеру.
Другим критерием, по которому оценивается «ненужность» звука, является условие основанное на такой особенности человеческого слуха, как неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, причем этот уровень различен для разных частотных диапазонов. При использовании психоакустической модели кодирования MP3 CODEC автоматически выбрасывает маломощные, неслышимые частоты. К сожалению, опять таки, люди не одинаковы и те, кто в состоянии различить именно эти частоты, часто жалуются на потерю качества звучания при кодировании, тогда как среднестатистическое большинство этого не замечает.
Но самой главной особенностью психоакустической модели кодирования MP3 является так называемый эффект маскирования. Именно благодаря этому эффекту удается так сильно сжимать исходные аудиоданные. Суть этого эффекта в том, что слабый сигнал одного диапазона частот зачастую маскируется более мощным сигналом соседнего диапазона, если он присутствует в аудиозаписи, или мощным сигналом, предыдущего фрейма. Этот сильный сигнал вызывает временное понижение чувствительности уха к сигналу текущего фрейма. По сути, имеет место явление «временного оглушения». Для каждого звукового диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если маскирующий сигнал превышает мощность сигнала текущего диапазона, то данный диапазон сигнала не кодируется, что позволяет психоакустической модели удалить часть данных из этого фрейма. Для оставшихся данных каждого диапазона определяется, сколькими битами на фрейм мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта. Несомненно, все отмечали, что звук, кодированный при низких битрейтах, отличается крайней нечеткостью и глухостью. Это происходит из-за того, что при потере одного бита информации в общее звучания вносится шум квантования величиной порядка 6 dB.
Все эти ухищрения суммарно называются адаптивным кодированием. Используя тот факт, что подавляющее большинство людей не обладают идеальным слухом, технология адаптивного кодирования позволяет существенно уменьшить размер кодируемого файла выбросив наименее значимые с точки зрения слухового восприятия детали звучания.
Надо заметить, что в случае низких битрейтов кодирование начинается с адаптивного кодирования. После дополнительного квантования формируется итоговый поток, который затем и сжимается по алгоритму Хаффмана (аналогично алгоритму RAR).
Чем замечателен этот формат, так это тем, что степень сжатия, то есть, соотношение размер/качество полностью во власти пользователя. Ширина потока (bitrate) способна изменяться от наибольшего значения в 320kbs, до 64 kbs и ниже, соответственно варьируется и размер.
С технологиями сжатия используемых в MP3 CODEC мы ознакомились, настало время поговорить о разных битрейтах.