Область техники
Настоящее изобретение относится к технологии кодирования/декодирования звука и, в частности, к способу кодирования/декодирования звука и системе векторного квантования решетчатого типа.
Уровень техники
Технология кодирования/декодирования звука служит сердцевиной таких прикладных мультимедийных технологий, как цифровое звуковое вещание, музыкальной вещание, звуковые телекоммуникации в Интернете и т.д., которые получили бы значительную выгоду от усовершенствования основных характеристик звуковых кодеров. Использующий особенности восприятия звука кодер, представляющий один из видов кодирования в домене преобразования с потерями, служит основным современным звуковым кодером. Существующие кодеки, такие как кодек ААС Экспертной группы по кинематографии (MPEG) 4 и так далее, выполняют кодирование звука в домене преобразования и декодирование с использованием способа неравномерного скалярного квантования, который характеризуется высокой сложностью выполняемых вычислений и невысокой способностью к сжатию информации. Обычный статистический векторный квантователь (например, имеющийся векторный квантователь с алгоритмом LBG, где обозначение LBG соответствует предложенному Linde, Buzo и Gray способу векторного квантования) обладает значительной способностью к сжатию, и поэтому он широко используется в области сжатия звуковой и видеоинформации. Однако вычислительная сложность такого векторного квантователя экспоненциально увеличивается с увеличением объема информации, и кодовая книга, полученная путем выполнения обучающей последовательности с использованием алгоритма кластеризации, обычно не обладает общей оптимальностью. Недавно предложен новый кодирующий и декодирующий векторный квантователь звука, то есть решетчатый векторный квантователь, обеспечивающий дискретизацию сигналов с использованием узлов, входящих в его пространственную решетку. Так как узлы пространственной решетки обладают регулярной структурой, то кодовая книга может создаваться алгебраическим способом и занимать небольшое место при хранении, а решетчатое векторное квантование обладает преимуществом низкой сложности вычислений и высокой точности дискретизации. Однако из-за того, что в существующем основанном на использовании решетчатого векторного квантования звуковом кодеке (таком как G.719, и т.д.) используется сферическая решетка, учитывающая при кодировании и декодировании кодовую книгу, то округление в кодовой книге может применяться только к информационным источникам со стандартным и гауссовским распределением, а это не очень хорошо влияет на голос, представляющий собой информационный источник с распределением Лапласа. При этом битовая длина этапа существующего решетчатого векторного квантователя (такого как G.719) при кодировании равна целому числу битов (например, одному биту), поэтому используемая длина этапа слишком велика в случае распределения малого количества битов, что приводит к очень концентрированному распределению битов и невозможности более эффективного использования ограниченного их количества; кроме того, решетчатая кодовая книга одиночного битового кодека занимает слишком много места при хранении.
Сущность изобретения
Решаемая в настоящем изобретении техническая проблема заключается в создании способа кодирования звука и системы решетчатого векторного квантования для получения хорошего качества кодирования источника голосовой информации.
Для решения указанной выше технической проблемы в настоящем изобретении предлагается способ кодирования звука с использованием решетчатого векторного квантования, включающий:
разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды сигнала в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд;
распределение битов в каждый поддиапазон кодирования, осуществление нормализации, квантования и кодирования соответственно векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием и векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием с целью получения кодированных битовых значений коэффициентов частотного домена, причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов. распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
мультиплексирование и упаковку кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов частотного домена в каждом поддиапазоне кодирования и затем их передачу на сторону декодирования.
Предпочтительно, чтобы при выполнении разделения на поддиапазоны кодирования после выполнения преобразования МДКП осуществлялось разделение коэффициентов частотного домена на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Предпочтительно, чтобы перед этапом выполнения распределения битов в каждый поддиапазон кодирования данный способ дополнительно включал: вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования это распределение битов выполнялось для каждого коэффициента частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов могла изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы исходное значение важности вычислялось в соответствии с выбранным оптимальным битовым значением и коэффициентом масштабирования согласно особенностям слухового восприятия при условии получения максимального отношения квантованного сигнала к шуму, или показателя степени квантования Thq(j) или значения µ×log2[Th(j)]+ν в каждом поддиапазоне кодирования, где µ>0, а µ и ν представляют собой действительные числа.
Предпочтительно, чтобы процесс распределения битов в каждый поддиапазон кодирования включал:
вычисление среднего количества используемых битов для одного коэффициента частотного домена;
вычисление оптимального битового значения при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации;
вычисление исходного значения важности каждого поддиапазона кодирования при распределении ему битов;
выполнение распределения битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования: увеличение количества кодированных битов для каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью и уменьшение важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых для всех поддиапазонов кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы этап выполнения нормализации и квантования в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием включал:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования и группирования с образованием множества подлежащих многомерному квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает:
осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8, и
сравнение энергии полученного квантованием узла решетки D8 с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, и если энергия узла решетки D8 меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, вычисление в кодовой книге индекса квантования узла решетки D8; если энергия узла решетки D8 больше максимального пирамидального поверхностного энергетического радиуса, выполнение усечения энергии для отрегулированного в поддиапазоне кодирования до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременного постоянного добавления энергии энергетически связанному подлежащему квантованию вектору до тех пор, пока энергия узла решетки D8, до которой квантуется энергетически связанный подлежащий квантованию вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса, и затем определение последнего узла решетки D8, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса, как узла решетки векторного квантования, и вычисление индекса квантования узла решетки векторного квантования в кодовой книге;
и/или
этап выполнения нормализации и квантования в поддиапазоне кодирования больших битовых значений в сферическом решетчатом векторном квантовании включает:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования и группирование их с целью образования множества многомерных подлежащих квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает:
осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
деление полученного квантованием значения узла решетки D8 на 2 в степени количества распределенных битов 2region_bit(j) и затем повторное выполнение квантования для отображения на узел решетки D8, вынесение решение о том, является ли полученное повторным квантованием значение узла решетки D8 нулевым вектором, и в случае положительного решения определение соответствия нулевому векторному состоянию, а в случае отрицательного решения определение несоответствия нулевому векторному состоянию, причем region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования;
при соответствии нулевому векторному состоянию вычисление индексного вектора узла решетки D8; и
при несоответствии нулевому векторному состоянию выполнение усечения значения энергии подлежащего квантованию вектора до достижения соответствия нулевому векторному состоянию, сохранение множественного значения w самого подлежащего квантованию вектора, добавление множественного значения w к энергетически связанному подлежащему квантованию вектору, затем квантование для его отображения на узел решетки D8, вынесение решения о соответствии нулевому векторному состоянию, в случае отрицательного решения вычисление нового индексного вектора k для узла решетки D8, соответствующего нулевому векторному состоянию, в случае положительного решения постоянное добавление множественного значения w к подлежащему квантованию вектору и затем выполнение квантования для отображения на узел решетки D8 до тех пор, пока не будет получено соответствие нулевому векторному состоянию.
Предпочтительно, чтобы в этапе осуществления регулирования энергии 8-мерного подлежащего квантованию вектора сначала в приводимой ниже таблице выполнялся поиск содержащихся в кодовой книге последовательного номера index и коэффициента масштабирования энергии scale в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор; и затем выполнение регулирования энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
где
на этапе квантования энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8 выполнялось квантование энергетически отрегулированного 8-мерного вектора
где ƒD8(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D8.
Этап вычисления индекса квантования узла решетки D8
этап 1, разметка узлов решетки на каждой пирамидальной поверхности в соответствии с амплитудой энергии на пирамидальной поверхности;
в котором для целочисленной узловой решетчатой сети ZL с размером L пирамидальная поверхность с энергетическим радиусом K определяется как:
где N(L,K) обозначает количество узлов решетки в S(L,K), и для определения N(L,К) в целочисленной сети ZL используются следующие рекурентные формулы:
N(L,0)=1 (L≥0), N(0,K)=0 (K≥1)
N(L,K)=N(L-1, K)+N(L-1, K-1)+N(L, K-1) (L≥1, K≥1);
для идентификации целочисленного узла решетки Y=(y1,y2,…,yL)∈ZL на пирамидальной поверхности с энергетическим радиусом К используется число b из последовательности [0,1,…,N(L,K)-1], которое называется меткой узла решетки, и для определения метки b выполняются следующие этапы:
этап 1.1, задается 6=0, i=1, k=K, l=L, вычисляется N(m,n), (m<=L, n<=К) в соответствии с приведенными рекурсивными формулами, и определяется:
этап 1.2, если yi=0, тогда b=b+0;
если |yi|=1, тогда
если [yi|>1, тогда
этап 1.3, k=k-|yi|, l=l-1, i=i+1, если теперь k=0, прекращение поиска, b(j, m)=b, который представляет собой метку Y, в противном случае продолжение выполнения этапа 1.2;
этап 2, выполнение стандартной разметки узла решетки на всех пирамидальных поверхностях;
в котором вычисляется стандартная метка узла решетки на всех пирамидальных поверхностях в соответствии с количеством узлов решетки на каждой пирамидальной поверхности и меткой узла решетки на собственной пирамидальной поверхности,
где kk представляет собой четное число, b(j,m) представляет собой метку узла решетки D8
Предпочтительно
этап кодирования в поддиапазоне кодирования малых битовых значений при пирамидальном узловом векторном квантовании включает:
осуществление кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений; и
если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление кодирования по способу Хаффмана и установка в 1 (или в истинное состояние) флажка кодирования по способу Хаффмана для коэффициента частотного домена, использование сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования и повторное осуществление векторного квантования и кодирования в поддиапазоне кодирования, для которого было произведено изменение количества распределенных битов; а если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общему количеству битов, требуемому для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление повторного натурального кодирования индекса квантования и установка в 0 (или в ложное состояние) флажка кодирования по способу Хаффмана для коэффициента частотного домена.
Предпочтительно, этап использования сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования включая:
вычисление количества битов, сохраняемых при кодировании по способу Хаффмана;
определение во всех поддиапазонах кодирования поддиапазона кодирования с максимальной важностью в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения, которое может распределяться поддиапазону кодирования, регулировка важности наименее важного поддиапазона кодирования и дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, и затем выполнение изменения распределения битов для поддиапазона кодирования с максимальной важностью; и
в процессе изменения распределения битов распределение 1 бита поддиапазону кодирования с количеством распределенных битов 0 и уменьшение важности на 1 после распределения битов; распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5 и уменьшение важности на 0,5 после распределения битов; распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5, и уменьшение важности на 1 после распределения битов.
Предпочтительно, чтобы после каждого случая изменения количества распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигает предустановленной верхней границы или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходило окончание процесса изменения количества распределенных битов.
Предпочтительно, чтобы последовательность мультиплексирования и упаковки закодированных битов была следующей: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированные биты огибающей амплитуды, кодированные биты коэффициента частотного домена.
Предпочтительно, чтобы при осуществлении кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индекса векторного квантования в поддиапазоне кодирования использовались различные кодовые книги в зависимости от количества битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается способ декодирования звука с решетчатым векторным квантованием, включающий:
декодирование закодированных битов каждой огибающей амплитуды в подлежащем декодированию двоичном потоке с целью получения индекса квантования огибающей амплитуды для каждого поддиапазона кодирования;
выполнение распределения битов в каждый поддиапазон кодирования и осуществление декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования малых битовых значений, и осуществление декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования больших битовых значений; причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) в частотном домене коэффициентов, для которых с целью получения конечного звукового сигнала выполнялось шумовое заполнение.
Предпочтительно, чтобы перед этапом выполнения распределения битов в каждый поддиапазон кодирования данный способ дополнительно включал: вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования распределение битов выполнялось для каждого коэффициента частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов могли изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы после выполнения распределения битов и перед осуществлением декодирования, в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования, снова с соответствующим отсчетом осуществлялось изменение количества распределенных битов для поддиапазона кодирования.
Предпочтительно, чтобы при осуществлении распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений;
при изменении распределения битов длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения битов в поддиапазоне кодирования малых битовых значений должны быть меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения битов в поддиапазоне кодирования нулевого бита и поддиапазоне кодирования больших битовых значений.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования пулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы в этапе осуществления декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений получение индекса векторного квантования в поддиапазоне кодирования малых битовых значений производилось путем осуществления кодирования по способу Хаффмана или прямого декодирования в поддиапазоне кодирования малых битовых значений в соответствии с флажком кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования, а инверсное квантование и инверсная нормализация пирамидального решетчатого векторного квантования осуществлялись для всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования малых битовых значений; в этапе осуществления декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений прямо использовалось натуральное декодирование, а инверсное квантование и инверсная нормализация сферического решетчатого векторного квантования осуществлялись для всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования больших битовых значений.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается наличие системы кодирования звука с решетчатым векторным квантованием, включающей: узел модифицированного дискретного косинусного преобразования (узел МДКП), узел вычисления огибающей амплитуды, узел квантования и кодирования огибающей амплитуды, узел распределения битов, узел нормализационной обработки, узел классификационного решетчатого векторного квантования и кодирования и мультиплексор битового потока; причем
узел МДКП предназначен для выполнения модифицированного дискретного косинусного преобразования звукового сигнала с получением коэффициентов частотного домена;
узел вычисления огибающей амплитуды соединяется с узлом МДКП и предназначается для разделения полученных узлом МДКП в множестве поддиапазонов кодирования коэффициентов частотного домена, и вычисления значения огибающей амплитуды в каждом поддиапазоне кодирования;
узел квантования и кодирования огибающей амплитуды соединяется с узлом вычисления огибающей амплитуды и предназначен для квантования и кодирования значения огибающей амплитуды в каждом поддиапазоне кодирования с целью получения кодированных битов огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел нормализационной обработки соединяется с узлом МДКП и предназначается для использования при осуществлении квантования значения огибающей амплитуды в поддиапазоне кодирования с целью выполнения нормализационной обработки всех коэффициентов частотного домена в каждом поддиапазоне кодирования;
узел классификационного решетчатого векторного квантования и кодирования соединяется с узлом нормализационной обработки и узлом распределения битов и предназначен для выполнения квантования и кодирования нормализованных подлежащих квантованию векторов в поддиапазоне кодирования малых битовых значений и поддиапазоне кодирования больших битовых значений с пирамидальным решетчатым векторным квантованием и сферическим решетчатым векторным квантованием соответственно с целью получения кодированных битов коэффициентов частотного домена; где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
мультиплексор битового потока соединяется с узлом квантования и кодирования огибающей амплитуды и узлом классификационного решетчатого векторного квантования и кодирования и предназначен для мультиплексирования кодированных битов в каждом поддиапазоне кодирования и кодированных битов коэффициентов частотного домена для их передачи на сторону декодирования.
Предпочтительно, чтобы при выполнении разделения на поддиапазоны кодирования узел вычисления огибающей амплитуды осуществлял разделение коэффициентов частотного домена после выполнения модифицированного дискретного косинусного преобразования на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Предпочтительно, чтобы узел распределения битов включал соединенные друг с другом модуль вычисления важности и модуль распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы исходное значение важности вычислялось согласно выбранному оптимальному битовому значению и коэффициенту масштабирования в соответствии с характеристиками слухового восприятия при условии получения максимального отношения квантованного сигнала к шуму, или показателя степени квантования Thq(j) или значения [µ×lig2[Th(j)]+ν] в каждом поддиапазоне кодирования огибающей амплитуды, где µ>0, а (и (представляют собой действительные числа.
Предпочтительно, чтобы при вычислении исходного значения важности модуль вычисления важности сначала вычислял среднее количество расходуемых битов для одного коэффициента частотного домена; и затем вычислял оптимальное битовое значение при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации; после чего вычислял исходное значение важности каждого поддиапазона кодирования при распределении битов в соответствии со средним количеством используемых битов и оптимальной битовой величиной;
модуль вычисления важности при выполнении распределения битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования должен обеспечивать: увеличение количества кодированных битов каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью, и уменьшение важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых всеми поддиапазонами кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Предпочтительно, чтобы при выполнении распределения битов модулем распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы при выполнении распределения битов модулем распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы узел классификационного решетчатого векторного квантования и кодирования включал классификационный обрабатывающий модуль и модуль пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль соединяется с узлом нормализационной обработки и предназначается для группирования нормализованных коэффициентов частотного домена создания многомерного подлежащего квантованию вектора и передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования малых битовых значений в модуль пирамидального решетчатого векторного квантования;
модуль пирамидального решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначается для выполнения пирамидального решетчатого векторного квантования после нормализации подлежащего квантованию вектора в каждом поддиапазоне кодирования малых битовых значений;
модуль пирамидального решетчатого векторного квантования включает первый субмодуль регулирования энергии, первый субмодуль квантования узла решетки, первый субмодуль настройки энергии и субмодуль вычисления индекса квантования, причем
первый субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
первый субмодуль квантования узла решетки соединяется с первым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
первый субмодуль настройки энергии соединяется с первым субмодулем квантования узла решетки и предназначается для сравнения энергии узла решетки D8 с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, если энергия узла решетки D8 меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, передачи сообщения на субмодуль вычисления индекса квантования о необходимости вычисления индекса квантования узла решетки D8 в кодовой книге; если энергия узла решетки D8 больше максимального пирамидального поверхностного энергетического радиуса, осуществления усечения энергии отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования, и передачи сообщения на первый субмодуль квантования узла решетки для усечения энергии до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременного постоянного добавления энергии энергетически связанному подлежащему квантованию вектору и передачи сообщения на первый субмодуль квантования узла решетки с целью осуществления квантования подлежащего квантованию вектора с добавленной энергией для его отображения на узел решетки D8 до тех пор, пока энергия узла решетки D8, до которой квантуется энергетически связанный подлежащий квантованию вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса, и передачи сообщения на субмодуль вычисления индекса квантования с целью вычисления индекса квантования последнего узла решетки D8, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса в кодовой книге;
модуль вычисления индекса квантования соединяется с первым субмодулем настройки энергии и предназначается для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с сообщением первого субмодуля настройки энергии;
и
узел классификационного решетчатого векторного квантования и кодирования дополнительно включает модуль сферического решетчатого векторного квантования, соединенный с классификационным обрабатывающим модулем; классификационный обрабатывающий модуль дополнительно предназначен для передачи нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений в модуль сферического решетчатого векторного квантования для обработки;
модуль сферического решетчатого векторного квантования предназначен для выполнения сферического решетчатого векторного квантования нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений; модуль сферического решетчатого векторного квантования включает второй субмодуль регулирования энергии, второй субмодуль квантования узла решетки, субмодуль вынесения решения о наличии нулевого векторного состояния, второй субмодуль настройки энергии и субмодуль вычисления индексного вектора, причем
второй субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
второй субмодуль квантования узла решетки соединяется со вторым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
субмодуль вынесения решения о наличии нулевого векторного состояния соединяется со вторым субмодулем квантования узла решетки и предназначен для вынесения решения о том, соответствует ли узел решетки D8 нулевому векторному состоянию, и в случае такого соответствия передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления индексного вектора узла решетки D8, а в случае несоответствия передачи сообщения на второй субмодуль настройки энергии с целью настройки энергии подлежащего квантованию вектора; наличие нулевого векторного состояния вызывает деление полученного квантованием значения узла решетки D8 на 2 в степени количества распределенных битов region_bit(j), и затем создание узла решетки D8, причем созданный узел решетки D8 представляет собой нулевой вектор, где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования;
второй субмодуль настройки энергии соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем квантования узла решетки и предназначен для выполнения усечения значения энергии подлежащего квантованию вектора и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; сохранение множественного значения w самого подлежащего квантованию вектора, добавление сохраненного множественного значения w к энергетически связанному подлежащему квантованию вектору, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; и передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления самого нового индексного вектора для узла решетки D8, соответствующего нулевому векторному состоянию;
субмодуль вычисления индексного вектора соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с полученными сообщениями из субмодуля вынесения решения о наличии нулевого векторного состояния и второго субмодуля настройки энергии.
Предпочтительно, чтобы узел классификационного решетчатого векторного квантования и кодирования дополнительно включал модуль вынесения решения о типе кодирования, модуль кодирования по способу Хаффмана, модуль натурального кодирования и модуль изменения распределенных битов, причем
модуль вынесения решения о типе кодирования предназначен для вынесения решения о том, является ли общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для осуществления натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, и в случае положительного решения передачи сообщения на модуль кодирования по способу Хаффмана и модуль изменения распределенных битов; а если общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общего количества битов, требуемого для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, передачи сообщения на модуль натурального кодирования;
модуль кодирования по способу Хаффмана предназначен для выполнения кодирования по способу Хаффмана индекса квантования в поддиапазоне кодирования малых битовых значений и установки флажка кодирования коэффициента частотного домена по способу Хаффмана в 1 (или в истинное состояние),
модуль натурального кодирования предназначен для выполнения натурального кодирования индекса квантования в поддиапазоне кодирования малых битовых значений и индексного вектора в поддиапазоне кодирования больших битовых значений;
модуль изменения распределенных битов предназначен для использования битов, сохраненных при кодировании по способу Хаффмана, для изменения количества распределенных битов в поддиапазоне кодирования, и передачи сообщения на классификационный обрабатывающий модуль с целью классификации поддиапазонов кодирования по количеству подлежащих изменению распределенных битов, и затем повторного выполнения векторного квантования и кодирования.
Предпочтительно, чтобы модуль изменения распределенных битов, предназначенный для осуществления при выполнении распределения битов поиска поддиапазона кодирования с максимальной важностью среди всех поддиапазонов кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения битов, которое может распределяться поддиапазону кодирования, выполнял регулировку важности наименее важного поддиапазона кодирования и обеспечивал дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, а затем выполнял изменение распределения битов для поддиапазона кодирования с максимальной важностью; и
при изменении распределения битов осуществлял распределение 1 бита поддиапазону кодирования с количеством распределенных битов 0 и уменьшение важности на 1 после распределения битов; распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5, и уменьшение важности на 0,5 после распределения битов; распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5 и уменьшение важности на 1 после распределения битов.
Предпочтительно, чтобы после каждого случая изменения количества распределенных битов модулем изменения распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигает предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходило окончание процесса изменения количества распределенных битов.
Предпочтительно, чтобы последовательность мультиплексирования и упаковки закодированных битов была следующей: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированные биты огибающей амплитуды, кодированные биты коэффициента частотного домена.
Предпочтительно, чтобы при осуществлении модулем кодирования по способу Хаффмана кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индексов векторного квантования в поддиапазоне кодирования использовались различные кодовые книги в зависимости от количества битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается наличие системы декодирования звука с решетчатым векторным квантованием, включающей: демультиплексор битового потока, узел декодирования огибающей амплитуды поддиапазона кодирования, узел распределения битов, узел декодирования коэффициента частотного домена, узел инверсного классификационного решетчатого векторного квантования, узел инверсной нормализационной обработки, узел шумового заполнения и узел обратного модифицированного дискретного косинусного преобразования (ОМДКП), причем
демультиплексор битового потока предназначен для отделения вспомогательной информации, кодированных битов огибающей амплитуды и кодированных битов доменного коэффициента от подлежащего декодированию битового потока;
узел декодирования огибающей амплитуды поддиапазона кодирования соединяется с демультиплексором битового потока и предназначается для декодирования закодированных битов огибающей амплитуды с выхода демультиплексора битового потока с целью получения квантованной составляющей огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел декодирования коэффициента частотного домена соединяется с узлом декодирования огибающей амплитуды и узлом распределения битов и предназначается для осуществления декодирования поддиапазона кодирования малых битовых значений с целью получения индекса квантования в поддиапазоне кодирования малых битовых значений; а также для осуществления декодирования поддиапазона кодирования больших битовых значений с целью получения индексного вектора в поддиапазона кодирования больших битовых значений, где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов. распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
узел инверсного классификационного решетчатого векторного квантования предназначен для инверсного квантования индекса выполненного пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и осуществления инверсного квантования индексного вектора выполненного сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализации значений, полученных после осуществления инверсного квантования в поддиапазоне кодирования, а также для получения коэффициента частотного домена;
узел шумового заполнения предназначен для выполнения заполнения шумом поддиапазона, которому узел инверсной нормализационной обработки не распределил бит для выходного значения коэффициента частотного домена;
узел обратного модифицированного дискретного косинусного преобразования (узел ОМДКП) соединяется с узлом шумового заполнения и предназначен для выполнения обратного модифицированного дискретного косинусного преобразования коэффициента частотного домена, для которого было выполнено шумовое заполнение с целью получения звукового сигнала.
Предпочтительно, чтобы узел распределения битов включал соединенные друг с другом модуль вычисления важности и модуль распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования согласно исходному значению важности каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы узел распределения битов дополнительно включал модуль изменения распределенных битов, соединенный с модулем распределения битов, и модуль изменения распределенных битов, предназначенный для выполнения изменения распределения битов в поддиапазоне кодирования счетное количество раз после выполнения распределения битов в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования.
Предпочтительно, чтобы при осуществлении модулем распределения битов распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы узел декодирования коэффициента частотного домена при осуществлении декодирования в поддиапазоне кодирования малых битовых значений выполнял кодирование по способу Хаффмана в поддиапазоне кодирования малых битовых значений в соответствии со значением флажка кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования или выполнял натуральное кодирование для получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений; а при осуществлении декодирования в поддиапазоне кодирования больших битовых значений прямо выполнял натуральное кодирование для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Предпочтительно, чтобы узел инверсного классификационного решетчатого векторного квантования включал классификационный обрабатывающий модуль и модуль инверсного пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль предназначен для передачи индекса квантования из поддиапазона кодирования малых битовых значений в модуль инверсного пирамидального решетчатого векторного квантования;
модуль инверсного пирамидального решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса квантования в поддиапазоне кодирования малых битовых значений; причем модуль инверсного пирамидального решетчатого векторного квантования включает соединенные друг с другом первый субмодуль инверсного квантования узла решетки и первый субмодуль инверсного регулирования энергии, причем
первый субмодуль инверсного квантования узла решетки предназначен для определения энергетической пирамидальной поверхности, на которой располагается индекс квантования в поддиапазоне кодирования малых битовых значений, метка индекса квантования на этой энергетической пирамидальной поверхности, а также последующие решения для соответствующего узла решетки D8;
первый субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии решения Y для узла решетки D8, получаемого из уравнения
где а=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(index) представляет собой коэффициент масштабирования;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Предпочтительно, чтобы узел инверсного классификационного решетчатого векторного квантования дополнительно включал модуль инверсного сферического решетчатого векторного квантования; классификационный обрабатывающий модуль дополнительно предназначен для передачи индексного вектора из поддиапазона кодирования больших битовых значений в модуль инверсного сферического решетчатого векторного квантования для обработки;
модуль инверсного сферического решетчатого векторного квантования предназначен для выполнения инверсного квантования индексного вектора в поддиапазоне кодирования больших битовых значений; модуль инверсного сферического решетчатого векторного квантования включает соединенные друг с другом второй субмодуль инверсного квантования узла решетки и второй субмодуль инверсного регулирования энергии, причем
второй субмодуль инверсного квантования узла решетки предназначен для получения решения для узла решетки D8, соответствующего индексному вектору, причем используемый этап для получения такого решения для узла решетки D8, соответствующего индексному вектору, включает:
вычисление значения x=k*G и вычисление значения ytemp=x/(2^(region_bit(j));
и вычисление узла решетки D8 y=x-ƒD8(ytemp)*(2^region_bit(j)); где k представляет собой индексный вектор векторного квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D8 и имеет следующий вид:
второй субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии найденного значения узла решетки D8, и обеспечивает получение
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(region_bit(j)) представляет собой коэффициент масштабирования;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа, заявляемые в настоящем изобретении, полностью учитывают характеристики распределения голосового информационного источника, выполняют квантование подлежащего квантованию вектора с применением совмещенного решетчатого векторного квантования, конкретнее пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно используемых в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений согласно количеству битов, распределяемых соответствующему поддиапазону кодирования, а при декодировании используют обратный кодированию процесс, обеспечивая таким образом хорошее качество кодирования звукового информационного источника. Кроме того, при распределении битов используется процедура распределения битов с переменной длиной этапа, причем длина этапа распределения битов одному коэффициенту частотного домена может минимально устанавливаться на половину бита, таким образом улучшая эффективность использования битов. Также одновременно был разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа и невысокой сложностью используемого алгоритма маркирования узла решетки, уменьшая тем самым требуемый объем хранения. Кроме того, при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма работы решетчатого векторного квантователя. В процессе кодирования также используется разработанный алгоритм сохранения битов.
Краткое описание чертежей
На Фиг.1 представлена соответствующая настоящему изобретению блок-схема способа кодирования звука с решетчатым векторным квантованием.
На Фиг.2 представлена соответствующая настоящему изобретению блок-схема процесса решетчатого векторного квантования.
На Фиг.3 представлена соответствующая настоящему изобретению блок-схема процесса изменения распределения битов.
На Фиг.4 представлена соответствующая настоящему изобретению блок-схема способа декодирования звука с решетчатым векторным квантованием.
На Фиг.5 представлена соответствующая настоящему изобретению структурная блок-схема системы звукового кодирования с решетчатым векторным квантованием.
На Фиг.6 представлена соответствующая настоящему изобретению структурная блок-схема модулей узла классификационного решетчатого векторного квантования и кодирования системы кодирования.
На Фиг.7 представлена соответствующая настоящему изобретению структурная блок-схема системы звукового декодирования с решетчатым векторным квантованием.
На Фиг.8 представлена соответствующая настоящему изобретению структурная блок-схема модулей узла инверсного классификационного решетчатого векторного квантования системы декодирования.
На Фиг.9 представлена соответствующая варианту реализации настоящего изобретения блок-схема структуры битового потока.
Предпочтительные варианты реализации настоящего изобретения
Основная идея настоящего изобретения заключается в осуществлении квантования подлежащих квантованию векторов с использованием совмещенного решетчатого векторного квантования, то есть пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений согласно количеству битов, распределенных поддиапазону кодирования, и в использовании при декодировании процесса, обратного кодированию, обеспечивая таким образом получение хорошего качества кодирования. Кроме того, при распределении битов используется процедура распределения битов с переменной длиной этапа с целью улучшения эффективности использования битов.
Ниже приводится подробное описание в четырех частях настоящего изобретения, т.е. способа кодирования, способа декодирования, системы кодирования и системы декодирования.
1. Способ кодирования
Способ кодирования звука с решетчатым векторным квантованием в настоящем изобретении включает следующие этапы:
А. Разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд;
при выполнении разделения на поддиапазоны кодирования после осуществления модифицированного дискретного косинусного преобразования выполняется разделение коэффициентов частотного домена на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия;
В. Выполнение в каждом поддиапазоне кодирования распределения битов и осуществление нормализации, квантования и кодирования соответственно для векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым векторным квантованием, и для векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием, с целью получения кодированных битовых значений коэффициентов частотного домена, причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
перед этапом выполнения распределения битов в каждый поддиапазон кодирования вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования; и затем выполнение распределения битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Во время распределения битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью поддиапазона кодирования может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов; в частности,
при выполнении распределения битов поддиапазону кодирования длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа распределения битов и длины этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений, причем поддиапазоном кодирования нулевого бита называется поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, равняется нулю в поддиапазоне кодирования;
исходное значение важности может вычисляться согласно выбранному оптимальному битовому значению при условии получения максимального отношения квантованного сигнала к шуму и соответствия коэффициента масштабирования характеристикам слухового восприятия, и также исходное значение важности для распределения битов в каждом поддиапазоне кодирования может определяться показателем степени квантования Thq(j) или значением µ×log2[Th(j)]+ν (где µ>0, а µ и ν представляют собой действительные числа, и j=0,…,L-1);
С. Мультиплексирование и упаковка кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов в каждом поддиапазоне кодирования частотного домена и их передача на сторону декодирования.
Пример 1 - Способ кодирования
На Фиг.1 приводится структурная блок-схема способа кодирования звука с решетчатым векторным квантованием в соответствии с примером реализации настоящего изобретения. В качестве примера иллюстрации представленного в настоящем изобретении способа кодирования звука выбран звуковой поток с длительностью пакета 20 мс и частотой дискретизации 32 кГц. Представленный в настоящем изобретении способ также пригоден к использованию при других длительностях пакетов и частоте дискретизации. Как видно из Фиг.1, данный способ предусматривает следующие этапы.
Этап 101, выполнение модифицированного дискретного косинусного преобразования (МДКП) подлежащего кодированию звукового потока с целью получения коэффициентов частотного домена для N точек дискретизации в частотном домене.
Характерные в данном этапе действия могут включать:
получение дискретизованного во временном домене 2N-точечного сигнала
Выполнение над МДКП с целью получения следующих коэффициентов частотного домена:
Где w(n) представляет собой синусоидальную оконную функцию, описываемую следующим выражением:
Когда длительность пакета равна 20 мс и частота дискретизации равна 32 кГц, получаем 640 коэффициентов частотного домена. Для получения требуемого количества N коэффициентов частотного домена могут использоваться и другие длительности пакетов и частоты дискретизации.
Этап 102, N-точечные коэффициенты частотного домена разделяются на несколько поддиапазонов кодирования, и вычисляются огибающей амплитуды в каждом поддиапазоне кодирования.
В настоящем примере используется разделение на неоднородные поддиапазоны, и в каждом из поддиапазонов вычисляются амплитуды огибающих в частотном домене (называемые для краткости амплитудами огибающих).
Этап может быть реализован в виде следующих подэтапов.
Этап 102а, подлежащие обработке коэффициенты частотного домена в данном частотном диапазоне разделяются на L поддиапазонов (которые можно называть поддиапазонами кодирования).
В настоящем примере подлежащий обработке частотный диапазон составляет 0-13,6 кГц, а неоднородное разделение поддиапазонов может осуществляться в соответствии с характеристиками восприятия человеческого уха. Характерное разделение поддиапазонов показано в Таблице 1.
В Таблице 1 коэффициенты частотного домена в частотном диапазоне 0-13,6 кГц разделены на 28 поддиапазонов кодирования, то есть L=28; а коэффициенты частотного домена для частот более 13,6 кГц приняты равными 0.
Этап 102b, в каждом поддиапазоне кодирования вычисляется амплитуды огибающих в соответствии со следующим уравнением:
Где LIndex(j) и HIndex(j) представляют собой, соответственно, начальную и конечную частотные точки j-го поддиапазона кодирования, характерные значения которых можно видеть в Таблице 1.
Пример неоднородного разделения поддиапазонов в частотном домене
Этап 103, квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения показателя квантования огибающей амплитуды и показателя квантования кодированных битов огибающей амплитуды (то есть кодированных битов огибающей амплитуды).
Каждая из амплитуд огибающих в поддиапазонах кодирования, вычисленная в соответствии с уравнением (4), подвергается квантованию в соответствии с уравнением (5) для получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования:
Где [x] означает округление, Thq(0) представляет собой показатель квантования огибающей амплитуды в первом поддиапазоне кодирования, диапазон величин которого ограничивается [-5, 34], то есть, когда Thq(0)<-5, Thq(0)=-5; когда Thq(0)>34, Thq(0)=34.
Квантованная амплитуда огибающей, откорректированная в соответствии с показателем квантования, равна 2Thq(j)/2.
Для кодирования показателя квантования огибающей амплитуды в первом поддиапазоне кодирования используются 6 битов, то есть затрачиваются 6 битов.
Разностные оперативные значения между кодированными показателями квантования амплитуд огибающих в поддиапазонах кодирования вычисляются по следующему уравнению:
Огибающей амплитуды могут следующим образом корректироваться для обеспечения пребывания ΔThq(j) в диапазоне [-15, 16]:
если ΔThq(j)<-15, ΔThq(j)=-15, Thq(j)=Thq(j+1)+15, j=L-2,…,0;
если ΔThq(j)>16, ΔThq(j)=16, Thq(j+1)=Thq(j)+16, j=0,…,L-2;
осуществление кодирования по способу Хаффмана для ΔThq(j), j=0,…,L-2 и вычисление количества затраченных для этого битов (кодированных битов по способу Хаффмана). Если количество кодированных битов по способу Хаффмана превышает зафиксированное количество распределенных битов (в настоящем примере, больше чем (L, (1)×5)), тогда для кодирования ΔThq(j), j=0,…,L-2 используется натуральное кодирование, и бит флажка кодирования огибающей амплитуды по способу Хаффмана Flag_huff_rms устанавливается в 0. В противном случае для кодирования ΔThq(j), j=0,…,L-2 используется кодирование по способу Хаффмана, и бит флажка кодирования огибающей амплитуды по способу Хаффмана Flag_huff_rms устанавливается в 1. Показатель квантования кодированных битов огибающей амплитуды (то есть кодированные биты разностного значения огибающей амплитуды) и бит флажка кодирования огибающей амплитуды по способу Хаффмана должны поступать на мультиплексор (MUX).
Этап 104, выполняется распределение битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования.
Исходное значения важности каждого поддиапазона кодирования первоначально вычисляется в соответствии с теорией передачи информации и информацией об амплитуде огибающей в поддиапазоне кодирования, и затем выполняется распределение битов каждому поддиапазону в зависимости от его важности. Этап может быть реализован в виде следующих подэтапов.
Этап 104а, вычисление среднего значения затраченных битов на один коэффициент частотного домена.
Количество битов bit_sides, затраченных на дополнительную информацию, и количество битов bits_Th, затраченных на поддиапазон кодирования огибающей амплитуды, получается из общего количества битов bits_available, которое может предоставляться кадрами длительностью 20 мс для получения количества оставшихся битов bits_left, которые могут быть использованы для кодирования коэффициентов частотного домена, то есть:
Дополнительная информация включает биты флажка кодирования по способу Хаффмана Flag_huff_rms, коэффициент частотного домена флажка кодирования по способу Хаффмана Flag_huff_plvq и отсчет количества итераций. Параметр Flag_huff_rms используется для идентификации использования кодирования по способу Хаффмана огибающей амплитуды в поддиапазоне; Flag_huff_plvq используется для идентификации использования кодирования по способу Хаффмана при осуществлении векторного квантования и кодирования коэффициента частотного домена; а отсчет количества итераций используется для идентификации количества итераций при изменении распределения битов (подробно описанного в последующих этапах).
Среднее значение затраченных битов R на один коэффициент частотного домена вычисляется по формуле:
Где L представляет собой количество поддиапазонов кодирования.
Этап 104b, вычисление оптимальной величины битового потока в соответствии с теорией передачи информации из условия получения максимального отношения квантованного сигнала к шуму.
Оценка искажения передачи основана на использовании гауссовского распределения случайной переменной с оптимизацией методом Лагранжа и оптимального распределения битов при условии получения максимального отношения квантованного сигнала к шуму в каждом поддиапазоне кодирования в условиях предельно допустимых искажений передачи, которые могут быть вычислены по формуле:
Где
и
Этап 104с, вычисление исходного значения важности каждого поддиапазона кодирования при распределении битов.
Исходное значение важности каждого поддиапазона кодирования, используемое при управлении распределением битов, при реальном распределении битов может быть получено с использованием приведенного выше оптимального битового значения и коэффициентов масштабирования, соответствующих характеристикам восприятия человеческого уха:
Где (представляет собой коэффициент масштабирования, связанный с битовой скоростью кодирования и получаемый с использованием статистического анализа, обычно 0<α<1. В настоящем примере значение α принято равным 0,6. Параметр rk(j) представляет собой важность используемого для распределения битов j-го поддиапазона кодирования.
Этап 104d, осуществление распределения битов в каждый поддиапазон кодирования на основе важности каждого поддиапазона кодирования.
Ниже приводится соответствующее описание.
Сначала находится поддиапазон кодирования с максимальным значением rk(j), и этот поддиапазон кодирования маркируется как jk, затем увеличивается количество кодированных битов для каждого коэффициента частотного домена в поддиапазоне кодирования и уменьшается важность поддиапазона кодирования; одновременно вычисляется общее количество битов, затраченных на кодирование поддиапазона bit_band_used(jk); наконец, вычисляется суммарное количество битов, затраченных на все поддиапазоны кодирования (bit_band_used(j)), j=0,…,L-1; приведенный выше процесс повторяется до тех пор, пока суммарное количество затраченных битов не будет соответствовать максимальному значению при условии ограничения количества битов.
Количество распределенных битов связано с количеством битов, распределенных одному коэффициенту частотного домена в одном поддиапазоне кодирования. Количество битов, затраченных в одном поддиапазоне кодирования, связано с количеством битов, распределенных одному коэффициенту частотного домена в одном поддиапазоне кодирования, умноженному на количество коэффициентов частотного домена, находящихся в поддиапазоне кодирования.
В настоящем примере длина этапа распределения битов поддиапазону кодирования при количестве распределенных битов 0 равна 1 биту, а длина этапа уменьшения важности после распределения битов равна 1; длина этапа распределения дополнительных битов поддиапазону кодирования с количеством распределенных битов более 0 и меньше порогового значения 5 равна 0,5 бита; и длина этапа уменьшения важности после дополнительного распределения битов также равна 0,5; длина этапа распределения дополнительных битов поддиапазону кодирования с количеством распределенных битов больше порогового значения 5 равна 1, а длина этапа уменьшения важности после дополнительного распределения битов также равна 1.
Способ распределения битов в этапе может быть представлен в виде следующего псевдокода:
пусть region_bit(j)=0, j=0,1,…,L-1;
для поддиапазонов кодирования 0,1,…,L-1:
поиск
если region_bit(jk)<5
если region_bit(jk)=0
пусть region_bit(jk)=region_bit(jk)+1;
вычисление bit_band_used(jk)=region_bit(jk)*BandWidth(jk);
пусть rk(jk)=rk(jk)-1;
иначе, если region_bit(jk)>=1
пусть region_bit(jk)=region_bit(jk)+0.5;
вычисление bit_band_used(jk)=region_bit(jk)*BandWidth(jk)*0.5;
пусть rk(jk)=rk(jk)-0.5;
иначе, если region_bit(jk)>=5
пусть region_bit(jk)=region_bit(jk)+1;
пусть
вычисление bit_band_used(jk)=region_bit(jk)×BandWidth(jk);
вычисление bit_used_all=sum(bit_band_used(j)) j=0,1,…,L-1;
если bit_used_all<bits_left - 24, возврат и повторный поиск jk в каждом поддиапазоне кодирования, цикличное вычисление значения для распределения битов;
где 24 представляет собой максимальное значение ширины поддиапазона кодирования;
иначе, окончание цикла, вычисление значения для распределения битов и выдача текущего распределенного битового значения.
Наконец, оставшиеся биты в количестве меньше 24 распределяются поддиапазонам кодирования, соответствующим требованиям следующего принципа, основанного на важности поддиапазона кодирования. Предпочтительно распределение 0,5 бита каждому коэффициенту частотного домена в поддиапазоне кодирования, которому распределен 1 бит, и при этом важность поддиапазона кодирования уменьшается на 0,5; иначе, распределяется 1 бит каждому коэффициенту частотного домена в поддиапазоне кодирования, которому распределено 0 битов, и при этом важность поддиапазона кодирования уменьшается на 1 до тех пор, пока bit_left - bit_used_all<4 после завершения распределения битов.
При этом MaxBit представляет собой максимальное количество кодированных битов, которые могут распределяться одному коэффициенту частотного домена в поддиапазоне кодирования. В настоящем примере используется значение MaxBit=9. Это значение может быть надлежащим образом отрегулировано с учетом скорости кодирования кодека. Параметр region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования.
Этап 105, пирамидальное решетчатое векторное квантование и сферическое решетчатое векторное квантование соответственно используются к векторам в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений с целью выполнения квантования и кодирования для получения кодированных битов коэффициента частотного домена.
Используемый в настоящем изобретении процесс классификационного решетчатого векторного квантования и кодирования подробно описывается со ссылкой на Фиг.2.
Этап 106, создание потока кода кодирования.
На Фиг.9 представлена блок-схема состава кодового потока в настоящем примере изобретения. Сначала в мультиплексор битового потока MUX записывается дополнительная информация в следующей последовательности: Flag_huff_rms, Flag_huff_plvq и отсчет; затем в мультиплексор (MUX) записывается поддиапазон кодирования огибающей амплитуды в поддиапазоне кодирования, и затем в MUX записываются кодированные биты коэффициента частотного домена; и, наконец, записанный в представленном выше порядке кодовый поток передается на сторону декодирования.
Процесс классификационного решетчатого векторного квантования и кодирования
В частности, как видно из Фиг.2, процесс классификационного решетчатого векторного квантования и кодирования включает следующие этапы.
Этап 201, квантование значения огибающей амплитуды в поддиапазоне кодирования используется для выполнения нормализационной обработки всех коэффициентов частотного домена в данном поддиапазоне кодирования, и все коэффициенты частотного домена группируются для формирования нескольких подлежащих квантованию векторов.
Для выполнения нормализационной обработки всех коэффициентов частотного домена Xj в поддиапазоне кодирования используется квантование огибающей амплитуды 2Thq(j)/2 в поддиапазоне кодирования ƒ:
При этом непрерывно 8 коэффициентов частотного домена в поддиапазоне кодирования группируются с образованием одного 8-мерного вектора. На основе приведенного в Таблице 1 разделения поддиапазона кодирования коэффициенты в поддиапазоне кодирования j надлежащим образом группируются с образованием 8-мерных векторов Lattice_D8(j). Каждый нормализованный и сгруппированный 8-мерный подлежащий квантованию вектор может быть представлен в виде
Этап 202, вынесение решения о том, является ли количество распределенных битов в поддиапазоне кодирования j region_bit(j) меньше предустановленной пороговой величины, и при положительном ответе поддиапазон кодирования является поддиапазоном кодирования малых битовых значений, и выполняется этап 203, то есть используется пирамидальное решетчатое векторное квантование, а также выполняется этап 205 для осуществления кодирования после квантования; в противном случае поддиапазон кодирования является поддиапазоном кодирования больших битовых значений, и выполняется этап 204, то есть используется сферическое решетчатое векторное квантование, а также выполняется этап 206 для осуществления кодирования после квантования.
Этап 203, выполнение пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений.
В настоящем примере предустановленная пороговая величина равна 5, то есть количество битов, распределенных поддиапазону кодирования малых битовых значений j, соответствует условию: 1<=region_bit(j)<5.
В настоящем примере квантуется базирующийся на узле решетки D8 8-мерный решетчатый вектор, где узел решетки D8 определяется следующим образом:
где Z8 представляет собой 8-мерное целочисленное пространство. Ниже описывается основной способ отображения 8-мерного вектора (то есть квантования) на узел решетки D8:
предполагается, что х представляет собой произвольное действительное число, ƒ(x) представляет собой округляющую дискретизацию (квантование) ближайшего к x целого числа из двух соседних к нему целых чисел, w(x) представляет собой округляющее квантование целого числа, расположенного дальше от х из двух соседних к нему целых чисел. Аналогично для любого вектора могут быть определены Х=(х1,х2,…,х8)∈R8, ƒ(X)=(ƒ(x1), ƒ(x2),…,ƒ((x8)). Минимальный индекс в составляющих с максимальным абсолютным значением ошибки округления при квантовании выбирается в ƒ(X) и обозначается как k, далее определяется функция g(X)=(ƒ(x1), ƒ(x2),…,w(xk),…,ƒ(x8)), и тогда одна и только одна из функций ƒ(х) или g(Х) представляет значение узла решетки D8, и теперь квантованное значение для узла решетки D8 равно:
Процесс осуществления пирамидального решетчатого векторного квантования подлежащего квантованию вектора в поддиапазоне кодирования малых битовых значений включает:
Этап 203а, выполнение регулирования энергии подлежащего квантованию вектора.
В соответствии с количеством битов region_bit(f), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается подлежащий квантованию вектор, в приводимой ниже Таблице 2 находят соответствующие количеству битов последовательный номер в кодовой книге (index) и коэффициент масштабирования энергии (scale), затем выполняется регулирование энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
где
Следует отметить, что приводимая ниже Таблица 2 получена на основе использования статистических данных и применения следующего статистического метода.
Прежде всего, ограничение коэффициента масштабирования энергии scale в определенном диапазоне и использование специальной длины этапа 1 с целью вычисления среднеквадратического значения ошибки пирамидального решетчатого векторного квантования и инверсного квантования при условии использования определенного количества битов квантования при выборе соответствующей длины этапа, и поиск определенного диапазона, в котором расположено значение scale, соответствующее минимальному среднеквадратическому значению ошибки; и использование специальной длины этапа 2 для поиска среднеквадратического значения ошибки, соответствующего пирамидальному решетчатому векторному квантованию и инверсному квантованию при условии использования определенного количества битов квантования, и поиск значения scale, соответствующего минимальному среднеквадратическому значению ошибки, которое соответствует значению scale при квантовании в условиях определенного битового состояния.
Взаимосвязь между количеством битов пирамидального решетчатого векторного квантования, последовательным номером в кодовой книге, коэффициентом масштабирования энергии и максимальным пирамидальным поверхностным энергетическим радиусом
Этап 203b, квантование энергетически отрегулированного вектора для его отображения на узел решетки.
Энергетически отрегулированный вектор сначала подвергается квантованию для его отображения на узел решетки, и затем выносится решение о том, является ли энергия пирамидальной поверхности квантованного узла решетки
Квантование энергетически отрегулированного 8-мерного вектора
где ƒD8(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D8.
Вычисляется энергия пирамидальной поверхности узла решетки D8
Если энергия пирамидальной поверхности узла решетки D8
Если энергия пирамидальной поверхности узла решетки
Если энергия узла решетки
вычисление пирамидальной поверхностной энергии узла решетки D8
Kbak=temp_К
if temp_K>LargeK(index)
В то время как temp_K>LargeK(index)
Kbak-temp_K
В то время как temp K<=LargeKindex)
Kbak-temp_K
temp_K=Kbak
В текущий момент времени
Этап 203с, вычисление индекса векторного квантования узла решетки D8
Этап вычисления индекса векторного квантования узла решетки D8
этап 1, маркирование узлов решетки каждой пирамидальной поверхности в соответствии со значением энергии пирамидальной поверхности.
Для целочисленной решетчатой узловой сети ZL c размером L пирамидальная поверхность с энергетическим радиусом K определяется как:
Отметим, что N(L,K) представляют собой номера узлов решетки в S(L,K), и для целочисленной сети ZL справедливы следующие рекурентные формулы для N(L,K):
N(L,0)=1 (L≥0), N(0,K)=0 (K≥1)
N(L,K)=N(L-1, K)+N(L-1, K-1)+N(L, K-1) (L≥1, K≥1).
Для целочисленного узла решетки Y=(y1,y2,…,yL)∈ZL на пирамидальной поверхности с энергетическим радиусом К номер b в последовательности [0,1,…,N(L,K)-1] используется для идентификации, причем b называется меткой узла решетки, и для определения метки b используются следующие этапы:
этап 1.1, пусть b=0, i=1, k=K, l=L, вычисление N(m,n), (m<=L, n<=K) в соответствии с рекурсивными формулами, и определение:
этап 1.2, если yi=0, тогда b=b+0;
если |yi|=1, тогда
если |yi|>1, тогда
этап 1.3, k=k-|yi|, l=l-1, i=i+1, если теперь k=0, прекращение поиска, b(j,m)=b, который представляет собой метку Y, иначе, продолжение выполнения этапа 1.2;
этап 2, однотипная маркировка номеров узлов решетки на всех пирамидальных поверхностях;
где вычисление метки каждого узла решетки на всех пирамидальных поверхностях производится в соответствии с количеством узлов решетки на каждой пирамидальной поверхности и метки узла решетки на собственной пирамидальной поверхности,
где kk представляет собой четное число, b(j,m) представляет собой метку узла решетки D8
этап 203d, приведенные выше этапы 203а~203с повторяются до тех пор, пока закончится вычисление индекса векторного квантования для каждого 8-мерного вектора в каждом поддиапазоне кодирования с количеством кодированных битов, превышающим 0, но меньше порогового значения 5.
Этап 204, выполнение квантования в поддиапазоне кодирования больших битовых значений при сферическом решетчатом квантовании.
Количество битов, распределенных поддиапазону кодирования больших битовых значений j, удовлетворяет условию 5<=region_bit(j)<=9.
Здесь также применяется базирующееся на использовании решетки D8 8-мерное решетчатое векторное квантование.
Процесс осуществления сферического решетчатого квантования подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений включает:
Этап 204а, выполнение регулирования энергии подлежащего квантованию вектора.
Для m-того нормализованного подлежащего квантованию вектора
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6),
а параметр scale(region_bit(j)) представляет собой коэффициент масштабирования энергии в том случае, когда количество распределенных битов одному коэффициенту частотного домена в поддиапазоне кодирования задается параметром region_bit(j), и соответствующая взаимосвязь между ними может быть найдена из Таблицы 3.
Статистический способ получения приведенной ниже Таблицы 3 аналогичен способу получения Таблицы 2.
Взаимосвязь между количеством распределенных битов и коэффициентом масштабирования энергии для сферического решетчатого векторного квантования
Этап 204b, квантование энергетически отрегулированного вектора для его отображения на узел решетки и вынесение решения о том, является ли квантованное значение
Для выполнения отображения на узел решетки D8
Для вынесения решения о том, является ли квантованное значение
В случае соответствия нулевому векторному состоянию осуществляется прямое выполнение этапа 204с.
При несоответствии нулевому векторному состоянию выполняется усечение энергии энергетически отрегулированного вектора
Типичный процесс осуществления усечения энергии подлежащего квантованию вектора может быть описан в виде следующего псевдокода:
Dbak=temp_D≠0
Dbak=temp_D
В то время как temp_D=0
Dbak=temp_D
Этап 204с, создание индексного вектора для векторного квантования узла решетки D8
Индекс векторного квантования может быть получен путем использования следующего уравнения создания индексного вектора:
На выходе теперь будет получен индексный вектор k узла решетки D8
Этап 205, выполнение кодирования индекса векторного квантования в поддиапазоне кодирования малых битовых значений и окончание этапа.
Как уже описывалось выше, количество битов, распределяемых поддиапазону кодирования малых битовых значений должно соответствовать условию:
1<=region_bit(j)<5.
Выполнение кодирования индекса векторного квантования в поддиапазоне кодирования малых битовых значений включает следующие этапы:
этап 205а, выполнение кодирования по способу Хаффмана индекса векторного квантования в поддиапазоне кодирования малых битовых значений.
Кодирование по способу Хаффмана индекса векторного квантования выполняется в наборе С, охватывающем все 1 поддиапазоны кодирования, в которых количество распределенных битов одному коэффициенту частотного домена меньше определенного порогового значения. Индекс векторного квантования index_b(j,k) каждого 8-мерного вектора в каждом поддиапазоне кодирования получается на основе использования пирамидального решетчатого векторного квантования, где k соответствует k-му 8-мерному вектору в поддиапазоне кодирования j. Осуществление кодирования по способу Хаффмана индекса квантования index_b(j,k) включает следующие сценарии:
а) во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5, и не равно 2, каждые четыре бита в натуральном двоичном коде для каждого индекса векторного квантования выделяются в одну группу, и кодирование по способу Хаффмана осуществляется в этой группе, а сумма количества битов при кодировании по способу Хаффмана для всех этих 4-битовых групп представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
б) во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена равняется 2, для кодирования каждого индекса квантования 8-мерного пирамидального решетчатого вектора используются 15 битов;
эти 15 битов разбиваются на 3 4-битовые группы и 1 3-битовую группу, и затем осуществляется кодирование данных групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
в) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда индекс квантования кодируется 7 битами, которые разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
г) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда натуральный двоичный код индекса квантования определяется как "1111 1110", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
д) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда натуральный двоичный код индекса квантования определяется как "1111 1111", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
Способ осуществления кодирования по способу Хаффмана индекса квантования может быть описан следующим псевдокодом:
во всех поддиапазонах кодирования region_bit(j)=1.5 и 2<region_bit(j)<5,
n находится в диапазоне [0, region_bit(j)×8/4-1], увеличивается при длине этапа 1 и выполнении следующего цикла:
пусть index_b(j,k) задает сдвиг вправо на 4*n битов,
Вычисление младших 4 битов tmp для index_b(j,k), то есть Imp=and(index_b(j,k), 15)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_codebook(j,k)=plvq_code(tmp+1);
plvq_count(j,k)=plvq_bit_count(tmp+1);
где plvq_codebook(j,k) и plvq_count(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count и plvq_code выполнение поиска на основе Таблицы 4.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
В поддиапазоне кодирования region_bit(j)=2
n находится в диапазоне [0, region_bit(j)×8/4-2], увеличивается при длине этапа 1 и выполнении следующего цикла:
Пусть index_b(j,k) задает сдвиг вправо на 4*n битов,
Вычисление младших 4 битов tmp для index_b(j,k), то есть imp=and(index_b(j,k), 15)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count(tmp+1);
plvq_codebook(j,k)=plvq_code(tmp+1);
где plvq_codebook(j,k) и plvq_count(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count и plvq_code выполнение поиска на основе Таблицы 4.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Ниже рассматривается подлежащее обработке 3-битовое состояние: после index_b(j,k) задает сдвиг вправо на [region_bit(j)×8/4-2]*4 бита,
вычисление младших 3 битов tmp of index_b(j,k'), то есть tmp=and(index_b(j,k), 7)
вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r2_3(tmp+1);
plvq_codebook(j,k)=plvq_code_r2_3(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count_r2_3 и plvq_code_r2_3 выполнение поиска на основе Таблицы 5.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
В поддиапазоне кодирования region_bit(j)=1
Если index_b(j,k)<127
Вычисление младших 4 битов tmp для index_b(j,k), то есть tmp=and(index_b(j,k), 15)
Вычисление кодовых слов для tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r1_4(tmp+1);
plvq_codebook(j,k)=plvq_code_r1_4(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count_r1_4 и plvq_code_r1_4 выполнение поиска на основе Таблицы 6.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Ниже рассматривается подлежащее обработке 3-битовое состояние:
Пусть index_b(j,k) задает сдвиг вправо на 4 бита,
Вычисление младших 3 битов tmp для index_b(j,k), то есть tmp=and(index_b(j,k), 7)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r1_3(tmp+1);
plvq_codebook(j,k)=plvq_code_r1_3(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; кодовая книга plvq_bit_count_r1_3 and plvq_code_r1_3 выполнение поиска на основе Таблицы 7.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Если index_b(j,k)=127
{его двоичное значение равно "1111 1110"
Относительно первых трех "1" и последних четырех "1", следует соответственно выполнять поиск в таблицах по способу Хаффмана, приведенных в Таблице 7 и в Таблице 6,
способ вычислений тот же самый, что и по вышеупомянутому условию для index_b(j,k)<127.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению: всего требуется 8 битов.
Если index_b(j,k)=128
{его двоичное значение равно "1111 1111"
Относительно первых трех "1" и последних четырех "1", следует соответственно выполнять поиск в таблицах по способу Хаффмана, приведенных в Таблице 7 и в Таблице 6, способ вычислений тот же самый, что и по вышеупомянутому условию для index_b(j,k)<127.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению: всего требуется 8 битов.
Кодовая таблица пирамидального векторного кодирования по способу Хаффмана
Когда осуществляется кодирование по способу Хаффмана индексов пирамидального решетчатого векторного квантования во всех поддиапазонах кодирования, используются различные кодовые книги для кодирования индекса векторного квантования в поддиапазоне кодирования в соответствии с количеством битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Этап 205b, вынесение решения об экономии битов при кодировании по способу Хаффмана, и в случае положительного решения использование кодирования по способу Хаффмана индекса квантования, и выполнение этапа 205с, в противном случае выполняется натуральное кодирование индекса квантования.
Согласно этапу 205а в С bit_used_huff_all вычисляется общее количество затраченных битов во всех поддиапазонах кодирования при кодировании по способу Хаффмана индексов квантования, относящихся к 8-мерным векторам. Параметр bit_used_huff_all сравнивается с суммой битов, затраченных во всех поддиапазонах кодирования, в параметре С sum(bit_band_used(j), j∈C), то есть сравнивается с суммой произведений количества коэффициентов частотного домена для всех поддиапазонов кодирования в С, на количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования. Если bit_used_huff_all<sum(bit_band_used(j), j∈C), то передаются биты кодированного по способу Хаффмана индекса квантования, и при этом флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq устанавливается в 1; в противном случае осуществляется натуральное кодирование индекса векторного квантования, и флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq устанавливается в 0.
Этап 205с, осуществление изменения распределения битов и повторное выполнение векторного квантования и кодирования в поддиапазоне кодирования, для которого было изменено распределение битов.
Если флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq равняется 0, то распределенные поддиапазону кодирования биты не изменяются. Если флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq равняется 1, то распределенные поддиапазону кодирования биты изменяются с использованием битов, сохраненных при кодировании по способу Хаффмана.
Когда распределенные поддиапазону кодирования биты изменяются, как в настоящем примере, то длина этапа изменения количества битов и длина этапа уменьшения важности после изменения количества битов в поддиапазоне кодирования малых битовых значений равны 0.5; длина этапа увеличения количества битов и длина этапа уменьшения важности после увеличения количества битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений равны 1.
Поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему. Поддиапазон кодирования нулевого бита представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, равняется нулю.
Как видно из Фиг.3, процесс изменения распределения битов в этап в 205с, в частности, включает следующие этапы:
этап 301, вычисление количества битов, сохраняемых при кодировании по способу Хаффмана при diff_huff, пусть count=0:
diff_huff=sum(bit_band_used(j), j∈C)-bit_used_huff_all.
Если diff_huff больше 0, то это соответствует случаю сохранения битов при кодировании по способу Хаффмана, и количество сохраненных битов при кодировании по способу Хаффмана представляет собой количество битов, которое может быть использовано при выполнении изменения распределения битов в поддиапазоне кодирования.
Этап 302, определение поддиапазона кодирования с максимальной важностью во всех поддиапазонах кодирования;
определение максимального значения rk(jk) в каждом поддиапазоне rk(j)(j=0,…,L-1), представленного в уравнении:
Этап 303, вынесение решения о том, является ли количество распределенных битов в поддиапазоне кодирования с максимальной важностью плюс 1 (region_bit(jk)+1) (меньше или равно максимальному количеству кодированных битов, которые могут быть распределены одному коэффициенту частотного домена в поддиапазоне кодирования MaxBit (например, MaxBit=9), и в случае положительного решения переход к этапу 304, а в противном случае выполнение регулирования важности поддиапазона кодирования в соответствии с jk самого низкого значения (например, пусть rk(jk)=-100), что соответствует отсутствию необходимости изменения распределения битов в поддиапазоне кодирования, а затем переход к этапу 302.
Если количество битов, распределяемых поддиапазону кодирования с максимальной важностью, достигло максимально возможного количества, важность поддиапазона кодирования устанавливается на самую низкую, и распределенное поддиапазону кодирования количество битов не изменяется.
Этап 304, вынесение решения о том, является ли значение diff_puff-(region_bit(jk)+1)×BandWidth(jk)) больше или равно 0, и в случае положительного решения указание о том, что количество сохраненных битов достаточно для выполнения изменения распределения битов в поддиапазоне кодирования, и затем переход к этапу 305; в противном случае завершение процесса изменения распределения битов.
Этап 305, вынесение решения о том, является ли количество распределенных битов region_bit(jk) равным 0, или большим или равным порогового значения 5, и в случае положительного решения переход к этапу 306, в противном случае переход к этапу 307.
Этап 306, изменение количества битов, распределенных поддиапазону кодирования jk region_bit(jk) для того, чтобы region_bit(jk)=region_bit(jk)+1, уменьшение значения важности поддиапазона rk(jk) для того, чтобы rk(jk)=rk(jk)-1; пусть отсчет итераций изменения количества распределенных битов станет count=count+1, и повторное выполнение векторного квантования и кодирования по способу Хаффмана в поддиапазоне кодирования jk, и затем обновление значения diff_huff.
Этап 307, изменение количества битов, распределенных поддиапазону кодирования jk region_bit(jk) для того, чтобы region_bit(jk)=region_bit(jk)+0.5; уменьшение значения важности поддиапазона rk(jk) для того, чтобы rk(jk)=rk(jk)-0.5; пусть count=count+1, и повторное выполнение векторного квантования и кодирования по способу Хаффмана в поддиапазоне кодирования jk, и затем обновление значения diff_huff.
Повторное выполнение векторного квантования и кодирования в поддиапазоне кодирования, для которого было изменено распределение битов, и выполнение кодирования по способу Хаффмана до тех пор, пока будет сохраняться большее количество битов, чем при натуральном кодировании, сохраненные биты дополнительно используются для изменения распределения битов в поддиапазоне кодирования.
Этап 308, вынесение решение о том, является ли количество отсчетов итераций изменения распределения битов count меньше Maxcount, и в случае положительного решения переход к этапу 302, в противном случае завершение процесса изменения распределения битов.
Приведенное выше значение Maxcount представляет собой наибольшее предельное значения количества итераций изменения распределения битов, определяемое кодированным битовым потоком и частотой дискретизации. В настоящем примере используется значение Maxcount=31.
Этап 206, кодирование индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Количество битов, распределенных поддиапазону кодирования больших битовых значений j, удовлетворяет условию: 5<=region_bit(j)<=9.
Индексный вектор k={k1, k2, k3, k4, k5, k6, k7, k8} получается после квантования 8-мерного вектора в поддиапазоне кодирования с количеством кодированных битов от 5 до 9, каждая составляющая индексного вектора k подвергается прямому кодированию в соответствии с количеством битов, распределенных одному коэффициенту частотного домена с целью получения кодированных битов вектора.
Из статистических результатов можно видеть, что при условии использования частоты дискретизации 32 кГц и скорости кодового потока 32 кбит/с 96% всех поддиапазонов кодирования будут поддиапазонами кодирования с количеством распределенных битов меньше 5. То есть возможность использования пирамидального решетчатого векторного квантования составляет 96% от всего векторного квантования. Пирамидальное решетчатое векторное квантование играет очень важную роль в настоящем изобретении и использование изменяемой длины этапа распределения битов для распределения битов, где длина этапа распределения битов одного коэффициента частотного домена может минимально регулироваться до половины бита, таким образом улучшая эффективность использования битов. Примененный в настоящем изобретении алгоритм маркирования узла решетки для способа пирамидального решетчатого векторного квантования с малой длиной битового этапа обладает низкой сложностью и занимает мало места при хранении. Кроме того, используется новый закон принятия решения для расширения маркирования кодовой книги при осуществлении сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений, таким образом дополнительно уменьшая сложность способа решетчатого векторного квантования.
2. Способ декодирования
Способ декодирования звука с решетчатым векторным квантованием в настоящем изобретении обратен способу кодирования и включает:
A. Декодирование кодированных битов каждой огибающей амплитуды в подлежащем декодированию битовом потоке получения квантованной составляющей огибающей амплитуды в каждом поддиапазоне кодирования.
В. Выполнение распределения битов в каждый поддиапазон кодирования, разделение поддиапазона кодирования на поддиапазон кодирования малых битовых значений и поддиапазон кодирования больших битовых значений в соответствии с количеством распределенных битов в каждый поддиапазон кодирования, выполнение декодирования, инверсное квантование и инверсная нормализация пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и выполнение декодирования, инверсное квантование и инверсная нормализация сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений, а также получение коэффициентов частотного домена в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений; где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
перед этапом выполнения распределения битов в каждый поддиапазон кодирования сначала осуществляется вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования и затем выполняется распределение битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов. После выполнения распределения битов и перед осуществлением декодирования выполняется изменение распределения битов и поддиапазоне кодирования счетное количество раз в соответствии со значением отсчета итераций изменения распределения битов и важности каждого поддиапазона кодирования на стороне кодирования.
При выполнении декодирования в поддиапазоне кодирования малых битовых значений осуществляется кодирование по способу Хаффмана или прямое декодирование в поддиапазоне кодирования малых битовых значений в соответствии с состоянием флажка кодирования по способу Хаффмана для коэффициента частотного домена на стороне кодирования для получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений и выполнение инверсного пирамидального решетчатого векторного квантования всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования; при декодировании в поддиапазоне кодирования больших битовых значений осуществляется прямое натуральное декодирование в поддиапазоне кодирования больших битовых значений для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений и осуществления инверсного квантования всех индексов векторного квантования при сферическом решетчатом векторном квантовании с целью получения коэффициента частотного домена в поддиапазоне кодирования.
С. Выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) частотного коэффициента после шумового заполнения для получения конечного звукового сигнала.
На Фиг.4 приводится структурная блок-схема способа декодирования звука с решетчатым векторным квантованием в соответствии с примером реализации настоящего изобретения. Как видно из Фиг.4, данный способ предусматривает следующие этапы.
Этап 401, декодирование кодированных битов каждой огибающей амплитуды для получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования.
Кадр закодированных битов извлекается из поступающего со стороны кодирования закодированного битового потока (то есть поступающего от демультиплексора битового потока DeMUX); после извлечения кодированных битов сначала выполняется декодирование дополнительной информации, а затем закодированные биты каждой огибающей амплитуды в кадре подвергаются декодированию по способу Хаффмана или прямому декодированию в соответствии со значением огибающей амплитуды флажка кодирования по способу Хаффмана Flag_huff_rms с целью получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования Thq(j) j=0,…,L-1.
Этап 402, выполнение распределения битов в каждом поддиапазоне кодирования.
В каждом поддиапазоне кодирования в соответствии с показателем квантования огибающей амплитуды вычисляется исходное значение важности каждого поддиапазона кодирования, и это значение важности поддиапазона кодирования используется для выполнения распределения битов в каждый поддиапазон кодирования с целью получения количества битов, распределенных данному поддиапазону кодирования; распределение количества битов на стороне декодирования и на стороне кодирования одинаковое. При распределении битов длина этапа распределения битов и длина этапа уменьшения важности в поддиапазоне кодирования после распределения битов могут изменяться.
После выполнения указанного выше распределения битов процесс завершается, выполняется изменение распределения битов в поддиапазоне кодирования счетное количество раз в соответствии со значением отсчета итераций изменения распределения битов и важности каждого поддиапазона кодирования на стороне кодирования, и затем процесс распределения битов завершается.
Во время распределения битов и выполнения их изменения длина этапа распределения битов и длина этапа изменения распределения битов равны 1 биту в случае распределения битов поддиапазону кодирования с количеством распределенных битов 0, а длина этапа уменьшения важности после распределения битов и изменения распределения битов равна 1. Длина этапа распределения битов и длина этапа изменения распределения битов равны 0,5 бита в случае дополнительного распределения битов поддиапазону кодирования с количеством распределенных битов больше 0 и меньше определенного порогового значения, а длина этапа уменьшения важности после распределения битов и изменения распределения битов также равна 0.5. Длина этапа распределения битов и длина этапа изменения распределения битов равны 1 биту в случае дополнительного распределения битов поддиапазону кодирования с количеством распределенных битов больше порогового значения или равным ему, а длина этапа уменьшения важности после распределения битов и изменения распределения битов также равна 1.
Этап 403, разделение всех поддиапазонов кодирования на поддиапазоны кодирования малых битовых значений и поддиапазоны кодирования больших битовых значений в соответствии с количеством битов, распределенных поддиапазону кодирования, то есть вынесение решения о том, является ли количество битов, распределенных поддиапазону кодирования j region_bit(j) меньше предварительно установленного порогового значения, и в случае положительного решения поддиапазон кодирования представляет собой поддиапазон кодирования малых битовых значений, переход к этапу 404, в противном случае поддиапазон кодирования представляет собой поддиапазон кодирования больших битовых значений, переход к этапу 405.
Этап 404, декодирование поддиапазона кодирования малых битовых значений для получения индекса пирамидального решетчатого векторного квантования и вычисление узла решетки D8, соответствующего индексу пирамидального решетчатого векторного квантования, а также получение коэффициента частотного домена в поддиапазоне кодирования малых битовых значений после выполнения инверсной нормализации; переход к этапу 406.
Выполнение декодирования по способу Хаффмана или прямого натурального декодирования в поддиапазоне кодирования малых битовых значений в соответствии с дополнительной информацией для получения индекса пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений.
Если Flag_huff_plvq=0, прямое выполнение натурального декодирования для получения индекса m-того векторного квантования в поддиапазоне кодирования малых битовых значений j index_b(j,m); если Flag_huff_plvq=1, индекс m-того вектора квантования в поддиапазоне кодирования малых битовых значений j index_b(j,m) получается в соответствии с кодовой таблицей для кодирования по способу Хаффмана, согласно количеству битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, и если значение натурального двоичного кода индекса квантования меньше "1111 111", тогда индекс квантования вычисляется в соответствии со значением натурального двоичного кода; если значение натурального двоичного кода индекса квантования равно "1111 111", тогда постоянно считывается следующий бит, причем если следующий бит - 0, тогда значение индекса квантования равно 127, если следующий бит - 1, тогда значение индекса квантования равно 128.
Процесс вычисления узла решетки D8, соответствующего индексу пирамидального решетчатого векторного квантования, представляет собой процесс, обратный процессу векторного квантования, и данный процесс инверсного квантования пирамидального решетчатого векторного квантования осуществляется следующим образом.
Этап 404а, определение энергетической пирамидальной поверхности, на которой располагается индекс квантования, и метки индекса квантования на этой энергетической пирамидальной поверхности.
Осуществление поиска kk для энергии пирамидальной поверхности от 2 до LargeK(region_bit(j)) при выполнении следующего неравенства:
N(8,kk)<=index_b(j,m)<N(8,kk+2),
если такое значение kk находится, тогда K=kk представляет энергию пирамидальной поверхности, где узел решетки D8 соответствует найденному индексу квантования index_b(j,m), b=index_b(j,m)-N(8,kk) представляет собой метку индекса узла решетки D8 на той пирамидальной поверхности, на которой располагается узел решетки D8.
если такое значение kk не находится, тогда энергия пирамидальной поверхности узла решетки D8 соответствует индексу квантования index_b(j,m) К=0, а метка индекса b=0.
этап 404b, характерные этапы по нахождению решения для вектора Y=(y1, y2, у3, у4, у5, у6, у7, у8) узла решетки D8, чья энергия пирамидальной поверхности К и метка индекса b находятся следующим образом:
этап 1, пусть Y=(0,0,0,0,0,0,0,0), xb=0, i=1, k=K, l=8;
этап 2, если b=xb, тогда yi=0; переход к этапу 6;
этап 3, если b<xb+N(l-1, k), тогда yi=0, и переход к этапу 5;
иначе, xb=xb+N(l-1, k); пусть j=1;
этап 4, если b<xb+2*N(l-1, k-j), тогда
если xb<=b<xb+N(l-1, k-j), тогда yi=j;
если b>=xb+N(l-1, k-j), тогда yi=-j, xb=xb+N(l-1, k-j);
иначе, xb=xb+2*N(l-1, k-j), j=j+1; продолжение выполнения этапа;
этап 5, обновление значения k=k-|yi], l=l-1, i=i+l, если k>0, тогда переход к этапу 2;
этап 6, если k>0, тогда y8=k-|yi|, Y=(y1, y2,…,y8) это полученный узел решетки.
Этап 404с, выполнение инверсного регулирования энергии найденного значения узла решетки D8 для получения
где а=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale{index} представляет собой коэффициент масштабирования, который может быть найден в Таблице 2.
Этап 404d, осуществление инверсной нормализационной обработки
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Этап 405, выполнение декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений с целью получения коэффициента частотного домена в поддиапазоне кодирования больших битовых значений.
Прямое выполнение натурального декодирования кодированных битов в поддиапазоне кодирования больших битовых значений для получения m-того индексного вектора k для старших кодированных битов j. Процесс осуществления инверсного квантования индексного вектора сферического решетчатого векторного квантования действительно обратен процессу квантования, и ниже приводятся его характерные этапы:
этап 405а, вычисление значения x=k*G, и вычисление значения ytemp=x/(2^(region_bit(j)); где k представляет собой индексный вектор векторного квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D8 и имеет следующий вид:
этап 405b, вычисление y=x-ƒD8(ytemp)*(2^region_bit(f));
этап 405с, выполнение инверсной регулировки энергии найденного значения узла решетки D8 для получения
где а=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(region_bit(j)) представляет собой коэффициент масштабирования и может быть найден в Таблице 3.
этап 405d, выполнение инверсной нормализационной обработки
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Этап 406, упорядочение коэффициентов частотного домена всех поддиапазонов кодирования в соответствии со значением частоты, шумовым заполнением и расширением полосы частот поддиапазонов с нераспределенными кодированными битами в процессе кодирования или поддиапазонов, утраченных в процессе передачи.
Этап 407, выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) коэффициента частотного домена после осуществления шумового заполнения и расширения полосы частот с целью получения конечного звукового сигнала.
3. Система кодирования
Для реализации указанного выше способа декодирования в настоящем изобретении дополнительно предусматривается наличие системы кодирования звука с решетчатым векторным квантованием, как видно из Фиг.5, эта система включает узел модифицированного дискретного косинусного преобразования (МДКП) 51, узел вычисления огибающей амплитуды 52, узел квантования и кодирования огибающей амплитуды 53, узел распределения битов 54, узел нормализационной обработки 55, узел классификационного решетчатого векторного квантования и кодирования 56 и мультиплексор битового потока (MUX) 57. Причем
узел МДКП предназначен для выполнения МДКП звукового сигнала с с получением коэффициентов частотного домена;
узел вычисления огибающей амплитуды соединяется с узлом МДКП и предназначается для разделения полученных узлом МДКП в нескольких поддиапазонах кодирования коэффициентов частотного домена и вычисления значения огибающей амплитуды в каждом поддиапазоне кодирования;
при выполнении разделения на поддиапазоны кодирования узел вычисления огибающей амплитуды осуществляет разделение коэффициентов частотного домена после выполнения модифицированного дискретного косинусного преобразования на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Узел квантования и кодирования огибающей амплитуды соединяется с узлом вычисления огибающей амплитуды и предназначен для квантования и кодирования значения огибающей амплитуды в каждом поддиапазоне кодирования с целью получения кодированных битов огибающей амплитуды в каждом поддиапазоне кодирования.
Узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования.
В частности, узел распределения битов включает соединенные друг с другом модуль вычисления важности и модуль распределения битов, где
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Исходное значение важности вычисляется согласно оптимальному битовому значению при условии получения максимального отношения квантованного сигнала к шуму и коэффициенту масштабирования в соответствии с характеристиками слухового восприятия, или показателя степени квантования Thq(j) или значения [µ×log2[Th(j)]+ν] в каждом поддиапазоне кодирования огибающей амплитуды, где µ>0, a µ и ν представляют собой действительные числа.
Модуль вычисления важности сконфигурирован таким образом, чтобы при вычислении исходного значения важности сначала осуществлялось вычисление среднего количества используемых битов одного коэффициента частотного домена; и затем вычислялось оптимальное битовое значение при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации; после чего вычислялось исходное значение важности каждого поддиапазона кодирования при распределении битов в соответствии со средним количеством используемых битов и оптимальной битовой величиной;
модуль распределения битов предназначен для выполнения распределения битов в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, увеличения количества кодированных битов каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью, и уменьшения важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых всеми поддиапазонами кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений. Например, когда модуль распределения битов выполняет распределение битов, то длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений равна 0,5; длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений равна 1.
Узел нормализационной обработки соединяется с узлом МДКП и предназначается для использования при осуществлении квантования значения огибающей амплитуды в поддиапазоне кодирования с целью выполнения нормализационной обработки всех коэффициентов частотного домена в каждом поддиапазоне кодирования.
Узел классификационного решетчатого векторного квантования и кодирования соединяется с узлом нормализационной обработки и узлом распределения битов и предназначается для выполнения квантования и кодирования нормализованных подлежащих квантованию векторов в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений, соответственно, для пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, с целью получения кодированных битов коэффициента частотного домена; причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему.
Мультиплексор битового потока (MUX) соединяется с узлом квантования и кодирования огибающей амплитуды и узлом классификационного решетчатого векторного квантования и кодирования, и предназначается для мультиплексирования кодированных битов в каждом поддиапазоне кодирования и кодированных битов коэффициентов частотного домена, и передачи их на сторону декодирования.
Узел классификационного решетчатого векторного квантования и кодирования подробно описывается со ссылкой на Фиг.6:
как видно из Фиг.6, узел классификационного решетчатого векторного квантования и кодирования включает классификационный обрабатывающий модуль 61, модуль пирамидального решетчатого векторного квантования 62, модуль сферического решетчатого векторного квантования 63, модуль вынесения решения о типе кодирования 64, модуль кодирования по способу Хаффмана 65, модуль натурального кодирования 66 и модуль изменения распределенных битов 67, причем
классификационный обрабатывающий модуль соединяется с узлом нормализационной обработки и предназначен для группирования нормализованных коэффициентов частотного домена с целью создания 8-мерного подлежащего квантованию вектора и передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования малых битовых значений в модуль пирамидального решетчатого векторного квантования, а также передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования больших битовых значений в модуль сферического решетчатого векторного квантования для обработки;
модуль пирамидального решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначен для выполнения пирамидального решетчатого векторного квантования нормализованного подлежащего квантованию вектора в каждом поддиапазоне кодирования малых битовых значений;
модуль пирамидального решетчатого векторного квантования включает первый субмодуль регулирования энергии 621, первый субмодуль квантования узла решетки 622, первый субмодуль настройки энергии 623 и субмодуль вычисления индекса квантования 624, причем
первый субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
первый субмодуль регулирования энергии дополнительно предназначен для осуществления при выполнении регулирования энергии 8-мерного подлежащего квантованию вектора первичного поиска в предшествующей Таблице 2 последовательного номера в кодовой книге (Index) и коэффициента масштабирования энергии (scale), соответствующих количеству битов (region_bit(j)), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор; и затем выполнения регулирования энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
где
первый субмодуль квантования узла решетки соединяется с первым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
при осуществлении решетчатого квантования первый субмодуль квантования узла решетки выполняет квантование 8-мерного вектора
где ƒD8(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D8;
первый субмодуль настройки энергии соединяется с первым субмодулем квантования узла решетки и предназначен для сравнения энергии узла решетки D8 с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, и если энергия узла решетки D8 меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, передачи сообщения на субмодуль вычисления индекса квантования о необходимости вычисления индекса квантования узла решетки D8 в кодовой книге; если энергия узла решетки D8 больше максимального пирамидального поверхностного энергетического радиуса, осуществления усечения энергии отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования, и передачи сообщения на первый субмодуль квантования узла решетки для усечения энергии до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременно постоянного добавления энергии энергетически связанному подлежащему квантованию вектору, передачи сообщения на первый субмодуль квантования узла решетки с целью осуществления квантования подлежащего квантованию вектора с добавленной энергией для его отображения на узел решетки D8 до тех пор, пока энергия узла решетки D8, до которой квантуется подлежащий квантованию вектор с добавленной энергией, не станет больше максимального пирамидального поверхностного энергетического радиуса, и передачи сообщения на субмодуль вычисления индекса квантования с целью вычисления индекса квантования последнего узла решетки D8, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса в кодовой книге;
модуль вычисления индекса квантования соединяется с первым субмодулем настройки энергии и предназначается для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с сообщением первого субмодуля настройки энергии.
Субмодуль вычисления индекса квантования предназначен для осуществления при вычислении индекса квантования узла решетки D8
Модуль сферического решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначается для выполнения сферического решетчатого векторного квантования нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений; причем модуль сферического решетчатого векторного квантования включает второй субмодуль регулирования энергии 631, второй субмодуль квантования узла решетки 632, субмодуль вынесения решения о наличии нулевого векторного состояния 633, второй субмодуль настройки энергии 634 и субмодуль вычисления индексного вектора 635, при этом
второй субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
при выполнении регулирования энергии 8-мерного подлежащего квантованию вектора второй субмодуль регулирования энергии сначала выполняет поиск коэффициента масштабирования энергии scale(region _bit{j)) в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается подлежащий квантованию вектор
где
a scale(region_bit(j)) представляет собой коэффициент масштабирования энергии в том случае, когда количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования, равно region_bit(j), а соответствующую взаимосвязь можно с использованием Таблицы 3;
второй субмодуль квантования узла решетки соединяется со вторым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора с целью его отображения на узел решетки D8;
второй субмодуль квантования узла решетки осуществляет преобразование m-того подлежащего квантованию вектора
субмодуль вынесения решения о наличии нулевого векторного состояния соединяется со вторым субмодулем квантования узла решетки и предназначен для вынесения решения о том, соответствует ли узел решетки D8 нулевому векторному состоянию, и в случае такого соответствия передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления индексного вектора узла решетки D8; а в случае несоответствия - передачи сообщения на второй субмодуль настройки энергии с целью настройки энергии подлежащего квантованию вектора; наличие нулевого векторного состояния вызывает деление полученного квантованием значения узла решетки D8 на 2 в степени количества распределенных битов 2region_bit(j) и затем создание узла решетки D8, причем созданный узел решетки D8 представляет собой нулевой вектор, где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования;
второй субмодуль настройки энергии соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем квантования узла решетки и предназначен для выполнения усечения значения энергии подлежащего квантованию вектора, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; сохранение множественного значения w самого подлежащего квантованию вектора, добавление сохраненного множественного значения w к энергетически связанному подлежащему квантованию вектору, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; и передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления нового индексного вектора узла решетки D8, соответствующего нулевому векторному состоянию;
субмодуль вычисления индексного вектора соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с полученными сообщениями из субмодуля вынесения решения о наличии нулевого векторного состояния и второго субмодуля настройки энергии.
Субмодуль вычисления индексного вектора вычисляет индекс векторного квантования k m-ого векторного квантования для отображения на узел решетки D8
где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет
собой порождающую матрицу узла решетки D8 и имеет следующий вид:
Модуль вынесения решения о типе кодирования соединяется с модулем пирамидального решетчатого векторного квантования и предназначается для вынесения решения о том, является ли общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемых для выполнения натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, и в случае положительного решения передачи сообщения на модуль кодирования по способу Хаффмана и модуль изменения распределенных битов; в противном случае выполняется передача сообщения на модуль натурального кодирования.
Модуль кодирования по способу Хаффмана предназначен для выполнения кодирования по способу Хаффмана индекса квантования в поддиапазоне кодирования малых битовых значений, и установки флажка кодирования коэффициента частотного домена по способу Хаффмана в состояние, соответствующее использованию кодирования по способу Хаффмана.
Когда модуль кодирования по способу Хаффмана выполняет соответствующее кодирование индексов квантования всех поддиапазонов кодирования малых битовых значений,
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5 и не равно 2, каждые четыре бита в натуральном двоичном коде для каждого индекса векторного квантования выделяются в одну группу, и кодирование по способу Хаффмана осуществляется для этой группы, а сумма количества битов при кодировании по способу Хаффмана для всех этих 4-битовых групп представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена равняется 2, для кодирования каждого индекса квантования 8-мерного пирамидального решетчатого вектора используются 15 битов, и эти 15 битов разбиваются на 3 4-битовые группы и 1 3-битовую группу, и затем осуществляется кодирование данных групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда индекс квантования кодируется 7 битами, которые разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда натуральный двоичный код индекса квантования определяется как "1111 1110", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда натуральный двоичный код индекса квантования определяется как "1111 1111", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
Когда осуществляется кодирование по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индексов векторного квантования в поддиапазоне кодирования используются различные кодовые книги в соответствии с количеством битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Модуль натурального кодирования предназначен для выполнения натурального кодирования индекса квантования в поддиапазоне кодирования малых битовых значений, и индексного вектора в поддиапазоне кодирования больших битовых значений.
Модуль изменения распределенных битов предназначен для использования битов, сохраненных при кодировании по способу Хаффмана, для изменения количества распределенных битов в поддиапазоне кодирования, и передачи сообщения на классификационный обрабатывающий модуль с целью классификации поддиапазонов кодирования по количеству подлежащих изменению распределенных битов, и затем повторного выполнения векторного квантования и кодирования.
При выполнении распределения битов модуль изменения распределенных битов выполняет поиск поддиапазона кодирования с максимальной важностью среди всех поддиапазонов кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения битов, которое может распределяться поддиапазону кодирования, выполняет регулировку важности наименее важного поддиапазона кодирования, и не может дальше изменять количество распределенных битов поддиапазону кодирования, в противном случае он выполняет изменение распределения битов для поддиапазона кодирования с максимальной важностью;
при изменении распределения битов, модуль изменения распределенных битов распределяет 1 бит поддиапазону кодирования с количеством распределенных битов 0 и выполняет уменьшение важности на 1 после распределения битов; он выполняет распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5, и уменьшение важности на 0,5 после распределения битов; он выполняет распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5 и уменьшение важности на 1 после распределения битов.
После каждого случая изменения количества распределенных битов модулем изменения распределенных битов происходит увеличение на 1 отсчета итераций изменения количества распределенных битов, и если значение отсчета итераций изменения количества распределенных битов достигло предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходит окончание процесса изменения количества распределенных битов.
Для мультиплексора последовательность мультиплексирования и упаковки закодированных битов следующая: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированный бит огибающей амплитуды, кодированный бит коэффициента частотного домена.
4. Система декодирования
Для реализации указанного выше способа декодирования в настоящем изобретении дополнительно предусматривается наличие системы декодирования звука с решетчатым векторным квантованием, и, как видно из Фиг.7, эта система включает демультиплексор битового потока (DeMUX) 71, узел декодирования огибающей амплитуды поддиапазона кодирования 72, узел распределения битов 73, узел декодирования коэффициента частотного домена 74, узел инверсного классификационного решетчатого векторного квантования 75, узел инверсной нормализационной обработки 76, узел шумового заполнения 77 и узел обратного модифицированного дискретного косинусного преобразования (ОМДКП) 78, причем
демультиплексор битового потока (DeMUX) предназначен для отделения вспомогательной информации, кодированных битов огибающей амплитуды и кодированных битов доменного коэффициента от подлежащего декодированию битового потока;
узел декодирования огибающей амплитуды соединяется с демультиплексором битового потока и предназначен для декодирования кодированных битов огибающей амплитуды с выхода демультиплексора битового потока с целью получения огибающей амплитуды показателя квантования в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом декодирования огибающей амплитуды поддиапазона кодирования и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел распределения битов включает модуль вычисления важности, модуль распределения битов и модуль изменения распределенных битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии с поддиапазоном кодирования значения огибающей амплитуды;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования согласно исходному значению важности каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов;
модуль изменения распределенных битов предназначен для выполнения изменения распределенных битов в поддиапазоне кодирования счетное количество раз после выполнения распределения битов в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования.
Когда модуль распределения битов выполняет распределения битов, то длина этапа распределения битов и длина этапа уменьшения важности после распределения битов в поддиапазоне кодирования малых битовых значений меньше длины этапа распределения битов и длины этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Узел декодирования коэффициента частотного домена соединяется с узлом декодирования огибающей амплитуды и узлом распределения битов и предназначается для осуществления декодирования поддиапазона кодирования малых битовых значений с целью получения индекса квантования в поддиапазоне кодирования малых битовых значений; и для осуществления декодирования поддиапазона кодирования больших битовых значений с целью получения индексного вектора в поддиапазоне кодирования больших битовых значений, где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
узел декодирования коэффициента частотного домена осуществляет при выполнении декодирования в поддиапазоне кодирования малых битовых значений кодирование по способу Хаффмана в поддиапазоне кодирования малых битовых значений в соответствии с флажком кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования или прямое декодирование поддиапазона кодирования малых битовых значений с целью получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений; при выполнении декодирования в поддиапазоне кодирования больших битовых значений он выполняет прямое декодирование в поддиапазоне кодирования больших битовых значений с целью получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Узел декодирования коэффициента частотного домена при выполнении декодирования по способу Хаффмана в поддиапазоне кодирования малых битовых значений в том случае, когда количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования, равно 1, если значение натурального двоичного кода индекса квантования меньше "1111 1111", вычисляет индекс квантования в соответствии со значением натурального двоичного кода; если значение натурального двоичного кода индекса квантования равно "1111 1111", тогда выполняется постоянное считывание следующего бита, и если следующий бит равен 0, тогда значение индекса квантования равно 127, а если следующий бит равен 1, тогда значение индекса квантования равно 128.
Узел инверсного классификационного решетчатого векторного квантования предназначен для инверсного квантования индексного вектора выполненного пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и осуществления инверсного квантования индексного вектора выполненного сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений.
Узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализации значений, полученных после осуществления инверсного квантования в поддиапазоне кодирования, а также для получения коэффициента частотного домена.
В частности, для
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Узел шумового заполнения предназначен для выполнения заполнения шумом поддиапазона, которому узел инверсной нормализационной обработки не распределил бит для выходного значения коэффициента частотного домена;
узел обратного модифицированного дискретного косинусного преобразования (ОМДКП) соединяется с узлом шумового заполнения и предназначен для выполнения ОМДКП коэффициента частотного домена, для которого было выполнено шумовое заполнение с целью получения звукового сигнала.
Узел инверсного классификационного решетчатого векторного квантования подробно описывается со ссылкой на Фиг.8.
Как видно из Фиг.8, узел инверсного классификационного решетчатого векторного квантования включает классификационный обрабатывающий модуль 81, модуль инверсного пирамидального решетчатого векторного квантования 82 и модуль инверсного сферического решетчатого векторного квантования 83, причем
классификационный обрабатывающий модуль предназначен для передачи индекса квантования из поддиапазона кодирования малых битовых значений в модуль инверсного пирамидального решетчатого векторного квантования для обработки и для передачи индекса квантования из поддиапазона кодирования больших битовых значений в модуль инверсного сферического решетчатого векторного квантования для обработки.
Модуль инверсного пирамидального решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса квантования в поддиапазоне кодирования малых битовых значений; причем модуль инверсного пирамидального решетчатого векторного квантования 82 включает соединенные друг с другом первый субмодуль инверсного квантования узла решетки 821 и первый субмодуль инверсного регулирования энергии 822, причем
первый субмодуль инверсного квантования узла решетки предназначен для определения энергетической пирамидальной поверхности, на которой располагается индекс квантования в поддиапазоне кодирования малых битовых значений, метка индекса квантования на этой энергетической пирамидальной поверхности, а также последующие решения для соответствующего узла решетки D8;
первый субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии решения Y для узла решетки D8, получаемого из уравнения
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6) scale(index) представляет собой коэффициент масштабирования.
Модуль инверсного сферического решетчатого векторного квантования предназначен для выполнения инверсного квантования индексного вектора в поддиапазоне кодирования больших битовых значений; модуль инверсного сферического решетчатого векторного квантования 83 включает соединенные друг с другом второй субмодуль инверсного квантования узла решетки 831 и второй субмодуль инверсного регулирования энергии 832, при этом
второй субмодуль инверсного квантования узла решетки предназначен для получения решения для узла решетки D8, соответствующего индексному вектору, и в частности включает:
вычисление значения x=k*G,
и вычисление значения ytemp=x/(2^(region_bit(j)); y=x-ƒD8(ytemp)*(2^(region_bit(j));
где k представляет собой индексный вектор вектора квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D8 и имеет следующий вид:
второй субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии найденного значения узла решетки D8 и обеспечивает получение
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(region_bit(j)) представляет собой коэффициент масштабирования.
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа в соответствии с настоящим изобретением, полностью учитывающие характеристики голосового источника информации, осуществляющие квантование подлежащего дискретизации вектора путем совмещенного решеточного векторного квантования с использованием пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений, в частности, в соответствии с количеством битов, распределяемых поддиапазону кодирования, и обратного кодированию процесса, используемого для декодирования, с получением хорошего качества кодирования голосового информационного источника. Дополнительно для распределения битов используется распределение битов с изменяемой длиной этапа, и длина этапа распределения битов одному коэффициенту частотного домена может регулироваться до минимальной величины в половину бита, таким образом улучшая эффективность использования битов. Одновременно разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа, и несложный алгоритм маркировки узла решетки, уменьшающий требуемый объем для хранения информации. Дополнительно при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма решетчатого векторного квантователя. В процессе кодирования также предусмотрен алгоритм использования сохраненных битов.
Специалисты должны понимать, что все или часть предусмотренных в представленном выше способе операций (этапов) могут выполняться связанными с программами аппаратными средствами, и программы могут сохраняться в считываемой компьютерами среде хранения, такой как предназначенные для считывания запоминающие устройства, магнитные или оптические диски и т.д. Дополнительно все или часть операций в приведенных выше примерах могут быть также реализованы в виде одной или более интегральных схем. Соответственно, все модули/узлы в приведенных выше примерах могут быть реализованы в виде аппаратных или программных функциональных модулей. Настоящее изобретение не ограничивается любым сочетанием аппаратных и программных средств.
Промышленная применимость
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа в соответствии с настоящим изобретением, полностью учитывающие характеристики голосового источника информации, осуществляющие квантование подлежащего дискретизации вектора путем совмещенного решеточного векторного квантования с использованием пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений, в частности, в соответствии с количество битов, распределяемых поддиапазону кодирования, и обратного кодированию процесса, используемого для декодирования, с получением хорошего качества кодирования голосового информационного источника. Дополнительно для распределения битов используется распределение битов с изменяемой длиной этапа, и длина этапа распределения битов одному коэффициенту частотного домена может регулироваться до минимальной величины в половину бита, таким образом улучшая эффективность использования битов. Одновременно разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа, и несложный алгоритм маркировки узла решетки, уменьшающий требуемый объем для хранения информации. Дополнительно при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма решетчатого векторного квантователя.
Изобретение относится к технологии кодирования/декодирования звука и, в частности, к способу кодирования/декодирования звука и системе векторного квантования решетчатого типа. Способ включает: разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд; выполнение распределения битов в каждый поддиапазон кодирования, осуществление нормализации, квантования и кодирования соответственно для векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием и для векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием, с целью получения кодированных битовых значений коэффициентов частотного домена; мультиплексирование и упаковку кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов в каждом поддиапазоне кодирования частотного домена и затем их передачу на сторону декодирования. Технический результат - обеспечение хорошего качества кодирования источника голосовой информации путем совмещенного решетчатого векторного квантования с использованием пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования. 4 н. и 21 з.п. ф-лы, 7 табл., 9 ил.
1. Способ кодирования звука с решетчатым векторным квантованием, включающий:
разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд;
выполнение распределения битов в каждый поддиапазон кодирования, осуществление нормализации, квантования и кодирования соответственно для векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием и для векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием, с целью получения кодированных битовых значений коэффициентов частотного домена, причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
мультиплексирование и упаковку кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов в каждом поддиапазоне кодирования частотного домена для их передачи на сторону декодирования.
2. Способ по п.1, отличающийся тем, что
перед этапом выполнения распределения битов в каждый поддиапазон кодирования способ дополнительно включает вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования это распределение битов выполняется для каждого коэффициента частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
3. Способ по п.1, отличающийся тем, что
этап выполнения нормализации и квантования в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием включает:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования для группирования с образованием множества подлежащих многомерному квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает: осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8; и
сравнение энергии полученного квантованием узла решетки D8 с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, если энергия узла решетки D8 меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, вычисление в кодовой книге индекса квантования для узла решетки D8; если энергия узла решетки D8 больше максимального пирамидального поверхностного энергетического радиуса, выполнение усечения энергии для отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременного постоянного добавления энергии для энергетически связанного подлежащего квантованию вектора до тех пор, пока энергия узла решетки D8, до которой квантуется энергетически связанный подлежащий квантованию вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса, и затем определение последнего узла решетки D8, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса, как узел решетки вектора квантования, и вычисление индекса квантования для узла решетки вектора квантования в кодовой книге;
и/или
этап выполнения нормализации и квантования в поддиапазоне кодирования больших битовых значений со сферическим решетчатым векторным квантованием включает:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования для группирования с образованием множества подлежащих многомерному квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает:
осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, и квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
деление полученного квантованием значения узла решетки D8 на 2 в степени количества распределенных битов 2region_bit(j) и затем повторное квантование для его отображения на узел решетки D8, вынесение решения о том, является ли полученное повторным квантованием значение узла решетки D8 нулевым вектором, и в случае положительного решения определение соответствия нулевому векторному состоянию, а в случае отрицательного решения определение несоответствия нулевому векторному состоянию, причем region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования;
при соответствии нулевому векторному состоянию вычисление индексного вектора узла решетки D8; и
при несоответствии нулевому векторному состоянию выполнение усечения энергии для значения подлежащего квантованию вектора до достижения соответствия нулевому векторному состоянию, сохранение множественного значения w самого подлежащего квантованию вектора, добавление множественного значения w к энергетически связанному подлежащему квантованию вектору, затем повторное квантование для его отображения на узел решетки D8, вынесение решения о соответствии нулевому векторному состоянию, в случае отрицательного решения вычисление нового индексного вектора k для узла решетки D8, соответствующего нулевому векторному состоянию, в случае положительного решения постоянное добавление множественного значения w к подлежащему квантованию вектору и затем повторное квантование для его отображения на узел решетки D8 до тех пор, пока не будет получено соответствие нулевому векторному состоянию.
4. Способ по п.3, отличающийся тем, что
на этапе осуществления регулирования энергии 8-мерного подлежащего квантованию вектора сначала в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор, просматривается приводимая ниже таблица для поиска содержащихся в кодовой книге последовательного номера index и коэффициента масштабирования энергии scale в соответствии с количеством битов; затем выполняется регулирование энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
где представляет собой m-тый нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j, представляет собой 8-мерный подлежащий квантованию вектор после осуществления регулирования энергии , a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6);
на этапе квантования энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8 выполняют квантование энергетически отрегулированного 8-мерного вектора для его отображения на узел решетки D8
с помощью следующего уравнения:
где ƒD8(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D8;
этап вычисления индекса квантования узла решетки D8
в кодовой книге включает:
этап 1) разметка узлов решетки на каждой пирамидальной поверхности в соответствии с амплитудой энергии на пирамидальной поверхности,
в котором для целочисленной узловой решетчатой сети ZL с размером L пирамидальная поверхность с энергетическим радиусом K определяется как:
где N(L,К) обозначает количество узлов решетки в S(L,К), и для определения N(L,К) в целочисленной сети ZL используются следующие рекурентные формулы:
N(L,0)=1 (L≥0), N(0,K)=0 (K≥1)
N(L,K)=N(L-1, K)+N(L-1, K-1)+N(L,K-1) (L≥1, K≥1);
для идентификации целочисленного узла решетки Y=(y1,y2,…,yL)∈ZL на пирамидальной поверхности с энергетическим радиусом К используется число b из последовательности [0,1,…,N(L,K)-1], которое называется меткой узла решетки, и для определения метки b выполняются следующие этапы:
этап 1.1, задают b=0, i=1, k=K, l=L, вычисляют N(m,n), (m<=L, n<=К) в соответствии с приведенными рекурсивными формулами, и определяется:
этап 1.2, если yi=0, тогда b=b+0;
если |yi|=1, тогда ;
если |yi|>1, тогда
этап 1.3, k=k-|yi|, l=l-1, i=i+1, если теперь k=0, прекращение поиска, b(j,m)=b, который представляет собой метку Y, в противном случае продолжение выполнения этапа 1.2;
этап 2) выполнение стандартной разметки узла решетки на всех пирамидальных поверхностях,
в котором вычисляется стандартная метка узла решетки на всех пирамидальных поверхностях в соответствии с количеством узлов решетки на каждой пирамидальной поверхности и меткой узла решетки на той пирамидальной поверхности, на которой располагается данный узел решетки,
где kk представляет собой четное число, b(j,m) представляет собой метку узла решетки D8
на той пирамидальной поверхности, на которой располагается узел решетки D8
, a index_b(j,m) представляет собой индекс квантования узла решетки D8
в кодовой книге.
5. Способ по п.1, отличающийся тем, что
этап кодирования в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым векторным квантованием включает:
осуществление кодирования по способу Хаффмана для индексов квантования всех поддиапазонов кодирования малых битовых значений; и
если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление кодирования по способу Хаффмана и установка в 1 или в истинное состояние флажка кодирования по способу Хаффмана для коэффициента частотного домена, использование сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования, и повторное осуществление векторного квантования и кодирования в поддиапазоне кодирования, для которого было произведено изменение количества распределенных битов; а если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общему количеству битов, требуемому для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление повторного натурального кодирования индекса квантования и установка в 0 или в ложное состояние флажка кодирования по способу Хаффмана для коэффициента частотного домена.
6. Способ по п.5, отличающийся тем, что
этап использования сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования включает:
вычисление количества битов, сохраняемых при кодировании по способу Хаффмана;
определение во всех поддиапазонах кодирования поддиапазона кодирования с максимальной важностью в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения, которое может распределяться поддиапазону кодирования, регулировка важности наименее важного поддиапазона кодирования, и дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, и затем выполнение изменения распределения битов для поддиапазона кодирования с максимальной важностью; и
после каждого случая изменения количества распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигло предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходит окончание процесса изменения количества распределенных битов.
7. Способ по п.5, отличающийся тем, что
когда кодирование по способу Хаффмана осуществляют для индексов квантования всех поддиапазонов кодирования малых битовых значений,
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5, и не равно 2, каждые четыре бита в натуральном двоичном коде для каждого индекса векторного квантования выделяют в одну группу, и кодирование по способу Хаффмана осуществляется в этой группе, а сумма количества битов при кодировании по способу Хаффмана для всех этих 4-битовых групп представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, равняется 2, для кодирования каждого индекса квантования 8-мерного пирамидального решетчатого вектора используются 15 битов, и эти 15 битов разбиваются на 3 4-битовые группы и 1 3-битовую группу, и затем осуществляют кодирование данных групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда индекс квантования кодируется 7 битами, которые разбивают на 1 3-битовую группу и 1 4-битовую группу, и осуществляют кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда натуральный двоичный код индекса квантования определяется как "1111 1110", 7 первых 1 разбивают на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда натуральный двоичный код индекса квантования определяется как "1111 1111", 7 первых 1 разбивают на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
8. Способ декодирования звука с решетчатым векторным квантованием, включающий:
декодирование закодированных битов каждой огибающей амплитуды в подлежащем декодированию двоичном потоке с целью получения индекса квантования огибающей амплитуды для каждого поддиапазона кодирования;
выполнение распределения битов в каждый поддиапазон кодирования и осуществление декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования малых битовых значений, и осуществление декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования больших битовых значений; причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) в частотном домене коэффициентов, для которых с целью получения конечного звукового сигнала выполнялось шумовое заполнение.
9. Способ по п.8, отличающийся тем, что
перед этапом выполнения распределения битов в каждый поддиапазон кодирования данный способ дополнительно включает: вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования это распределение битов выполняется для каждого коэффициента частотного домена и в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов;
после выполнения распределения битов и перед осуществлением декодирования, в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования, снова с соответствующим отсчетом осуществляется изменение количества распределенных битов для поддиапазона кодирования.
10. Способ по п.8, отличающийся тем, что
на этапе осуществления декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений получаются индексы векторного квантования для поддиапазона кодирования малых битовых значений путем осуществления кодирования по способу Хаффмана или прямого декодирования в поддиапазоне кодирования малых битовых значений в соответствии с флажком кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования, и осуществления инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования для всех индексов векторного квантования с целью получения коэффициентов частотного домена для поддиапазона кодирования малых битовых значений; на этапе осуществления декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений прямо используют натуральное декодирование для получения индексов векторного квантования в поддиапазоне кодирования больших битовых значений, и осуществления инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования для всех индексов векторного квантования с целью получения коэффициентов частотного домена для поддиапазона кодирования больших битовых значений.
11. Способ по п.8 или 10, отличающийся тем, что в процессе осуществления декодирования в поддиапазоне кодирования малых битовых значений в том случае, когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, и если значение натурального двоичного кода индекса квантования меньше "1111 111", тогда индекс квантования вычисляют в соответствии со значением натурального двоичного кода; если значение натурального двоичного кода индекса квантования равно "1111 111", тогда постоянно считывается следующий бит, причем если следующий бит - 0, тогда значение индекса квантования равно 127, если следующий бит - 1, тогда значение индекса квантования равно 128.
12. Способ по п.8 или 10, отличающийся тем, что
на этапе декодирования для диапазона кодирования малых битовых значений,
если флажок кодирования по способу Хаффмана коэффициента частотного домена указывает на неиспользование кодирования по способу Хаффмана, тогда индекс квантования m-ого вектора index_b(j,m) в поддиапазоне кодирования малых битовых значений j подвергают прямому декодированию; если флажок кодирования по способу Хаффмана коэффициента частотного домена указывает на использование кодирования по способу Хаффмана, тогда индекс квантования m-го вектора index_b(j,m) в поддиапазон кодирования малых битовых значений j получают путем декодирования по способу Хаффмана;
этап осуществления инверсного квантования для пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений включает:
а) определение энергетической пирамидальной поверхности, на которой располагается индекс квантования, и метки индекса квантования на этой энергетической пирамидальной поверхности;
где осуществляют поиск kk для энергии пирамидальной поверхности от 2 до LargeK(region_bit(j)) при выполнении следующего неравенства:
N(8,kk)<=index_b(j,m)<N(8,kk+2),
если такое значение kk находится, тогда K=kk представляет энергию пирамидальной поверхности, где узел решетки D8 соответствует найденному индексу квантования index_b(j,m), b=index_b(j,m)-N(8,kk) представляет собой метку индекса узла решетки D8 на той пирамидальной поверхности, на которой располагается узел решетки D8;
если такое значение kk не находится, тогда энергия пирамидальной поверхности узла решетки D8 соответствует индексу квантования index_b(j,m) К=0, а метка индекса b=0;
б) этапы по нахождению решения для вектора Y=(y1, y2, y3, y4, y5, y6, y7, y8) узла решетки D8, чья энергия пирамидальной поверхности К и метка индекса b находятся следующим образом:
этап 1. пусть Y=(0,0,0,0,0,0,0,0), xb=0, i=1, k=K, l=8;
этап 2. если b=xb, тогда yi=0; переход к этапу 6;
этап 3. если b<xb+N(l-1, k), тогда yi=0, переход к этапу 5;
иначе, xb=xb+N(l-1, k); пусть j=1;
этап 4. если b<xb+2*N(l-1, k-j), тогда
если xb<=b<xb+N(l-1, k-j), тогда yi=j;
если b>=xb+N(l-1, k-j), тогда yi=-j, xb=xb+N(l-1, k-j);
иначе, xb=xb+2*N(l-1, k-j), j=j+1; продолжение выполнения текущего этапа;
этап 5. обновление k=k-|yi|, l=l-1, i=i+1, если k>0, переход к этапу 2;
этап 6. если k>0, тогда y8=k-|yi|, Y=(y1, y2,…,у8), это найденный узел решетки;
в) инверсное регулирование энергии найденного узла решетки D8 и получение
где а=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(index) представляет собой коэффициент масштабирования, который приведен в табл.1.
на этапе выполнения инверсной нормализации для всех с целью получения коэффициентов частотного домена для поддиапазона кодирования малых битовых значений,
инверсная нормализационная обработка выполняется для получения коэффициента частотного домена m-того вектора поддиапазона кодирования j, восстановленного на стороне декодирования:
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-м поддиапазоне кодирования.
13. Способ по п.8 или 10, отличающийся тем, что
этап прямого использования натурального кодирования для получения индексов векторного квантования в поддиапазоне кодирования больших битовых значений и выполнения инверсного квантования сферического решетчатого векторного квантования для всех индексов векторного квантования включает:
а) вычисление значения x=k*G, а также значения ytemp=x/(2^(region_bit(j)); где k представляет собой индексный вектор m-го вектора квантования в поддиапазоне кодирования больших битовых значений j, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D8 и имеет следующий вид:
б) вычисление значения y=x-ƒD8(ytemp)*(2^region_bit(j));
в) осуществление инверсного регулирования энергии найденного значения узла решетки D8, и получение
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(region_bit(j)) представляет собой коэффициент масштабирования, который приведен в табл.2.
на этапе выполнения инверсной нормализации для всех с целью получения коэффициентов частотного домена для поддиапазона кодирования больших битовых значений,
инверсную нормализационную обработку выполняют для получения коэффициента частотного домена m-того вектора поддиапазона кодирования j, восстановленного на стороне декодирования:
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-м поддиапазоне кодирования.
14. Система кодирования звука с решетчатым векторным квантованием, включающая: узел модифицированного дискретного косинусного преобразования (МДКП), узел вычисления огибающей амплитуды, узел квантования и кодирования огибающей амплитуды, узел огибающей амплитуды, узел распределения битов, узел нормализационной обработки, узел классификационного решетчатого векторного квантования и кодирования, а также мультиплексор битового потока; причем
узел МДКП предназначен для выполнения МДКП звукового сигнала с получением коэффициентов частотного домена;
узел вычисления огибающей амплитуды соединяют с узлом МДКП и предназначается для разделения полученных узлом МДКП в множестве поддиапазонов кодирования коэффициентов частотного домена и вычисления значения огибающей амплитуды в каждом поддиапазоне кодирования;
узел квантования и кодирования огибающей амплитуды соединяют с узлом вычисления огибающей амплитуды и предназначен для квантования и кодирования значения огибающей амплитуды в каждом поддиапазоне кодирования с целью получения кодированных битов огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяют с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел нормализационной обработки соединяют с узлом МДКП и предназначается для использования при осуществлении квантования значения огибающей амплитуды в поддиапазоне кодирования с целью выполнения нормализационной обработки всех коэффициентов частотного домена в каждом поддиапазоне кодирования;
узел классификационного решетчатого векторного квантования и кодирования соединяют с узлом нормализационной обработки и узлом распределения битов и предназначен для выполнения квантования и кодирования нормализованных подлежащих квантованию векторов в поддиапазоне кодирования малых битовых значений и поддиапазоне кодирования больших битовых значений с пирамидальным решетчатым векторным квантованием и сферическим решетчатым векторным квантованием соответственно с целью получения кодированных битов коэффициентов частотного домена; где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
мультиплексор битового потока соединяют с узлом квантования и кодирования огибающей амплитуды и узлом классификационного решетчатого векторного квантования и кодирования и предназначен для мультиплексирования кодированных битов в каждом поддиапазоне кодирования и кодированных битов коэффициентов частотного домена для их передачи на сторону декодирования.
15. Система по п.14, отличающаяся тем, что
узел распределения битов включает соединенные друг с другом модуль вычисления важности и модуль распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
16. Система по п.14, отличающаяся тем, что
узел классификационного решетчатого векторного квантования и кодирования включает классификационный обрабатывающий модуль и модуль пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль соединяют с узлом нормализационной обработки и предназначен для группирования нормализованных коэффициентов частотного домена с целью создания многомерных подлежащих квантованию векторов и передачи этих нормализованных подлежащих квантованию векторов из поддиапазона кодирования малых битовых значений в модуль пирамидального решетчатого векторного квантования;
модуль пирамидального решетчатого векторного квантования соединяют с классификационным обрабатывающим модулем и предназначают для выполнения пирамидального решетчатого векторного квантования нормализованного подлежащего квантованию вектора в каждом поддиапазоне кодирования малых битовых значений; модуль пирамидального решетчатого векторного квантования включает первый субмодуль регулирования энергии, первый субмодуль квантования узла решетки, первый субмодуль настройки энергии и субмодуль вычисления индекса квантования, причем
первый субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
первый субмодуль квантования узла решетки соединяют с первым субмодулем регулирования энергии и предназначают для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8;
первый субмодуль настройки энергии соединяется с первым субмодулем квантования узла решетки и предназначен для сравнения энергии узла решетки D8 с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, и если энергия узла решетки D8 меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, передачи сообщения на субмодуль вычисления индекса квантования о необходимости вычисления индекса квантования узла решетки D8 в кодовой книге; если энергия узла решетки D8 больше максимального пирамидального поверхностного энергетического радиуса, осуществления усечения энергии отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования и передачи сообщения на первый субмодуль квантования узла решетки для усечения энергии до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременно постоянного добавления энергии энергетически связанному подлежащему квантованию вектору, передачи сообщения на первый субмодуль квантования узла решетки с целью осуществления квантования подлежащего квантованию вектора с добавленной энергией для его отображения на узел решетки D8 до тех пор, пока энергия узла решетки D8, до которой квантуется подлежащий квантованию вектор с добавленной энергией, не станет больше максимального пирамидального поверхностного энергетического радиуса, и передачи сообщения на субмодуль вычисления индекса квантования с целью вычисления индекса квантования последнего узла решетки D8, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса в кодовой книге;
модуль вычисления индекса квантования соединяется с первым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с сообщением первого субмодуля настройки энергии;
и
узел классификационного решетчатого векторного квантования и кодирования дополнительно включает модуль сферического решетчатого векторного квантования, соединенный с классификационным обрабатывающим модулем; классификационный обрабатывающий модуль предназначается для дополнительной передачи с целью обработки нормализованного подлежащего квантованию вектора из поддиапазона кодирования больших битовых значений в модуль сферического решетчатого векторного квантования;
модуль сферического решетчатого векторного квантования предназначен для выполнения сферического решетчатого векторного квантования нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений; модуль сферического решетчатого векторного квантования включает второй субмодуль регулирования энергии, второй субмодуль квантования узла решетки, субмодуль вынесения решения о наличии нулевого векторного состояния, второй субмодуль настройки энергии и субмодуль вычисления индексного вектора, причем
второй субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
второй субмодуль квантования узла решетки соединяется со вторым субмодулем регулирования энергии и предназначен для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D8,
субмодуль вынесения решения о наличии нулевого векторного состояния соединяют со вторым субмодулем квантования узла решетки и предназначен для вынесения решения о том, соответствует ли узел решетки D8 нулевому векторному состоянию, и в случае такого соответствия передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления индексного вектора узла решетки D8; а в случае несоответствия передачи сообщения на второй субмодуль настройки энергии с целью настройки энергии подлежащего квантованию вектора; наличие нулевого векторного состояния вызывает деление полученного квантованием значения узла решетки D8 на 2 в степени количества распределенных битов 2region_bit(j) и затем создание узла решетки D8, причем созданный узел решетки D8 представляет собой нулевой вектор, где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-м поддиапазоне кодирования;
второй субмодуль настройки энергии соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем квантования узла решетки и предназначен для выполнения усечения значения энергии подлежащего квантованию вектора и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; сохранение множественного значения w самого подлежащего квантованию вектора, добавление сохраненного множественного значения w к энергетически связанному подлежащему квантованию вектору, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D8 до достижения соответствия нулевому векторному состоянию; и передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления самого нового индексного вектора для узла решетки D8, соответствующего нулевому векторному состоянию;
субмодуль вычисления индексного вектора соединяют с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D8 в кодовой книге в соответствии с полученными сообщениями из субмодуля вынесения решения о наличии нулевого векторного состояния и второго субмодуля настройки энергии.
17. Система по п.16, отличающаяся тем, что
первый субмодуль регулирования энергии на этапе осуществления регулирования энергии 8-мерного подлежащего квантованию вектора в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор, предназначен для осуществления поиска в приведенной ниже таблице последовательного номера в кодовой книге index и коэффициента масштабирования энергии scale в соответствии с упомянутым количеством битов region_bit(j); и затем для осуществления регулирования энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
где представляет собой m-й нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j, представляет собой 8-мерный подлежащий квантованию вектор после осуществления регулирования энергии
, a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6);
когда 8-мерный подлежащий квантованию вектор квантуется для его отображения на узел решетки D8, то первый субмодуль квантования узла решетки осуществляет квантование 8-мерного вектора с целью получения узла решетки D8
с помощью следующего уравнения:
где ƒD8(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D8;
при вычислении индекса квантования узла решетки D8
в кодовой книге субмодуль вычисления индекса квантования выполняет разметку узлов решетки на каждой пирамидальной поверхности в соответствии с амплитудой энергии на пирамидальной поверхности, и затем стандартную разметку узла решетки на всех пирамидальных поверхностях, причем стандартная метка представляет собой индекс квантования узла решетки D8
в кодовой книге.
18. Система по п.14, отличающаяся тем, что
узел классификационного решетчатого векторного квантования и кодирования дополнительно включает модуль вынесения решения о типе кодирования, модуль кодирования по способу Хаффмана, модуль натурального кодирования и модуль изменения распределенных битов, причем
модуль вынесения решения о типе кодирования предназначен для вынесения решения о том, является ли общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для осуществления натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, и в случае положительного решения передачи сообщения на модуль кодирования по способу Хаффмана и модуль изменения распределенных битов; а если общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общему количеству битов, требуемых для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, передачи сообщения на модуль натурального кодирования;
модуль кодирования по способу Хаффмана предназначен для выполнения кодирования по способу Хаффмана индекса квантования в поддиапазоне кодирования малых битовых значений и установки флажка кодирования коэффициента частотного домена по способу Хаффмана в 1 или в истинное состояние;
модуль натурального кодирования предназначен для выполнения натурального кодирования индекса квантования в поддиапазоне кодирования малых битовых значений и индексного вектора в поддиапазоне кодирования больших битовых значений;
модуль изменения распределенных битов предназначен для использования битов, сохраненных при кодировании по способу Хаффмана, для изменения количества распределенных битов в поддиапазоне кодирования и передачи сообщения на классификационный обрабатывающий модуль с целью классификации поддиапазонов кодирования по количеству подлежащих изменению распределенных битов и затем повторного выполнения векторного квантования и кодирования.
19. Система по п.18, отличающаяся тем, что
модуль изменения распределенных битов, предназначенный для осуществления при выполнении распределения битов поиска поддиапазона кодирования с максимальной важностью среди всех поддиапазонов кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения битов, которое может распределяться поддиапазону кодирования, выполняет регулировку важности наименее важного поддиапазона кодирования и обеспечивает дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, а затем выполняет изменение распределения битов для поддиапазона кодирования с максимальной важностью;
при изменении распределения битов осуществляет распределение 1 бита поддиапазону кодирования с количеством распределенных битов 0 и уменьшение важности на 1 после распределения битов; распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5, и уменьшение важности на 0,5 после распределения битов; распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5, и уменьшение важности на 1 после распределения битов; и
после каждого случая изменения количества распределенных битов модулем изменения распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигает предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходит окончание процесса изменения количества распределенных битов.
20. Система по п.18, отличающаяся тем, что
когда модуль кодирования по способу Хаффмана осуществляет кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений,
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5 и не равно 2, модуль кодирования по способу Хаффмана выделяет каждые 4 бита в натуральном двоичном коде для каждого индекса векторного квантования в одну группу и осуществляет ее кодирование по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, равняется 2, модуль кодирования по способу Хаффмана использует 15 битов для кодирования индекса пирамидального решетчатого векторного квантования каждого 8-мерного вектора, и разбивает эти 15 битов на 3 4-битовые группы и 1 3-битовую группу, и затем соответственно осуществляет кодирование этих групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда для кодирования индекса квантования модуль кодирования по способу Хаффмана использует 7 битов, разбивает эти 7 битов на 1 3-битовую группу и 1 4-битовую группу, и осуществляет кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда модуль кодирования по способу Хаффмана определяет указанный натуральный двоичный код как "1111 1110", разбивает 7 первых 1 на 1 3-битовую группу и 1 4-битовую группу и осуществляет кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда модуль кодирования по способу Хаффмана определяет указанный натуральный двоичный код как "1111 1111", разбивает 7 первых 1 на 1 3-битовую группу и 1 4-битовую группу и осуществляет кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
21. Система декодирования звука с решетчатым векторным квантованием, включающая: демультиплексор битового потока, узел декодирования огибающей амплитуды поддиапазона кодирования, узел распределения битов, узел декодирования коэффициента частотного домена, узел инверсного классификационного решетчатого векторного квантования, узел инверсной нормализационной обработки, узел шумового заполнения и узел обратного модифицированного дискретного косинусного преобразования (ОМДКП), причем
демультиплексор битового потока предназначен для отделения кодированных битов огибающей амплитуды от подлежащего декодированию битового потока;
узел декодирования огибающей амплитуды поддиапазона кодирования соединяют с демультиплексором битового потока и предназначается для декодирования закодированных битов огибающей амплитуды с выхода демультиплексора битового потока с целью получения квантованной составляющей огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяют с узлом декодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел декодирования коэффициента частотного домена соединяют с узлом декодирования огибающей амплитуды и узлом распределения битов и предназначается для осуществления декодирования поддиапазона кодирования малых битовых значений с целью получения индекса квантования в поддиапазоне кодирования малых битовых значений; а также для осуществления декодирования поддиапазона кодирования больших битовых значений с целью получения индексного вектора в поддиапазоне кодирования больших битовых значений, где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
узел инверсного классификационного решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений, и выполнения инверсного квантования индекса сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализации значений, полученных после осуществления инверсного квантования в поддиапазоне кодирования, а также для получения коэффициента частотного домена;
узел шумового заполнения предназначен для выполнения заполнения шумом поддиапазона, которому узел инверсной нормализационной обработки не распределил бит для выходного значения коэффициента частотного домена;
узел обратного модифицированного дискретного косинусного преобразования (ОМДКП) соединяется с узлом шумового заполнения и предназначен для выполнения обратного модифицированного дискретного косинусного преобразования коэффициента частотного домена, для которого было выполнено шумовое заполнение с целью получения звукового сигнала.
22. Система по п.21, отличающаяся тем, что
узел распределения битов включает соединенные друг с другом модуль вычисления важности и модуль распределения битов, а также модуль изменения распределенных битов, соединенный с модулем распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов;
модуль изменения распределенных битов предназначен для выполнения изменения распределенных битов в поддиапазоне кодирования счетное количество раз после выполнения распределения битов в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования.
23. Система по п.21, отличающаяся тем, что
узел декодирования коэффициента частотного домена должен в том случае, когда он осуществляет декодирование в поддиапазоне кодирования малых битовых значений, и количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, и если значение натурального двоичного кода индекса квантования меньше "1111 111", выполнять вычисление индекса квантования в соответствии со значением натурального двоичного кода; а если значение натурального двоичного кода индекса квантования равно "1111 111", тогда постоянно считывать следующий бит, причем если следующий бит - 0, тогда значение индекса квантования равно 127, если следующий бит - 1, тогда значение индекса квантования равно 128.
24. Система по п.22, отличающаяся тем, что
узел инверсного классификационного решетчатого векторного квантования включает классификационный обрабатывающий модуль и модуль инверсного пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль предназначен для передачи индекса квантования в поддиапазоне кодирования малых битовых значений в модуль инверсного пирамидального решетчатого векторного квантования;
модуль инверсного пирамидального решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса квантования в поддиапазоне кодирования малых битовых значений; модуль инверсного пирамидального решетчатого векторного квантования включает соединенные друг с другом первый субмодуль инверсного квантования узла решетки и первый субмодуль инверсного регулирования энергии, причем
первый субмодуль инверсного квантования узла решетки предназначен для определения энергетической пирамидальной поверхности, на которой располагается индекс квантования в поддиапазоне кодирования малых битовых значений, метка индекса квантования на этой энергетической пирамидальной поверхности, а также последующие решения для соответствующего узла решетки D8;
первый субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии решения Y для узла решетки D8, получаемого из уравнения
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(index) представляет собой коэффициент масштабирования;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки с целью получения коэффициента частотного домена для m-того вектора из поддиапазона кодирования j, восстановленного на стороне декодирования:
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-м поддиапазоне кодирования.
25. Система по п.22, отличающаяся тем, что
узел инверсного классификационного решетчатого векторного квантования дополнительно включает модуль инверсного сферического решетчатого векторного квантования; классификационный обрабатывающий модуль дополнительно предназначен для передачи индексного вектора из поддиапазона кодирования больших битовых значений в модуль инверсного сферического решетчатого векторного квантования для обработки;
модуль инверсного сферического решетчатого векторного квантования предназначен для осуществления инверсного квантования индексного вектора в поддиапазоне кодирования больших битовых значений; модуль инверсного сферического решетчатого векторного квантования включает соединенные друг с другом второй субмодуль инверсного квантования узла решетки и второй субмодуль инверсного регулирования энергии, причем
второй субмодуль инверсного квантования узла решетки предназначен для получения решения для узла решетки D8, соответствующего индексному вектору, причем используемый этап для получения такого решения для узла решетки D8, соответствующего индексному вектору, включает:
вычисление значения x=k*G, а также значения ytemp=x/(2^region_bit(j));
и вычисление узла решетки D8 y=x-ƒD8(ytemp)*(2^(region_bit(j)); где k представляет собой индексный вектор векторного квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D8 и имеет следующий вид:
второй субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии найденного значения узла решетки D8 и обеспечивает получение
где a=(2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6, 2-6), scale(region_bit(j)) представляет собой коэффициент масштабирования;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки с целью получения коэффициента частотного домена m-того вектора поддиапазона кодирования j, восстановленного на стороне декодирования:
где Thq(j) представляет собой показатель степени квантования огибающей амплитуды в j-м поддиапазоне кодирования.
US 2008097755 A1, 24.04.2008 | |||
EP 1914724 A2, 23.04.2008 | |||
WO 2008110116 A1, 18.09.2008 | |||
CN 101110214 A, 23.01.2008 | |||
US 2004176951 A1, 09.09.2004 | |||
УСТРОЙСТВО И СПОСОБ ОБРАБОТКИ СИГНАЛА, ИМЕЮЩЕГО ПОСЛЕДОВАТЕЛЬНОСТЬ ДИСКРЕТНЫХ ЗНАЧЕНИЙ | 2004 |
|
RU2325708C2 |
Авторы
Даты
2014-02-10—Публикация
2010-10-12—Подача