Кунегин С.В. Формат представления звуковых данных MP3.

Ссылка на источник: http://kunegin.narod.ru/ref/mp3/process5.htm

Описание процесса кодирования.

Подготовка к кодированию. Кадровая структура

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

Начало кодирования

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

Работа психоакустической модели. Часть первая

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

Например, многие кодеры при низких значениях скорости потока пренебрегают диапазоном выше 15--16кГц в силу того, что человеческое ухо этот диапазон практически не улавливает. Однако при отсутствии данных частот (свыше 15--16кГц) у слушателя возникает ощущение, что "что-то не так", хотя он и не может понять, что именно.

В качестве иллюстрации приведу частотно-временную характеристику работы кодера BladeEnc (кстати, о тестировании кодеров можно прочитать ЗДЕСЬ). Характеристика снималась с закодированного этим кодером участка музыкального произведения в формате mp3. Применялись два значения скорости потока: 256кбит/с и 128кбит/с.

Частотно-временная характеристика работы BladeEnc при 256кбит/с

Рис.1. Частотно-временная характеристика работы BladeEnc при 256кбит/с

Частотно-временная характеристика работы BladeEnc при 128кбит/с

Рис.2. Частотно-временная характеристика работы BladeEnc при 128кбит/с

Как видно из рис.1 и рис.2 при 128кбит/с (см. рис.2) происходит срез частот выше 16.5кГц. При 256кбит/с (см. рис.1) такого не наблюдается.

Работа психоакустической модели. Часть вторая

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

Завершение кодирования

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

Замечание

На практике схема несколько сложнее. Во-первых, необходимо согласовываться с требованиями скорости потока. В зависимости от кодера это приводит при повышении битрейта к разного рода релаксациям при отборе сохраняемой части исходного сигнала, а при понижении -- наоборот, к ужесточению критериев. То есть на высоких скоростях потока (например, 256 или 320кбит/с) появляется возможность сохранить больше звуковой информации, чем на низких. Однако даже после обработки с помощью психоакустической модели оставшаяся аудиоинформация достаточно объемна, поэтому и приходится идти на потери. Во-вторых, после каждого изменения исходного сигнала (отброса сигнала какого-то одного диапазона) величина маскирующего эффекта меняется, и, проводя отброс в разной последовательности, мы можем получать сильно отличающиеся результаты. Этот момент сильно замедляет работу кодеров. Как вы уже, наверное, заметили, алгоритм кодирования не определен четко. Таким образом различные кодеры кодируют сигнал по-разному, и поэтому у каждого кодера могут быть как свои достоинства, так и свои недостатки.