6.5.1. Кодирование частотной областиПервый шаг кодирования звуковых сэмплов заключается в преобразовании их в частотную область. Это делается с помощью банка многофазных фильтров, который отображает сэмплы в 32 частотные полосы равной ширины. Используемые фильтры обеспечивают быстрое преобразование с хорошим временным и частотным разрешением. При этом разработчикам пришлось пойти на три компромисса. Первый компромисс - это равенство ширины всех 32 частотных подполос. Это упрощает фильтры, но сильно контрастирует с особенностями слухового восприятия, которое зависит от частоты звука. В идеале было бы лучше разделить частоты на критические полосы, обсуждавшиеся в § 6.3. Эти полосы построены так, что воспринимаемая громкость данного звука и его слышимость в присутствии другого, маскирующего звука, является совместимой в пределах данной критической полосы, но различается между полосами. К сожалению, каждая из низкочастотных полос перекрывает несколько критических полос, в результате алгоритм назначения битов не может оптимизировать число присваиваемых битов квантованному сигналу в пределах этих подполос. Когда несколько критических полос накрываются подполосой Второй компромисс связан с обращением банка фильтров, который используется декодером. Исходное преобразование из временной области в частотную теряет часть информации (даже до квантования). Следовательно декодер получает данные, которые немного хуже; он делает обратное преобразование из частотной области во временную, и тем самым вносит еще большее искажение. Поэтому разработчики этих двух банков фильтров (для прямого и обратного преобразований) постарались минимизировать эту потерю. Третий компромисс относится к конкретным фильтрам. Смежные фильтры должны идеально пропускать разные диапазоны частот. На практике они имеют существенное частотное перекрытие. Звук, состоящий из одного чистого тона, может попасть в два фильтра и породить сигналы (которые потом будут квантоваться) в две из 32 подполосы вместо одной. Многофазный банк фильтров использует (помимо других промежуточных структур данных) буфер
Рис. 6.9. Многофазный банк фильтров. Алгоритм читает очередные 32 сэмпла из входного файла и заносит их в буфер, одновременно сдвигая его. Буфер всегда содержит 512 самых последних сэмплов. Сигналы
Здесь
Отметим, что выражение в круглых скобках уравнения (6.3) не зависит от Рис. 6.10 графически иллюстрирует работу кодера и декодера при выполнении шага многофазного фильтрования. Часть (а) рисунка показывает буфер Часть (b) рисунка показывает операции, совершаемые декодером. Группа из 32 сигналов подполосы умножается на матрицу IMDCT с компонентами
Сигналы подполос, вычисленные на стадии фильтрования, затем собираются в кадры, содержащие по 1152 сигнала. После этого сигналы масштабируются и квантуются на основе психоакустической модели, используемой кодером, с применением алгоритма назначения битов. Квантованные величины, вместе с коэффициентами масштабирования и информацией о квантовании (число уровней квантования в каждой подполосе) записываются в сжатый файл (здесь также используется кодирование Хаффмана). Рис. 6.10. Кодер звука MPEG (а) и его декодер (b).
Рис. 6.11. Реконструкция аудиосэмплов.
|