СПОСОБ ДВОИЧНОГО КОДИРОВАНИЯ ПОКАЗАТЕЛЕЙ КВАНТОВАНИЯ ОГИБАЮЩЕЙ СИГНАЛА, СПОСОБ ДЕКОДИРОВАНИЯ ОГИБАЮЩЕЙ СИГНАЛА И СООТВЕТСТВУЮЩИЕ МОДУЛИ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ
METHOD FOR BINARY ENCODING QUANTISATION INDICES OF SIGNAL ENVELOPE, METHOD OF DECODING SIGNAL ENVELOPE AND CORRESPONDING CODING AND DECODING MODULES

Изобретение относится к способу двоичного кодирования показателей квантования, определяющих огибающую сигнала. Оно также относится к модулю двоичного кодирования, предназначенному для воплощения этого способа. Кроме того, оно относится к способу и модулю декодирования огибающей, кодированной с использованием способа двоичного кодирования и модулю двоичного кодирования в соответствии с изобретением.
Изобретение, в частности, предпочтительно, применяется для передачи и сохранения цифровых сигналов, таких как сигналы речи, музыки и т.д. в диапазоне звуковой частоты. Способ кодирования и модуль кодирования в соответствии с изобретением, в частности, адаптированы для преобразования кодирования сигналов звуковой частоты.
Существуют различные технологии преобразования в цифровую форму и сжатия сигналов речи, музыки и т.д. в диапазоне звуковой частоты. При этом наиболее широко используются следующие способы:
- способы "кодирования формы сигнала", такие как кодирование РСМ (ИКМ, импульсно-кодовая модуляция) и ADPCM (АДИКМ, адаптивная дифференциальная импульсно-кодовая модуляция);
- способы "параметрического кодирования анализа-синтеза", такие как кодирование с использованием линейного прогнозирования с возбуждением кодом (CELP, ЛПВК);
- способы "кодирования подполосы или перцептуального преобразования".
Эти классические методики кодирования сигналов звуковой частоты описаны в публикации, W.B. Kleijn и К.К. Paliwal, Editors, "Speech Coding and Synthesis", Elsevier, 1995.
Как обозначено выше, изобретение, по существу, относится к технологии кодирования с преобразованием.
В Рекомендациях ITU-T G.722.1, "Coding at 24 kbit/s and 32 kbit/s for hands-free operation in systems with low frame loss", September 1999, описан кодер с преобразованием для сжатия речевых или музыкальных аудиосигналов в полосе частот от 50 Герц (Гц) до 7000 Гц, которая называется широкой полосой, с частотой выборки 16 килогерц (кГц) и с частотой передачи в битах 24 килобит в секунду (кбит/сек) или 32 кбит/сек. На фигуре 1 показана соответствующая схема кодирования, в том виде, как она установлена в упомянутых выше Рекомендациях.
Как показано на чертеже, кодер G. 722.1 построен на основе модулированного соединенного с перекрытием преобразования (MLT, МПП). Длина фрейма составляет 20 миллисекунд (мс), и фрейм содержит N=320 выборок.
Преобразование МПП, модулированное преобразование с перекрытием Мальвара (Malvar), представляет собой вариант MDCT (МДКП, модифицированного дискретного косинусного преобразования).
На фигуре 2 представлена схема принципа МДКП.
Преобразование X(m) МДКП сигнала х(n) длиной L=2N, содержащего выборки текущего фрейма и будущего фрейма, определяется следующим образом, где m=0,…,N-1:
В приведенной выше формуле член, содержащий синус, соответствует применению финитной взвешивающей функции, показанной на фигуре 2. Расчет X(m), поэтому, соответствует проекции x(n) на локальное косинусное основание с синусоидальным взвешиванием с использованием финитной функции. Существуют быстрые алгоритмы расчета МДКП (см., например, статью авторов Р. Duhamel, Y. Mahieux, J.P. Petit, "A fast algorithm for the implementation of filter banks based on time domain aliasing cancellation", ICASSP, vol. 3, p.2209-2212, 1991).
Для расчета спектральной огибающей преобразования значения X (0),…,X(n-1), получаемые с помощью МДКП, группируют на 16 поддиапазонов под 20 коэффициентов. Только первые 14 поддиапазонов (14 × 20 = 280 коэффициентов) квантуют и кодируют в соответствии с частотным диапазоном 0-7000 Гц, при этом диапазон 7000-8000 (40 коэффициентов) игнорируют.
2
Значение спектральной огибающей для j-ого поддиапазона определяют в логарифмической области следующим образом, где j = 0,…, 13, член ∈ используется для log (0):
Поэтому такая огибающая соответствует среднеквадратическому значению на поддиапазон.
Спектральную огибающую затем квантуют следующим образом:
- Вначале набор значений
-
-
-
-
logrms = {logrms (0) logrms (1)… logrms (13)}
округляют до:
rms_index={rms_index (0) rms_index(1)… rms_index(13)},
где показатели rms_index (j) округляют до ближайшего целого числа к log_rms (j) × 0,5 для j=0,…,13.
10
0,5
Этап квантования поэтому составляет 20 × log (2)=3,0103… децибел. Полученные значения ограничивают:
3 ≤rms_index (0) ≤33 (динамический диапазон 31 × 3,01 = 93,31 децибел) для j=0;
и
-6 ≤rms_index (j) ≤33 (динамический диапазон 40 × 3,01 = 120,4 децибел) для j=1,…,13.
Значения rms_index для последних 13 полос затем преобразуют в дифференциальные показатели путем расчета разности между среднеквадратическими значениями спектральной огибающей одного поддиапазона и предыдущего поддиапазона:
-
diffrms_index(j)=rms_index(j)-rms_index(j-1) для j=1,…,13.
Эти дифференциальные показатели также связывают ограничивают:
-
-12≤diffrms_index(j)≤11; для j=1,…,13.
Ниже выражение "диапазон показателей квантования" относится к диапазону показателей, которые могут быть представлены двоичным кодированием. В кодере G.722.1 диапазон дифференциальных показателей ограничен диапазоном [-11, 12]. Таким образом, говорят, что диапазон кодера G.722.1 "достаточен" для кодирования разности между rms_index (j) и rms_index (j-1), если
-12 ≤rms_index (j) - rms_index (j-1) ≤11.
В противном случае говорят, что диапазон кодера G.722.1 "недостаточен". Таким образом, кодирование спектральной огибающей достигает насыщения, как только среднеквадратическая разность между двумя поддиапазонами превышает 12×3,01=36,12 децибел (дБ).
Показатель квантования rms_index (0) преобразуют в кодере G.722.1 по 5 битам. Показатели дифференциального квантования diff_rms_index (j) (j=1,…,13) кодируют с помощью кодирования Хаффмана, при этом каждая переменная имеет свою собственную таблицу Хаффмана. Такое кодирование, поэтому, представляет собой энтропийное кодирование переменной длины, принцип которого состоит в том, что назначают код, который является коротким по количеству битов, для наиболее вероятных значений дифференциального показателя, при этом менее вероятные значения показателя дифференциального квантования имеют более длинный код. Такой тип кодирования является очень эффективным по средней скорости передачи битов, с учетом того, что общее количество используемых битов для кодирования спектральной огибающей в G.722.1 в среднем составляет приблизительно 50 бит. Однако, как будет ясно ниже, сценарий наихудшего случая выходит из-под контроля.
В таблице на фигуре 3 для каждого поддиапазона определена длина самого короткого кода (Min), и, таким образом, длина для наиболее вероятной величины (наилучший случай), и длина для самого длинного кода (Мах), и, таким образом, для наименее вероятной величины (наихудший случай). Следует отметить, что в этой таблице первый поддиапазон (j=0) имеет фиксированную длину 5 битов, в отличие от последующих поддиапазонов.
При таких значениях длины кода можно видеть, что кодирование в лучшем случае для спектральной огибающей требуется 39 битов (1,95 кбит/сек) и что в теоретически худшем случае требуется 190 битов (9,5 кбит/сек).
В кодере G.722.1 биты, остающиеся после кодирования показателей квантования спектральной огибающей, затем распределяют для кодирования коэффициентов МДКП, нормализованных по квантованной огибающей. Назначение битов в поддиапазонах осуществляется с помощью процесса категоризации, который не относится к настоящему изобретению и не описан здесь подробно. В остальном процесс G.722.1 не описан здесь подробно по той же причине.
Кодирование спектральной огибающей МДКП в кодере G.722.1 имеет ряд недостатков.
Как показано выше, кодирование с переменной длиной в худшем случае может привести к использованию очень большого количества битов для кодирования спектральной огибающей. Кроме того, выше также указано, что риск насыщения для некоторых сигналов с высоким спектральным несоответствием, например для изолированных синусоид, дифференциальное кодирование, не работает, поскольку диапазон ±36,12 децибел не может представить весь динамический диапазон разностей между скв (rms, среднеквадратическими) значениями.
Таким образом, одна техническая проблема, решаемая предметом настоящего изобретения, состоит в предложении способа двоичного кодирования показателей квантования, определяющих огибающую сигнала, который включает в себя этап кодирования с переменной длиной и позволяет свести к минимуму длину кодирования до ограниченного количества битов, даже в худшем случае.
Кроме того, другая проблема, решаемая изобретением, относится к управлению риском насыщения для сигналов, имеющих высокое скв значение, таких как синусоиды.
В соответствии с настоящим изобретением решение этой технической проблемы состоит в том, что первый режим кодирования включает в себя детектирование насыщенности огибающей, и упомянутый способ также включает в себя второй режим кодирования, выполняемый параллельно с первым режимом кодирования, и выбор одного из двух режимов кодирования как функцию критерия длины кода и результата насыщения огибающей детектирования в первом режиме кодирования.
Таким образом, способ в соответствии с изобретением основан на конкуренции двух режимов кодирования, один или каждый из которых имеет переменную длину, таким образом, чтобы обеспечить возможность выбора режима, позволяющего получить меньшее количество битов кодирования, в частности, в наихудшем случае, то есть, для менее вероятных скв значений.
Кроме того, если один из режимов кодирования приводит к насыщению скв значения поддиапазона, другой режим "принудительно" принимает приоритет, даже если это ведет к увеличению длины кодирования.
В предпочтительном варианте воплощения выбирают второй режим кодирования, если удовлетворяется одно или больше из следующих условий:
- длина кода второго режима кодирования меньше, чем длина кода первого режима кодирования;
- детектирование насыщения огибающей первого режима кодирования обозначает насыщение.
Изобретение также направлено на модуль для двоичного кодирования огибающей сигнала, содержащий модуль кодирования первого режима с переменной длиной, который характеризуется тем, что упомянутый модуль кодирования первого режима включает в себя детектор насыщения огибающей, и упомянутый модуль кодирования также включает в себя второй модуль для кодирования второго режима, параллельно с модулем для кодирования первого режима, и селектор режима для поддержания одного из двух режимов кодирования, как функции критерия длины кода и по результату работы детектора насыщения огибающей.
Кроме того, для выбора наиболее соответствующего кода, селектор режима выполнен с возможностью генерировать показатель поддерживаемого режима кодирования для обозначения для расположенного далее декодера, какой режим декодирования он должен применять.
Изобретение, кроме того, направлено на способ декодирования огибающей сигнала, причем упомянутая огибающая кодирована с помощью способа двоичного кодирования в соответствии с изобретением, который, в частности, характеризуется тем, что упомянутый способ декодирования включает в себя этап детектирования упомянутого выбранного показателя режима кодирования и этап декодирования в соответствии с выбранным режимом кодирования.
Изобретение дополнительно направлено на модуль декодирования огибающей сигнала, причем упомянутая огибающая кодирована модулем двоичного кодирования в соответствии с изобретением, упомянутый модуль декодирования содержит модуль декодирования, предназначенный для декодирования первого режима переменной длины, в частности, характеризуемый тем, что упомянутый модуль декодирования также включает в себя второй модуль декодирования, предназначенный для декодирования второго режима параллельно с упомянутым модулем декодирования, для декодирования первого режима с переменной длиной, и детектор режима, выполненный с возможностью детектировать упомянутый показатель режима кодирования и активировать модуль декодирования, соответствующий детектированному показателю.
Изобретение, наконец, направлено на программу, содержащую инструкции, сохраненные на считываемом компьютером носителе информации, для выполнения этапа способа изобретения.
Следующее описание, со ссылкой на приложенные чертежи, которые представлены в качестве не ограничивающего примера, ясно поясняет, в чем состоит изобретение, и как его следует использовать на практике.
- На фигуре 1 показана схема кодера, в соответствии с Рекомендациями G.722.1;
- на фигуре 2 показана схема, представляющая преобразование типа МДКП;
- на фигуре 3 показана таблица минимальной длины (Min) и максимальной длины (Мах) в битах кодов, в каждом из поддиапазонов при кодировании Хаффмана для кодера по фигуре 1;
- на фигуре 4 показана схема иерархического аудиокодера, включающего в себя кодер МДКП, воплощающий изобретение;
- на фигуре 5 показана подробная схема кодера МДКП по фигуре 4;
- на фигуре 6 показана схема модуля кодирования спектральной огибающей кодера МДКП по фигуре 5;
- на фигуре 7 представлена таблица (а), определяющая разделение спектра МДКП на 18 подполос, и таблица (b), предоставляющая размер подполос;
- на фигуре 8 показана таблица примера кодов Хаффмана для представления дифференциальных показателей;
- на фигуре 9 показана схема иерархического аудиодекодера, включающего в себя декодер МДКП, воплощающий изобретение;
- на фигуре 10 показана подробная схема декодера МДКП по фигуре 9;
- на фигуре 11 показана схема модуля декодирования спектральной огибающей декодера МДКП по фигуре 10.
Изобретение будет описано ниже в контексте определенного типа иерархического аудиокодера, работающего со скоростью от 8 кбит/сек до 32 кбит/сек. Однако следует ясно понимать, что способы и модули в соответствии с изобретением для двоичного кодирования и декодирования спектральных огибающих не ограничиваются кодером этого типа и их можно применять к любой форме двоичного кодирования спектральной огибающей, определяющей энергию в подполосах сигнала.
Как показано на фигуре 4, входной сигнал широкополосного иерархического кодера, с выборкой 16 кГц, вначале разделяют на две подполосы, используя квадратурные зеркальные фильтры (QMF, КЗФ). Нижнюю полосу, от 0 до 4000 Гц, получают в результате фильтрации 300 низкой частоты и прореживания 301, и высокую полосу, от 4000 до 8000 Гц, получают с помощью фильтрации 302 высокой частоты и прореживания 303. В предпочтительном варианте воплощения фильтр 300 и фильтр 302 имеют длину 64 и выполнены, как описано в статье J. Johnston, "A filter family designed for use in quadrature mirror filter banks", ICASSP, vol. 5, p.291-294, 1980.
NB
lo
lo
Нижнюю полосу подвергают предварительной обработке фильтром 304 высокой частоты, который устраняет компоненты ниже 50 Гц перед кодированием 305 ЛПВК в узкой полосе (от 50 Гц до 4000 Гц). При фильтрации высокой частоты учитывают тот факт, что широкая полоса определена как полоса от 50 Гц до 7000 Гц. В описанном варианте воплощения, используемая форма кодирования 305 ЛПВК узкой полосы соответствует каскадному кодированию ЛПВК, содержащему в качестве первого этапа модифицированное кодирование G.729 (Рекомендации ITU-T G.729, "Coding of Speech at 8 kbit/s using Conjugate Structure Algebraic Code Excited Linear Prediction (CS-АЛПВК)", March 1996) без фильтра предварительной обработки, и в качестве второго этапа использует дополнительный фиксированный словарь. Сигнал ошибки кодирования ЛПВК рассчитывают с помощью модуля 306 вычитания и затем выполняют перцептуальное взвешивание с помощью фильтра 307 W(z), для получения сигнала x. Этот сигнал анализируют с помощью модифицированного дискретного косинусного преобразования (МДКП) 308, для получения дискретного преобразованного спектра X.
hi
hi
hi
hi
Ступенчатость в высокой полосе вначале устраняют 309, для компенсации ступенчатости, связанной с фильтром 302Н, КЗФ, после чего высокую полосу подвергают предварительной обработке с помощью фильтра 310 низкой частоты для устранения компонентов в диапазоне от 7000 Гц до 8000 Гц в исходном сигнале. Полученный в результате сигнал x подвергают преобразованию 311 МДКП для получения спектра Xдискретного преобразования. Расширение 31 полосы выполняют на основе х и X.
lo
hi
lo
hi
lo
hi
Как пояснялось выше со ссылкой на фиг.2, сигналы x и x разделены на фреймы по N выборок, и преобразование МДКП длиной L=2N анализирует текущий и будущий фреймы. В предпочтительном варианте воплощения х и x представляют собой узкополосные сигналы, полученный с выборкой с частотой 8 кГц, и N=160 (20 мс). Преобразование X и X МДКП, поэтому, включают в себя N=160 коэффициентов, и каждый коэффициент затем представляет полосу частот 4000/160=25 Гц. В предпочтительном варианте воплощения преобразование МДКП воплощено с помощью алгоритма, описанного в Р. Duhamel, Y. Mahieux, J.P. Petit, "A fast algorithm for the implementation of filter banks based on 'time domain aliasing cancellation'", ICASSP, vol. 3, p.2209-2212, 1991.
lo
hi
Спектры X и X, МДКП низкой полосы и верхней полосы кодируют в модуле 313 кодирования с преобразованием. Более конкретно, изобретение относится к этому кодеру.
Потоки битов, генерируемые модулями 305, 312 и 313 кодирования, мультиплексируют и структурируют с получением иерархического потока битов, в мультиплексоре 314. Кодирование осуществляют по 20 мс блокам выборок (фреймов), то есть по блокам из 320 выборок. Скорость следования битов кодирования составляет 8 кбит/сек, 12 кбит/сек, 14 кбит/сек - 32 кбит/сек с шагом 2 кбит/сек.
Кодер 313 МДКП подробно описан со ссылкой на фиг.5.
Низкополосное и высокополосное преобразование МДКП вначале комбинируют в блоке 400 слияния. Коэффициенты
lo
lo
lo
lo
Х={Х(0)Х(1)…Х(N-1)}и
hi
hi
hi
hi
X={X(0)X(1)…X(N-1)}
поэтому группируют в один вектор для формирования дискретного преобразованного спектра всего диапазона:
m=0…L-1
lo
lo
lo
hi
hi
hi
X={X(m)}={X(0)X(1)…X(N-1)X(0)X(1)…X(N-1)}.
Коэффициенты X(0),…,X (l-1) МДКП для X группируют по K поддиапазонам. Разделение на поддиапазоны может быть описано таблицей tabis={tabis(0)tabis(1)…tabis(K)}K+1 элементов, определяющих границы поддиапазонов. Первый поддиапазон затем включает в себя коэффициенты X(tabis (0)) - X(tabis (1)-1), второй поддипазон включает в себя коэффициенты X (tabis (1)) -X (tabis (2)-1) и т.д.
Для предпочтительного варианта воплощения K=18, соответствующее разделение определено в таблице (а) на фигуре 7.
Спектральную огибающую log_rms амплитуды, описывающую распределение энергии по подполосам, рассчитывают 401 и затем кодируют 402 с помощью кодера спектральной огибающей, для получения показателей rms_index. Биты назначают с 403 для каждой подполосы и квантование 404 сферического вектора применяют к спектру X. В предпочтительном варианте воплощения назначение битов соответствует способу, описанному в статье Y. Mahieux, J.P. Petit, "Transform coding of audio signals at 64 kbit/s", IEEE GLOBECOM, vol.1, p.518-522, 1990, и сферическое векторное квантование выполняют, как описано в Международной заявке PCT/FR04/00219.
Биты, полученные в результате кодирования спектральной огибающей, и вектор квантования коэффициентов МДКП обрабатывают с помощью мультиплексора 314.
Расчеты кодирования спектральной огибающей, более конкретно, описаны ниже.
-
Спектральную огибающую logrms в логарифмической области получают для j-ого поддиапазона следующим образом:
2
где j=0,…,K-1 и nb_соeff(j)=tabis (j+1)-tabis(j) представляет собой количество коэффициентов в j-ом поддиапазоне. Член ∈ используется для исключения log(0). Спектральная огибающая соответствует скв значению в децибелах j-ого поддиапазона; поэтому она представляет собой огибающую амплитуды.
-24
Размер nb_соeff(j) поддиапазонов в предпочтительном варианте воплощения определяют по таблице (b) на фигуре 7. Кроме того, ∈=2, что подразумевает log_rms (j) ≥-12.
Кодирование спектральной огибающей с помощью кодера 402 показано на фигуре 6.
Огибающую log_rms в логарифмической области вначале округляют до rms_index={rms_index (0) rms_index (1)…rms_index (k-1)}, используя однородное квантование 500. Такое квантование определятся просто как:
rms_index (j)=округлено до ближайшего целого числа log_rms(j) х 0,5,
если rms_index (j)<-11, rms_index (j)=-11,
если rms_index(j)>+20, rms_index(j)=+20,
10
0,5
Спектральную огибающую затем кодируют с однородным логарифмическим шагом 20 х log(2)=3,0103,…дБ. Полученный в результате вектор rms_index содержит целочисленные показатели от -11 до +20 (то есть, 32 возможных значения). Спектральная огибающую поэтому представляют с динамическим диапазоном порядка 32 × 3,01=96,31дБ.
-
Квантованную огибающую rms_index затем разделяют на два подвектора с помощью блока 501: один подвектор rms_index_bb={rms_index (0) rms_index(1)…rms_index (K_BB-1} для следующей огибающей низкой полосы пропускания и другой вектор rms_index_bh={rms_index (K_BВ)…rms_index (K-1)} для огибающей высокочастотной полосы. В предпочтительном варианте воплощения, K=18 и KBB=10; другими словами, первые 10 поддиапазонов находятся в низкочастотной полосе (от 0 до 4000 Гц), и последние 8 находятся в высокочастотной полосе (от 4000 Гц до 7000 Гц).
Огибающую низкочастотной полосы rms_index_bb преобразуют в двоичную форму с помощью двух модулей 502 и 503 кодирования, работающих конкурентно между собой, а именно дифференциальный модуль 501 кодирования с переменной длиной и модуль 503 кодирования с фиксированной длиной ("равновероятностный"). В предпочтительном варианте воплощения модуль 502 представляет собой модуль дифференциального кодирования Хаффмана, и модуль 503 представляет собой модуль натурального двоичного кодирования.
Модуль 502 дифференциального кодирования Хаффмана включает в себя два этапа кодирования, описанных подробно ниже:
- расчет дифференциальных показателей.
Показатели дифференциального квантования diff_index (1) diff_index(2)…diff_indexс (K_BB-1) определяются следующим образом:
satur_bb=0
diff_index(j)=rms_index (j) - rms_index (j-1),
если (diff_index (j)<-12) или (diff_index (j)>+12), то satur_bb=1. Двоичный показатель satur_bb используется для детектирования ситуации, в которой diff_index (j) не находится в диапазоне [-12,+12]. Если satur_bb=0, все элементы находятся в этом диапазоне, и диапазон индекса дифференциального кодирования Хаффмана достаточен; в противном случае, когда один из этих элементов меньше, чем -12, или больше, чем +12, упомянутый диапазон показателей тогда недостаточен. Индикатор satur_bb поэтому используется для детектирования насыщения спектральной огибающей с использованием дифференциального кодирования Хаффмана в низкочастотной полосе. Если насыщение детектируется, режим кодирования изменяется на режим кодирования с фиксированной длиной (равновероятностный). Конструктивно диапазон показателей равновероятностного режима всегда является достаточным.
- двоичное преобразование первого показателя и кодирование Хаффмана дифференциальных показателей:
- показатель квантования rms_index (0) имеет целочисленное значение от -11 до +20.
Он кодируется непосредственно в двоичную форму с фиксированной длиной 5 битов. Показатели дифференциального квантования diff_index (j) для j=1…K_BB-1 затем преобразуют в двоичную форму с помощью кодирования Хаффмана (переменная длина). Используемая таблица Хаффмана представлена в таблице на фигуре 8.
- общее количество bit_cntl_bb битов, полученных в результате такого двоичного преобразования rms_index (0) и кодирования Хаффмана показателей квантования diff_index (j), изменяется.
-
- в предпочтительном варианте воплощения максимальная длина кода Хаффмана составляет 14 битов, и кодирование Хаффмана применяют для KBB-1=9 дифференциальных показателей в низкочастотной полосе. Таким образом, теоретическое максимальное значение bit_cntl_bb 5+9×14=131 битов. Хотя это значение является только теоретическим, следует отметить, что в сценарии наихудшего случая количество битов, используемое при кодировании спектральной огибающей в низкочастотной полосе, может быть очень большим; роль равновероятного кодирования состоит именно в ограничении сценария наихудшего случая.
-
Модуль 503 равновероятностного кодирования преобразует непосредственно в натуральную двоичную форму элементы rms_index (0) rms_index (1)…rms_index (K_BB-1). Они находятся в диапазоне от -11 до +20, и поэтому каждый из них кодируется по 5 битам. Количество битов, необходимых для равновероятностного кодирования, поэтому составляет просто: bit_cnt2_bb=5 х K_BB битов. В предпочтительном варианте воплощения K_BB=10, таким образом, bitcnt2_bb=50 битов.
Селектор 504 режима выбирает, какой из двух модулей 502 или 503 (дифференциального кодирования Хаффмана или равновероятностного кодирования) генерирует меньшее количество битов. Когда в дифференциальном режиме Хаффмана происходит насыщение дифференциальных показателей при +/-12, выбирается равновероятностный режим, как только насыщение будет детектироваться при расчете дифференциальных показателей квантования. Этот способ позволяет избежать насыщения спектральной огибающей, как только разница между скв значениями двух соседних полос превышает 12 х 3,01=36,12 дБ. Выбор режима поясняется ниже:
- если (satur_bb=1) или (bit_cnt2_bb<bit_сnt1_bb), выбирают равновероятностный режим;
- в противном случае, выбирают дифференциальный режим Хаффмана.
Селектор 504 режима генерирует бит, который обозначает, какой из дифференциального режима Хаффмана или равновероятностного режима был выбран, используя следующее обозначение: 0 для дифференциального режима Хаффмана, 1 для равновероятностного режима. Такой бит мультиплексируют с другими битами, генерируемыми путем кодирования спектральной огибающей в мультиплексоре 510. Кроме того, селектор 504 режима инициирует бистабильную схему 505, которая мультиплексирует биты выбранного режима кодирования в мультиплексоре 314.
Огибающую rms_index_bh высокочастотной полосы обрабатывают точно так же, как rms_index_bb: однородное кодирование первого показателя log_rms (0) по 5 битам с помощью модуля 507 равновероятностного кодирования и с помощью кодирования Хаффмана дифференциальных показателей модулем 506 кодирования. Таблица Хаффмана, используемая в модуле 506, идентична таблице, используемой в модуле 502. Аналогично, равновероятностное кодирование 507 идентично кодированию 503 в низкочастотной полосе. Селектор 508 режима генерирует бит, который обозначает, какой режим (дифференциальный режим Хаффмана или равновероятностный режим) был выбран, и этот бит мультиплексируют с битами из бистабильной схемы 509 в мультиплексоре 314. Количество битов, необходимых для равновероятностного кодирования в высокочастотной полосе, составляет bit_cnt2_bh=(К-К_ВВ) х 5; в предпочтительном варианте воплощения, K-K_BB=8, таким образом, bit_сnt2_bh=40 битов.
Важно отметить, что в предпочтительном варианте воплощения биты, ассоциированные с огибающей высокочастотной полосы, мультиплексируют перед битами, ассоциированными с огибающей низкочастотной полосы. Таким образом, если только часть кодированной спектральной огибающей будет получена декодером, огибающая высокочастотной полосы может быть декодирована до огибающей низкочастотной полосы.
Иерархический аудиодекодер, ассоциированный с кодером, который был описан выше, представлен на фигуре 9. Биты, определяющие каждые 20 мс фреймы, дсмультиплексируют в демультиплексоре 600. Здесь показано декодирование при 8 кбит/сек - 32 кбит/сек. На практике поток битов может быть усечен до 8 кбит/сек, 12 кбит/сек, 14 кбит/сек или от 14 кбит/сек до 32 кбит/сек с шагом по 2 кбит/сек.
Поток битов уровней в 8 и 12 кбит/сек используется декодером 601 ЛПВК, для генерирования синтеза первой узкой полосы (от 0 до 4000 Гц). Участок потока битов, ассоциированный с уровнем 14 кбит/сек, декодируют с помощью модуля 602 расширения полосы. Сигнал, получаемый в высокочастотной полосе (4000 Гц-7000 Гц), преобразуется в преобразованный сигнал , путем приложения преобразования 603 МДКП. Декодирование 604 МДКП показано на фигуре 10 и описано ниже. Из потока битов, ассоциированного со скоростями битов с 14 кбит/сек по 32 кбит/сек, генерируется реконструированный спектр  в низкочастотной полосе и реконструированный спектр,  генерируется в высокочастотной полосе. Эти спектры преобразуют в сигналы  в области времени, с использованием обратного преобразования МДКП в блоках 605 и 606. Сигнал  добавляют к синтезу 608 ЛПВК после обратной перцептуальной фильтрации 607 и результат затем подвергают последующей фильтрации 609.
Широкополосный выходной сигнал с частотой выборки 16 кГц получают с помощью банка фильтров синтеза КЗФ, включающего в себя избыточную дискретизацию 610 и 612, низкочастотную и высокочастотную фильтрацию 611 и 613 и суммирование 614.
Декодер 604 МДКП описан ниже со ссылкой на фиг.10.
Биты, ассоциированные с этим модулем, демультиплексируют в демультиплексоре 600. Спектральную огибающую вначале декодируют 701 для получения показателей rms_index и реконструированной спектральной огибающей скв_q по линейной шкале. Модуль 701 декодирования показан на фигуре 11 и описан ниже. В отсутствии ошибок битов, и если все биты, определяющие спектральную огибающую, приняты правильно, показатели rms_index соответствуют точно рассчитанным в кодере; это свойство является существенным, поскольку назначение битов 702 требует одной и той же информации в кодере и в декодере таким образом, что кодер и декодер являются совместимыми. Стандартизированные коэффициенты МДКП декодируют в блоке 703.
Подполосы, которые не были приняты или не были кодированы, поскольку имеют слишком мало энергии, заменяют полосами из спектра  в модуле 704 замены.
Наконец, модуль 705 применяет огибающую амплитуды для поддиапазона к коэффициентам, переданным на выход модуля 704, и реконструированный спектр  разделяют 706 на реконструированный спектр  в низкочастотной полосе (от 0 до 4000 Гц) и реконструированный спектр  в высокочастотной полосе (4000 Гц - 7000 Гц).
На фигуре 11 показано декодирование спектральной огибающей. Биты, ассоциированные со спектральной огибающей, демультиплексируют с помощью демультиплексора 600.
В предпочтительном варианте воплощения биты, ассоциированные со спектральной огибающей высокочастотной полосы, передают перед битами низкочастотной полосы. Таким образом, декодирование начинается со считывания в селекторе 801 режима значения бита выбора режима, принятого из кодера (дифференциальный режим Хаффмана или равновероятностный режим). Селектор 801 соответствует тем же обозначениям кодирования, а именно: 0 для дифференциального режима Хаффмана, 1 для равновероятностного режима. Значение этого бита управляет бистабильными схемами 802 и 805.
Если бит выбора режима равен 0, включают дифференциальное декодирование Хаффмана, используя модуль 803 декодирования переменной длины: вначале декодируют абсолютное значение rms_index (K_BB) от -11 до +20 и представленное по 5 битам, после этого следуют Коды Хаффмана, ассоциированные с дифференциальными показателями квантования diff_index (j) для j=K_BB.K-1 и затем декодируют. Целочисленные показатели rms_index (j) затем реконструируют, используя следующее выражение, для j=K_ВK.K-1:
rms_index (j)=rms_index (j-1)+diff_index (j).
Если бит выбора режима равен 1, значения rms_index (j) от -11 до +20, представленные по 5 битам для j=K_BВ.K-1, последовательно декодируют с помощью модуля 804 декодирования фиксированной длины.
Если код Хаффмана будет находиться в режиме 0 или если количество принятых битов недостаточно для полного декодирования высокочастотной полосы, процесс декодирования обозначает для декодера МДКП, что возникла ошибка.
Биты, ассоциированные с низкочастотной полосой, декодируют таким же образом, как и биты, ассоциированные с высокочастотной полосой. Такой участок декодирования, поэтому, включает в себя селектор 806 режима, бистабильные схемы 807 и 810 и модули 808 и 809 декодирования.
Реконструированная спектральная огибающая низкочастотной полосы включает в себя целочисленные показатели rms_index (j) для j=K_BB.K-1. Такая реконструкция в низкочастотной полосе включает в себя целочисленные показатели rms_index (j) для j=0…K_BB-1. Такие показатели сгруппированы в одиночный вектор rms_index={rms_index (rms_index (1)…rms_index (K-1)} в блоке 811 слияния. Вектор rms_index представляет реконструированную спектральную огибающую по логарифмической шкале с основанием 2; при этом спектральную огибающую преобразуют в линейную шкалу с помощью модуля 812 преобразования, которая выполняет следующую операцию, где j=0,…, K-1:
rms_index (j)
rms_q(j)=2.
Очевидно, что изобретение не ограничивается вариантом воплощения, который был описан выше. В частности, следует отметить, что огибающая, кодированная в соответствии с изобретением, может соответствовать временной огибающей, определяющей скв значение для подфрейма сигнала, а не спектральную огибающую, определяющую скв значение для подфрейма.
Кроме того, этот этап кодирования с фиксированной длиной, конкурирующий с дифференциальным кодированием Хаффмана, может быть заменен этапом кодирования переменной длины, например, кодированием Хаффмана показателей квантования, вместо кодирования Хаффмана дифференциальных показателей. Кодирование Хаффмана также может быть заменено любым другим кодированием без потерь, например, арифметическим кодированием, кодированием Танстолла (Tunstall) и т.д.