СПОСОБЫ И УСТРОЙСТВА ДЛЯ ВВЕДЕНИЯ НИЗКОЧАСТОТНЫХ ПРЕДЫСКАЖЕНИЙ В ХОДЕ СЖАТИЯ ЗВУКА НА ОСНОВЕ ACELP/TCX
METHOD AND DEVICE FOR INTRODUCING LOW-FREQUENCY EMPHASIS WHEN COMPRESSING SOUND BASED ON ACELP/TCX

Область техники, к которой относится изобретение
Настоящее изобретение относится к кодированию и декодированию звуковых сигналов, например, в системах цифровой передачи и хранения данных. В частности, но не только, настоящее изобретение относится к гибридному преобразованию и кодированию и декодированию на основе линейного предсказания с кодовым возбуждением (CELP).
Уровень техники
Цифровое представление информации предоставляет много преимуществ. В случае звуковых сигналов, информация, такая как речь или музыкальный сигнал, оцифровывается с помощью, например, формата PCM (импульсно-кодовая модуляция). Сигнал, таким образом, дискретизируется и квантуется с помощью, например, 16 или 20 бит на выборку. Хотя простой формат PCM требует высокой скорости передачи в битах (число бит в секунду или бит/с). Это ограничение является основной мотивировкой для разработки эффективных методик кодирования источника, допускающих уменьшение исходной скорости передачи в битах и удовлетворяющих конкретным ограничениям множества вариантов применения в отношении качества звука, задержки кодирования и сложности.
Функция цифрового кодера звука заключается в том, чтобы преобразовывать звуковой сигнал в поток бит, который, например, передается по каналу связи или сохраняется в носителе связи. Здесь рассматривается кодирование источника с потерями, т.е. сжатие сигнала. Более конкретно, роль цифрового кодера звука заключается в том, чтобы представлять выборки, например, PCM-выборки, с помощью меньшего числа бит при сохранении хорошего субъективного качества звука. Декодер или синтезатор отвечает за переданный или сохраненный поток битов, чтобы преобразовать его обратно в звуковой сигнал. Для введения в способы сжатия сигнала приводится ссылка на [Jayant, 1984] и [Gersho, 1992], а для детального охвата современных методик кодирования речи и звука - на [Kleijn, 1995].
В высококачественном кодировании звука может быть выделено два класса алгоритмов: кодирование на основе линейного предсказания с кодовым возбуждением (CELP), которое разработано, чтобы кодировать в основном речевые сигналы, и кодирование с перцепционным преобразованием (полосное), которое хорошо подходит, чтобы представлять звуковые сигналы. Эти методики позволяют достигать хорошего компромисса между субъективным качеством и скоростью передачи в битах. CELP-кодирование разработано в контексте двунаправленных приложений с малой задержкой, таких как телефония или проведение конференций, где звуковой сигнал типично дискретизируется на, например, 8 или 16 кГц. Кодирование с перцепционным преобразованием применялось, главным образом, к широкополосным полночастотным музыкальным сигналам, дискретизируемым, например, на 32, 44,1 или 48 кГц для вариантов применения потоковой передачи или хранения.
CELP-кодирование [Atal, 1985] - это ключевая структура большинства современных стандартов кодирования речи. Согласно этой модели кодирования речевой сигнал обрабатывается в последовательных блоках из N выборок, называемых кадрами, где N - это предварительно определенное число выборов, соответствующее типично, например, 10-30 мс. Уменьшение скорости передачи в битах достигается посредством удаления временной корреляции между последовательными выборками речи посредством линейного предсказания и использования эффективного векторного квантования (VQ). Фильтр линейного предсказания (LP) вычисляется и передается каждый кадр. Вычисление фильтра LP типично требует просмотра вперед, например, сегмента в 5-10 мс от последующего кадра. В общем, кадр из N выборок делится на меньшие блоки, называемые субкадрами, с тем чтобы применять предсказание основного тона. Длина субкадра может быть задана, например, в диапазоне 4-10 мс. В каждом субкадре сигнал возбуждения обычно получается из двух компонентов, части предыдущего возбуждения и нового возбуждения или возбуждения с фиксированным словарем кодов. Компонент, сформированный из части последнего возбуждения, часто упоминается как возбуждение с адаптивным словарем кодов или возбуждение основным тоном. Параметры, характеризующие сигнал возбуждения, кодируются и передаются декодеру, где сигнал возбуждения восстанавливается и используется в качестве входа LP-фильтра. Примером CELP-кодирования является модель кодирования ACELP (алгебраическое CELP), в которой новый словарь кодов состоит из перемежающихся импульсов со знаком.
Модель CELP разработана в контексте узкополосного кодирования речи, для которого входная полоса пропускания составляет 300-3400 Гц. В случае широкополосных речевых сигналов, заданных в полосе частот 50-7000 Гц, модель CELP обычно используется в подходе разделения полосы частот, где нижняя полоса частот кодируется посредством согласования формы сигнала (CELP-кодирования), а верхняя полоса частот параметрически кодируется. Это разделение полосы пропускания имеет несколько мотивировок.
- Большинство бит кадра может быть выделено сигналу нижней полосы частот, чтобы максимизировать качество.
- Вычислительная сложность (фильтрации и т.д.) может быть уменьшена по сравнению с полнодиапазонным кодированием.
- Кроме того, согласование формы сигнала не очень эффективно для высокочастотных компонентов.
Этот подход разделения полосы частот используется, например, в стандарте широкополосного кодирования речи ETSI AMR-WB. Этот стандарт кодирования задан в [3GPP TS 26.190] и описан в [Bessette, 2002]. Реализация стандарта AMR-WB приведена в [3GPP TS 26.173]. Алгоритм кодирования речи AMR-WB состоит в сущности из разделения входного широкополосного сигнала на нижнюю полосу частот (0-6400 Гц) и верхнюю полосу частот (6400-7000 Гц) и применения алгоритма ACELP только к нижней полосе частот и кодирования верхней полосы частот посредством расширения полосы пропускания (BWE).
Современные методики кодирования звука, например, MPEG-AAC или ITU-T G.722.1, основаны на кодировании с перцепционным восприятием (или полосном кодировании). В кодировании с преобразованием звуковой сигнал временной области обрабатывается посредством перекрывающихся окон соответствующей длины. Уменьшение скорости передачи в битах достигается посредством свойства декорреляции и уплотнения интенсивности конкретного преобразования, а также кодирования только перцепционно значимых коэффициентов преобразования. Оконно кодированный сигнал обычно разлагается (анализируется) посредством дискретного преобразования Фурье (DFT), дискретного косинусного преобразования (DCT) или модифицированного дискретного косинусного преобразования (MDCT). Длина кадра, например, 40-60 мс обычно требуется, чтобы добиться хорошего качества звука. Тем не менее, чтобы представлять переходные состояния и избежать временного рассеяния шума кодирования до атак (опережающее эхо), более короткие кадры по, например, 5-10 мс также используются, чтобы описать нестационарные звуковые сегменты. Ограничение шума квантования достигается посредством нормализации коэффициентов преобразования с помощью коэффициентов масштабирования до квантования. Нормализованные коэффициенты типично кодируются посредством скалярного квантования, после которого следует кодирование методом Хаффмана. Параллельно вычисляется кривая перцепционной маскировки, чтобы управлять процессом квантования и оптимизировать субъективное качество; эта кривая используется, чтобы кодировать наиболее перцепционно значимые коэффициенты преобразования.
Чтобы повысить эффективность кодирования (в частности, на низких скоростях передачи в битах), разделение полосы частот также может быть использовано при кодировании с преобразованием. Этот подход используется, например, в новом высокоэффективном стандарте MPEG-AAC, также называемом aacPlus. В aacPlus сигнал разделяется на два поддиапазона, сигнал нижней полосы частот кодируется посредством кодирования с перцепционным преобразованием (AAC), тогда как сигнал верхней полосы частот описывается посредством так называемой репликации полосы спектра (SBR), которая является типом расширения полосы пропускания (BWE).
В определенных вариантах применения, таких как проведение аудио/видеоконференций, хранение мультимедийных данных и потоковая передача звука, звуковой сигнал состоит типично из речи, музыки и смешанного содержимого. Как следствие, в этих вариантах применения используются методики кодирования звука, которые являются надежными для этого типа входного сигнала. Другими словами, алгоритм кодирования звука должен добиваться хорошего и согласованного качества для широкого класса звуковых сигналов, включая речь и музыку. Тем не менее, известно, что методика CELP является в сущности оптимизированной для речи, но может представлять проблемы, когда используется, чтобы кодировать музыкальные сигналы. Современное кодирование с перцепционным преобразованием, с другой стороны, имеет хорошую производительность для музыкальных сигналов, но не подходит для кодирования речевых сигналов, особенно на низких скоростях передачи в битах.
Далее предусмотрено несколько подходов, чтобы кодировать общие звуковые сигналы, включающие в себя речь и музыку, с хорошим и практически неизменным качеством. Кодирование с предсказанием преобразования, описанное в [Moreau, 1992], [Lefebvre, 1994], [Chen, 1996] и [Chen, 1997], предоставляет хорошую основу для включения методик кодирования речи и музыки в одну структуру. Этот подход объединяет линейное предсказание и кодирование с преобразованием. Методика [Lefebvre, 1994], называемая кодированием TCX (кодированием с преобразованием кодированного возбуждения), которая эквивалентна методикам [Moreau, 1992], [Chen, 1996] и [Chen, 1997], рассматривается в последующем описании.
Первоначально было разработано два варианта кодирования TCX [Lefebvre, 1994]: один для речевых сигналов с помощью коротких кадров и предсказания основного тона, другой для музыкальных сигналов с помощью длинных кадров и без предсказания основного тона. В обоих случаях обработка, вовлеченная в кодирование TCX, может быть разложена на два этапа.
1. Текущий кадр звукового сигнала обрабатывается посредством временной фильтрации, чтобы получить так называемый целевой сигнал, а затем
2. Целевой сигнал кодируется в области преобразования.
Кодирование с преобразованием целевого сигнала использует DFT с прямоугольным оконным кодированием. Однако чтобы уменьшить блокирующие наведенные помехи на границах кадров, оконное кодирование с небольшим перекрытием использовано в [Jbira, 1998] перед DFT. В [Ramprashad, 2001] вместо него используется MDCT с переключением оконного кодирования; MDCT имеет преимущество в том, чтобы предоставлять лучшее частотное разрешение, чем DFT, при этом будучи максимально уменьшенной гребенкой фильтров. Тем не менее, в случае [Ramprashad, 2001] кодер не работает в замкнутом контуре, в частности, для анализа основного тона. В этом отношении кодер [Ramprashad, 2001] не может быть квалифицирован как вариант TCX.
Представление целевого сигнала не только играет роль в кодировании TCX, но также управляет частью качества звука TCX, поскольку оно потребляет большую часть доступных бит в каждом кадре кодирования. Далее приводится ссылка на кодирование с преобразованием в области DFT. Несколько способов предложено, чтобы кодировать целевой сигнал в этой области, см., например, [Lefebvre, 1994], [Xie, 1996], [Jbira, 1998], [Schnitzler, 1999] и [Bessette, 1999]. Все эти способы реализуют форму квантования усиление-форма, означающую, что спектр целевого сигнала сначала нормализуется на коэффициент или глобальное усиление g до фактического кодирования. В [Lefebvre, 1994], [Xie, 1996] и [Jbira, 1998] этот коэффициент g задается равным значению RMS (корень из квадрата среднего) спектра. Тем не менее, в общем, он может быть оптимизирован в каждом кадре посредством тестирования различных значений для коэффициента g, как описано, например, в [Schnitzler, 1999] и [Bessette, 1999]. [Bessette, 1999] не раскрывает фактической оптимизации коэффициента g. Чтобы повысить качество кодирования TCX, шумовая вставка (т.е. вставка комфортного шума вместо неквантованных коэффициентов) использована в [Schnitzler, 1999] и [Bessette, 1999].
Как описано в [Lefebvre, 1994], кодирование TCX может достаточно успешно кодировать широкополосные сигналы, например, сигналы, дискретизированные на 16 кГц; качество звука хорошо для речи при частоте дискретизации в 16 кбит/с и для музыки при частоте дискретизации в 24 кбит/с. Тем не менее, кодирование TCX не так эффективно, как ACELP, для кодирования речевых сигналов. По этой причине стратегия кодирования с переключением ACELP/TCX представлена вкратце в [Bessette, 1999]. Концепция кодирования ACELP/TCX аналогична, например, методике ATCELP (адаптивное преобразование и CELP) по [Combescure, 1999]. Очевидно, качество звука может быть максимизировано посредством переключения между различными режимами, которые фактически специализированы, чтобы кодировать конкретный тип сигнала. Например, кодирование CELP специализировано для речи, а кодирование с преобразованием больше приспособлено для музыки, поэтому естественно объединить эти две методики в многорежимную структуру, в которой каждый звуковой кадр кодируется адаптивно с помощью наиболее подходящего средства кодирования. В кодировании ATCELP переключение между CELP и кодированием с преобразованием не является прозрачным, оно требует переходных режимов. Более того, применяется решение по режиму разомкнутого контура, т.е. решение по режиму выполняется до кодирования на основе доступного звукового сигнала. Наоборот, ACELP/TCX представляет преимущество использования двух однородных режимов линейного предсказания (кодирование ACELP и TCX), что облегчает переключение; более того, решение о режиме является замкнутым контуром, что означает, что все режимы кодирования тестируются, и может быть выбран оптимальный синтез.
Хотя [Bessette, 1999] вкратце описывает стратегию кодирования ACELP/TCX, [Bessette, 1999] не раскрывает решение по режиму ACELP/TCX и подробности квантования целевого сигнала TCX при кодировании ACELP/TCX. Только известно, что базовый способ квантования основан на автомасштабируемом пространственном кратном векторном квантовании, представленном в [Xie, 1996].
Для введения в пространственное векторное квантование приводится ссылка на [Gibson, 1988] и [Gersho, 1992]. N-мерная пространственная решетка - это регулярная матрица точек в N-мерном (евклидовом) пространстве. Например, [Xie, 1996] использует 8-мерную пространственную решетку, известную как решетка Госсета, которая задается следующим образом:
где
8
1
8
1
8
8
D={(x, ..., x) ∈ Z/ x+ ... + x is odd} (2)
и
8
1
8
1
8
8
8
D+(1, ..., 1)={(x + 1, ..., x + 1)  Z/(x, ..., x)  D}. (3)
8
1
8
Эта математическая структура обеспечивает возможность квантования блока из восьми (8) действительных чисел. RE также может быть задано более интуитивно, как набор точек (x, ..., x), проверяющих свойства:
i
i. Компоненты x- это целые числа со знаком (для i=1, ..., 8);
1
8
ii. Сумма x+ ... + xкратна 4; и
i
iii. Компоненты x имеют одинаковую четность (для i=1, ..., 8), т.е. они все либо четные, либо нечетные.
8
0
1
5
8
n
0
1
5
n
n
n
4n
8-мерный словарь кодов квантования далее может быть получен посредством выбора конечного поднабора RE. Обычно среднеквадратическая ошибка - это критерий поиска в словаре кодов. В методике [Xie, 1996] шесть (6) различных словарей кодов, называемые Q, Q, ..., Q, задаются на основе пространственной решетки RE. Каждый словарь кодов Q, где n=0, 1, ..., 5, содержит 2 точек, что соответствует скорости в An на 8-мерный субвектор или n/2 на выборку. Спектр целевого сигнала TCX, нормализованного посредством масштабированного коэффициента g, затем квантуется посредством его разделения на 8-мерные субвекторы (или поддиапазоны). Каждый из этих субвекторов кодируется в один из словарей кодов Q, Q, ..., Q. Как следствие, квантование целевого сигнала TCX после нормализации на коэффициент g генерирует для каждого 8-мерного субвектора номер словаря кодов n, указывающий то, какой словарь кодов Q использовался, и индекс I, идентифицирующий конкретный кодовый вектор в словаре кодов Q. Этот процесс квантования упоминается как кратное пространственное векторное квантование для словарей кодов Q, имеющих различные скорости. Режим TCX по [Bessette, 1999] следует тому же принципу, хотя не предоставляются подробности ни по вычислению коэффициента нормализации g, ни по мультиплексированию индексов квантования и номеров словарей кодов.
8
Методика пространственного векторного квантования по [Xie, 1996] на основе RE дополнена в [Ragot, 2002], чтобы повысить эффективность и уменьшить сложность. Тем не менее, применение концепции, описанной в [Ragot, 2002], к кодированию TCX никогда не предлагалось.
8
В устройстве [Ragot, 2002] 8-мерный вектор кодируется посредством кратного квантователя, включающего в себя набор из RE словарей кодов, обозначенных как
0
2
3
36
1
n
8
n
8
n
8
n
4n
E
E
{Q, Q, Q, ..., Q}. Словарь кодов Qне задается в наборе, чтобы повысить эффективность кодирования. Все словари кодов Q составляются как поднаборы одной 8-мерной пространственной решетки RE, Q RE. Скорость передачи в битах n-ного словаря кодов, заданная как биты на размерность, составляет 4n/8, т.е. каждый словарь кодов Q содержит 2 кодовых векторов. Структура кратного квантователя придерживается идеи [Ragot, 2002]. Для данного 8-мерного входного вектора кодер кратного квантователя находит ближайшего соседа в RE и выводит номер словаря кодов n и индекс i в соответствующем словаре кодов Q. Эффективность кодирования повышается посредством применения методики кодирования по энтропии для индексов квантования, т.е. номеров словарей кодов n и индексов i разделений. В [Ragot, 2002] номер словаря кодов n кодируется до мультиплексирования с потоком битов с помощью унарного кода, который содержит число n-1 единиц и нулевой стоповый бит. Номер словаря кодов, представленный посредством унарного кода, обозначается как n. Для индексов словарей кодов i не используется кодирование по энтропии. Назначение унарного кода и битов из n и i проиллюстрировано в следующей табл. 1.
Таблица 1Число бит, требуемых, чтобы индексировать словари кодов
Номер словаря кодов n<sub>k</sub>
Унарный код n<sub>Ek</sub> в двоичной форме
Число бит для n<sub>Ek</sub>
Число бит для i<sub>k</sub>
Число бит на разделение
0
0
1
0
1
2
10
2
8
10
3
110
3
12
15
4
1110
4
16
20
5
11110
5
20
25
Как проиллюстрировано в табл. 1, один бит необходим для кодирования входного вектора, когда n=0, иначе необходимо 5n бит.
Более того, практической проблемой при кодировании звука является форматирование потока битов и обработка некорректных кадров, также известное как маскировка стирания кадров. Поток бит обычно форматируется на стороне кодирования как последовательные кадры (или блоки) бит. Вследствие искажений в канале (к примеру, нарушения CRC (контроля с помощью циклически избыточного кода), потери или задержки пакетов и т.д.), некоторые кадры могут быть не приняты корректно на стороне декодирования. В этом случае декодер типично принимает признак, объявляющий стирание кадра, и некорректный кадр "декодируется" посредством экстраполяции на основе предшествующей истории декодера. Общая процедура, чтобы обрабатывать некорректные кадры при декодировании CELP, состоит из повторного использования предшествующего фильтра синтеза LP и экстраполирования предыдущего возбуждения.
Чтобы повысить надежность в отношении потерь кадров, повтора параметров, также может быть использовано кодирование с прямым исправлением ошибок (FEC).
Проблема маскировки стирания кадров для TCX или кодирования с переключением ACELP/TCX еще не разрешена в современной технологии.
Сущность изобретения
В соответствии с изобретением предусмотрено следующее.
(1) Способ введения низкочастотных предыскажений в спектр звукового сигнала, преобразованного в частотной области и содержащего коэффициенты преобразования, сгруппированные в множество блоков, при этом способ содержит этапы, на которых:
- вычисляют максимальную интенсивность для одного блока, имеющего индекс позиции;
- вычисляют коэффициент для каждого блока, имеющего индекс позиции меньше индекса позиции блока с максимальной интенсивностью, при этом вычисление кадра содержит, для каждого блока, этапы, на которых:
- вычисляют интенсивность блока; и
- вычисляют коэффициент из вычисленной максимальной интенсивности и вычисленной интенсивности блока; и
- для каждого блока, определяют из коэффициента усиление, применяемое к коэффициентам преобразования блока.
(2) Устройство введения низкочастотных предыскажений в спектр звукового сигнала, преобразованного в частотной области и содержащего коэффициенты преобразования, сгруппированные в множество блоков, при этом устройство содержит:
- средство вычисления максимальной интенсивности для одного блока, имеющего индекс позиции;
- средство вычисления коэффициента для каждого блока, имеющего индекс позиции меньше индекса позиции блока с максимальной интенсивностью, при этом средство вычисления коэффициента содержит, для каждого блока:
- средство вычисления интенсивности блока; и
- средство вычисления коэффициента из вычисленной максимальной интенсивности и вычисленной интенсивности блока; и
- средство определения, для каждого блока и из коэффициента усиления, применяемого к коэффициентам преобразования блока.
(3) Устройство введения низкочастотных предыскажений в спектр звукового сигнала, преобразованного в частотной области и содержащего коэффициенты преобразования, сгруппированные в множество блоков, при этом устройство содержит:
- вычислитель максимальной интенсивности для одного блока, имеющего индекс позиции;
- вычислитель коэффициента для каждого блока, имеющего индекс позиции меньше индекса позиции блока с максимальной интенсивностью, при этом вычислитель коэффициента, для каждого блока:
- вычисляет интенсивность блока; и
- вычисляет коэффициент из вычисленной максимальной интенсивности и вычисленной интенсивности блока; и
- вычислитель усиления, для каждого блока и в ответ на коэффициент, при этом усиление применяется к коэффициентам преобразования блока.
(4) Способ обработки принимаемого кодированного звукового сигнала, при этом способ содержит этапы, на которых:
- извлекают параметры кодирования из принимаемого кодированного звукового сигнала, при этом извлеченные параметры кодирования включают в себя коэффициенты частотного преобразования упомянутого звукового сигнала, причем в коэффициенты преобразования введены низкочастотные предыскажения с помощью вышеуказанного способа;
- обрабатывают извлеченные параметры кодирования, чтобы синтезировать звуковой сигнал, при этом обработка извлеченных параметров кодирования содержит устранение низкочастотных предыскажений в коэффициентах преобразования с введенными низкочастотными предыскажениями.
(5) Декодер для обработки принимаемого кодированного звукового сигнала, при этом декодер содержит:
- часть входного декодера, снабжаемую принимаемым кодированным звуковым сигналом и реализующую экстрактор параметров кодирования из принимаемого кодированного звукового сигнала, при этом извлеченные параметры кодирования включают в себя коэффициенты частотного преобразования упомянутого звукового сигнала, причем в коэффициенты преобразования введены низкочастотные предыскажения с помощью вышеуказанного устройства;
- процессор извлеченных параметров кодирования, чтобы синтезировать звуковой сигнал, при этом упомянутый процессор содержит модуль устранения низкочастотных предыскажений, снабжаемый коэффициентами преобразования с введенными низкочастотными предыскажениями.
(6) Способ высокочастотного (HF)-кодирования для кодирования, посредством схемы расширения полосы пропускания, HF-сигнала, получаемого из разделения полнодиапазонного звукового сигнала на высокочастотный (HF)-сигнал и низкочастотный (LF)-сигнал, при этом способ содержит этапы, на которых:
- выполняют анализ кодирования с линейным предсказанием (LPC)-анализ LF- и HF-сигналов, чтобы сгенерировать LPC-коэффициенты, которые моделируют огибающую спектра LF- и HF-сигнала;
- вычисляют, из LPC-коэфициентов, оценку согласующей разницы HF;
- вычисляют интенсивность HF-сигнала;
- обрабатывают LF-сигнал, чтобы сгенерировать синтезированную версию HF-сигнала;
- вычисляют интенсивность синтезированной версии HF-сигнала;
- вычисляют соотношение между вычисленной интенсивностью HF-сигнала и вычисленной интенсивностью синтезированной версии HF-сигнала и выражают вычисленное соотношение как компенсирующее усиление HF; и
- вычисляют разность между оценкой согласующего усиления HF и компенсирующего усиления HF, чтобы получить корректировку усиления;
- при этом кодированный HF-сигнал содержит LPC-параметры и корректировку усиления.
(7) Устройство HF-кодирования для кодирования, посредством схемы расширения полосы пропускания, HF-сигнала, получаемого из разделения полнодиапазонного звукового сигнала на HF-сигнал и LF-сигнал, при этом устройство содержит:
- средство выполнения LPC-анализа LF- и HF-сигналов, чтобы сгенерировать LPC-коэффициенты, которые моделируют огибающую спектра LF- и HF-сигналов;
- средство вычисления, из LPC-коэфициентов, оценки согласующего усиления HF;
- средство вычисления интенсивности HF-сигнала;
- средство обработки LF-сигнала, чтобы сгенерировать синтезированную версию HF-сигнала;
- средство вычисления интенсивности синтезированной версии HF-сигнала;
- средство вычисления соотношения между вычисленной интенсивностью HF-сигнала и вычисленной интенсивностью синтезированной версии HF-сигнала и средство выражения вычисленного соотношения как компенсирующего усиления HF; и
- средство вычисления разности между оценкой согласующего усиления HF и компенсирующего усиления HF, чтобы получить корректировку усиления;
- при этом кодированный HF-сигнал содержит LPC-параметры и корректировку усиления.
(8) Устройство HF-кодирования для кодирования, посредством схемы расширения полосы пропускания, HF-сигнала, получаемого из разделения полнодиапазонного звукового сигнала на HF-сигнал и LF-сигнал, при этом устройство содержит:
- средство анализа LPC, снабжаемое LF- и HF-сигналами и генерирующее, в ответ на HF-сигнал, LPC-коэффициенты, которые моделируют огибающую спектра LF- и HF-сигналов;
- вычислитель оценки согласующего HF-усиления в ответ на LPC-коэффициенты;
- вычислитель интенсивности HF-сигнала;
- фильтр, снабжаемый LF-сигналом и генерирующий, в ответ на LF-сигнал, синтезированную версию HF-сигнала;
- вычислитель интенсивности синтезированной версии HF-сигнала;
- вычислитель соотношения между вычисленной интенсивностью HF-сигнала и вычисленной интенсивностью синтезированной версии HF-сигнала;
- преобразователь, снабжаемый вычисленным соотношением и выражающий упомянутое вычисленное соотношение как компенсирующее усиление HF; и
- вычислитель разности между оценкой согласующего усиления HF и компенсирующего усиления HF, чтобы получить корректировку усиления;
- при этом кодированный HF-сигнал содержит LPC-параметры и корректировку усиления.
(9) Способ декодирования HF-сигнала, закодированного посредством схемы расширения полосы пропускания, при этом способ содержит этапы, на которых:
- принимают кодированный HF-сигнал;
- извлекают из кодированного HF-сигнала LPC-коэффициенты и корректировку усиления;
- вычисляют оценку HF-усиления из извлеченных LPC-коэффициентов;
- добавляют корректировку усиления к вычисленной оценке HF-усиления, чтобы получить HF-усиление;
- усиливают LF-сигнал возбуждения посредством HF-усиления, чтобы сгенерировать HF-сигнал возбуждения; и
- обрабатывают HF-сигнал возбуждения посредством фильтра HF-синтеза, чтобы сгенерировать синтезированную версию HF-сигнала.
(10) Декодер для декодирования HF-сигнала, закодированного посредством схемы расширения полосы пропускания, при этом декодер содержит:
- средство приема кодированного HF-сигнала;
- средство извлечения из кодированного HF-сигнала LPC-коэффициентов и корректировки усиления;
- средство вычисления оценки HF-усиления из извлеченных LPC-коэффициентов;
- средство добавления корректировки усиления к вычисленной оценке HF-усиления, чтобы получить HF-усиление;
- средство усиления LF-сигнала возбуждения посредством HF-усиления, чтобы сгенерировать HF-сигнал возбуждения; и
- средство обработки HF-сигнала возбуждения посредством фильтра HF-синтеза, чтобы сгенерировать синтезированную версию HF-сигнала.
(11) Декодер для декодирования HF-сигнала, закодированного посредством схемы расширения полосы пропускания, при этом декодер содержит:
- вход для приема кодированного HF-сигнала;
- декодер, снабжаемый кодированным HF-сигналом и извлекающий из кодированного HF-сигнала LPC-коэффициенты;
- декодер, снабжаемый кодированным HF-сигналом и извлекающий из кодированного HF-сигнала корректировку усиления;
- вычислитель оценки HF-усиления из извлеченных LPC-коэффициентов;
- сумматор корректировки усиления и вычисленной оценки HF-усиления, чтобы получить HF-усиление;
- усилитель LF-сигнала возбуждения посредством HF-усиления, чтобы сгенерировать HF-сигнал возбуждения; и
- фильтр HF-синтеза, снабжаемый HF-сигналом возбуждения и генерирующий, в ответ на HF-сигнал возбуждения, синтезированную версию HF-сигнала.
(12) Способ переключения из первого режима кодирования звуковых сигналов ко второму режиму кодирования звуковых сигналов на границе между предыдущим кадром, закодированным согласно первому режиму кодирования, и текущим кадром, закодированным согласно второму режиму кодирования, при этом звуковой сигнал фильтруется посредством фильтра взвешивания, чтобы сгенерировать, в текущем кадре, взвешенный сигнал, при этом способ содержит этапы, на которых:
- вычисляют отклик при отсутствии входного сигнала фильтра взвешивания;
- выполняют оконное кодирование отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- в текущем кадре, удаляют из взвешенного сигнала оконно кодированный отклик при отсутствии входного сигнала.
(13) Устройство для переключения из первого режима кодирования звуковых сигналов ко второму режиму кодирования звуковых сигналов на границе между предыдущим кадром, закодированным согласно первому режиму кодирования, и текущим кадром, закодированным согласно второму режиму кодирования, при этом звуковой сигнал фильтруется посредством фильтра взвешивания, чтобы сгенерировать, в текущем кадре, взвешенный сигнал, при этом устройство содержит:
- средство вычисления отклика при отсутствии входного сигнала фильтра взвешивания;
- средство выполнения оконного кодирования отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- средство удаления, в текущем кадре, из взвешенного сигнала оконно кодированного отклика при отсутствии входного сигнала.
(14) Устройство для переключения из первого режима кодирования звуковых сигналов ко второму режиму кодирования звуковых сигналов на границе между предыдущим кадром, закодированным согласно первому режиму кодирования, и текущим кадром, закодированным согласно второму режиму кодирования, при этом звуковой сигнал фильтруется посредством фильтра взвешивания, чтобы сгенерировать, в текущем кадре, взвешенный сигнал, при этом устройство содержит:
- вычислитель отклика при отсутствии входного сигнала фильтра взвешивания;
- генератор окон для выполнения оконного кодирования отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- сумматор для удаления, в текущем кадре, оконно кодированного отклика при отсутствии входного сигнала из взвешенного сигнала.
(15) Способ генерирования из декодированного целевого сигнала целевого сигнала по алгоритму перекрытия с суммированием в текущем кадре, закодированном согласно первому режиму кодирования, при этом способ содержит этапы, на которых:
- выполняют оконное кодирование декодированного целевого сигнала текущего кадра в данном окне;
- пропускают левую часть окна;
- вычисляют отклик при отсутствии входного сигнала фильтра взвешивания предыдущего кадра, закодированного согласно второму режиму кодирования, и выполняют оконное кодирование отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- добавляют вычисленный отклик при отсутствии входного сигнала к декодированному целевому сигналу, чтобы восстановить упомянутый целевой сигнал по алгоритму перекрытия с суммированием.
(16) Устройство генерирования из декодированного целевого сигнала целевого сигнала по алгоритму перекрытия с суммированием в текущем кадре, закодированном согласно первому режиму кодирования, при этом устройство содержит:
- средство выполнения оконного кодирования декодированного целевого сигнала текущего кадра в данном окне;
- средство пропуска левой части окна;
- средство вычисления отклика при отсутствии входного сигнала фильтра взвешивания предыдущего кадра, закодированного согласно второму режиму кодирования, и средство выполнения оконного кодирования отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- средство добавления вычисленного отклика при отсутствии входного сигнала к декодированному целевому сигналу, чтобы восстановить упомянутый целевой сигнал по алгоритму перекрытия с суммированием.
(17) Устройство генерирования из декодированного целевого сигнала целевого сигнала по алгоритму перекрытия с суммированием в текущем кадре, закодированном согласно первому режиму кодирования, при этом устройство содержит:
- первый генератор окон для выполнения оконного кодирования декодированного целевого сигнала текущего кадра в данном окне;
- средство пропуска левой части окна;
- вычислитель отклика при отсутствии входного сигнала фильтра взвешивания предыдущего кадра, закодированного согласно второму режиму кодирования, и второй генератор окон для выполнения оконного кодирования отклика при отсутствии входного сигнала, так чтобы упомянутый отклик при отсутствии входного сигнала имел амплитуду, монотонно уменьшающуюся до нуля после предварительно определенного периода времени; и
- сумматор для добавления вычисленного отклика при отсутствии входного сигнала к декодированному целевому сигналу, чтобы восстановить упомянутый целевой сигнал по алгоритму перекрытия с суммированием.
Вышеупомянутые и другие цели, преимущества и признаки настоящего изобретения станут более очевидны из прочтения последующего неограничивающего описания его иллюстративных вариантов осуществления, предоставленных только в качестве примера со ссылкой на прилагаемые чертежи.
Краткое описание чертежей
На прилагаемых чертежах:
фиг.1 - это принципиальная блок-схема высокого уровня одного варианта осуществления кодера в соответствии с настоящим изобретением;
фиг.2 - это неограничивающий пример временной диаграммы типов кадров в суперкадре;
фиг.3 - это диаграмма, показывающая неограничивающий пример оконного кодирования для линейного предиктивного анализа, наряду с коэффициентами интерполяции, используемыми для 5-миллисекундных субкадров и зависящими от режима 20-миллисекундного ACELP-, 20-миллисекундного TCX-, 40-миллисекундного TCX- или 80-миллисекундного TCX-кадра;
фиг.4a-4c - это диаграммы, иллюстрирующие неограничивающий пример оконного кодирования кадра в кодере ACELP/TCX, в зависимости от режима и длины текущего кадра и предыдущего режима кадра;
фиг.5a - это блок-схема высокого уровня, иллюстрирующая один вариант осуществления структуры и способ, реализованный посредством кодера согласно настоящему изобретению, для TCX-кадров;
фиг.5b - это график, иллюстрирующий неограничивающий пример амплитудного спектра до и после предварительного формирования спектра, выполняемого посредством кодера фиг.5a;
фиг.5c - это график, иллюстрирующий неограничивающий пример функции взвешивания, определяющей усиление, применяемое к спектру в ходе предварительного формирования спектра;
8
фиг.6 - это принципиальная блок-схема, показывающая то, как алгебраическое кодирование используется для того, чтобы квантовать набор коэффициентов, например, частотных коэффициентов на основе ранее описанного автомасштабируемого кратного пространственного векторного квантователя, использующего пространственную решетку RE;
фиг.7 - это блок-схема последовательности операций способа, описывающая неограничивающий пример итеративной процедуры глобальной оценки усиления в логарифмической области для TCX-кодера, причем эта процедура глобальной оценки является этапом, реализуемым при TCX-кодировании с помощью пространственного квантователя, чтобы уменьшить сложность при сохранении бюджета по битам для данного кадра;
фиг.8 - это график, иллюстрирующий неограничивающий пример глобальной оценки усиления и оценки уровня шума (обратного создания избытка информации) в TCX-кадрах;
фиг.9 - это блок-схема последовательности операций способа, иллюстрирующая пример обработки переполнения бюджета по битам при TCX-кодировании при вычислении индексов точек разделений на пространственной решетке;
фиг.10a - это принципиальная блок-схема, показывающая неограничивающий пример высокочастотного (HF) кодера, основанного на расширении полосы пропускания;
фиг.10b - это принципиальная блок-схема и графики, показывающие неограничивающий пример процедуры согласования усиления, выполняемой посредством кодера по фиг.10a между низко- и высокочастотной огибающей, вычисленной кодером по фиг.10a;
фиг.11 - это блок-схема высокого уровня одного варианта осуществления декодера в соответствии с настоящим изобретением, показывающая рекомбинацию низкочастотного сигнала, закодированного с помощью гибридного ACELP/TCX, и HF-сигнала, закодированного с помощью расширения полосы пропускания;
фиг.12 - это принципиальная блок-схема, иллюстрирующая неограничивающий пример декодера ACELP/TCX для LF-сигнала;
фиг.13 - это блок-схема последовательности операций способа, показывающая неограничивающий пример логики декодирования ACELP/TCX при обработке четырех (4) пакетов, формирующих 80-миллисекундный кадр;
фиг.14 - это принципиальная блок-схема, иллюстрирующая неограничивающий пример ACELP-декодера, используемого в декодере ACELP/TCX по фиг.12;
фиг.15 - это принципиальная блок-схема, иллюстрирующая неограничивающий пример TCX-декодера, используемого в декодере ACELP/TCX по фиг.12;
фиг.16 - это принципиальная блок-схема неограничивающего примера HF-декодера, работающего на основе способа расширения полосы пропускания;
фиг.17 - это принципиальная блок-схема неограничивающего примера гребенки фильтров постобработки и синтеза на стороне декодера;
фиг.18 - это принципиальная блок-схема неограничивающего примера LF-кодера, показывающая то, как ACELP- и TCX-кодеры испытываются в конкурентном режиме, используя критерий сегментного SNR (соотношения "сигнал-шум"), чтобы выбирать надлежащий режим кодирования для каждого кадра в 80-миллисекундном суперкадре;
фиг.19 - это принципиальная блок-схема, показывающая неограничивающий пример предварительной обработки и разложения на поддиапазоны, применяемого на стороне кодера к каждому 80-миллисекундному суперкадру;
фиг.20 - это принципиальная блок-схема последовательности операций способа, описывающая работу модуля предварительного формирования спектра кодера по фиг.5a; и
фиг.21 - это принципиальная блок-схема последовательности операций способа, описывающая работу адаптивного модуля устранения низкочастотных предыскажений декодера по фиг.15.
Подробное описание иллюстративных вариантов осуществления
Неограничивающие иллюстративные варианты осуществления раскрываются в связи с устройством кодирования/декодирования звука, использующим модель кодирования ACELP/TCX и модель автомасштабируемого кратного пространственного векторного квантования. Тем не менее, следует принимать во внимание, что настоящее изобретение может быть в равной степени применено к другим типам моделей кодирования и квантования.
Обзор кодера
Высокоуровневое описание кодера
Высокоуровневая принципиальная блок-схема одного варианта осуществления кодера согласно настоящему изобретению проиллюстрирована на фиг.1.
max
max
Ссылаясь на фиг.1, увидим, что входной сигнал дискретизируется на частоте 16 кГц и выше и кодируется в суперкадры, такие как 1.004 из T мс, например, при T = 80 мс. Каждый суперкадр 1.004 предварительно обрабатывается и разделяется на два поддиапазона, например, способом, аналогичным предварительной обработке в AMR-WB. Низкочастотные (LF) сигналы, такие как 1.005, задаются в рамках полосы частот 0-6400 Гц, тогда как высокочастотные (HF) сигналы, такие как 1.006, задаются в рамках полосы частот 6400-F Гц, где F - это частота Найквиста. Частота Найквиста - это минимальная частота дискретизации, которая теоретически разрешает исходному сигналу быть восстановленным без искажения: для сигнала, спектр которого обычно идет от нулевой частоты до максимальной частоты, частота Найквиста равна двукратному значению этой максимальной частоты.
По-прежнему ссылаясь на фиг.1, увидим, что LF-сигнал 1.005 кодируется посредством многорежимного кодирования ACELP/TCX (см. модуль 1.002), встроенного в проиллюстрированном примере в ядро AMR-WB. AMR-WB работает с 20-миллисекундными кадрами в рамках 80-миллисекундного суперкадра. Режим ACELP основан на алгоритме кодирования AMR-WB и, следовательно, работает с 20-миллисекундными кадрами. Режим TCX может работать с 20-, 40- или 80-миллисекундными кадрами в рамках 80-миллисекундного суперкадра. В этом иллюстративном примере три (3) длины кадра TCX в 20, 40 и 80 мс используются с перекрытием в 2,5, 5 и 10 мс соответственно. Перекрытие необходимо для того, чтобы уменьшить эффект кадрирования в режиме TCX (как при кодировании с преобразованием).
Фиг.2 представляет пример временной диаграммы типов кадров для кодирования ACELP/TCX LF-сигнала. Как проиллюстрировано на фиг.2, режим ACELP может быть выбран в любом из первого 2.001, второго 2.002, третьего 2.003 и четвертого 2.004 20-миллисекундных ACELP-кадров в рамках 80-миллисекундного суперкадра 2.005. Аналогично, режим TCX может быть использован в любом из первого 2.006, второго 2.007, третьего 2.008 и четвертого 2.009 20-миллисекундных TCX-кадров в рамках 80-миллисекундного суперкадра 2.005. Дополнительно, первые два или последние два 20-миллисекундных кадра могут быть сгруппированы, чтобы сформировать 40-миллисекундные TCX-кадры 2.011 и 2.012, которые должны быть закодированы в режиме TCX. Наконец, целый 80-миллисекундный суперкадр 2.005 может быть закодирован в одном одиночном 80-миллисекундном TCX-кадре 2.010. При этом всего 26 различных комбинаций кадров ACELP и TCX доступно, чтобы закодировать 80-миллисекундный суперкадр, такой как 2.005. Типы кадров, ACELP или TCX, и их длина в 80-миллисекундном суперкадре определяются в замкнутом контуре, как описано далее.
Снова ссылаясь на фиг.1, увидим, что HF-сигнал 1.006 кодируется с помощью подхода расширения полосы пропускания (см. модуль HF-кодирования 1.003). При расширении полосы пропускания используется параметрическая модель фильтра возбуждения, где фильтр кодируется с помощью нескольких бит и где возбуждение восстанавливается в декодере из принимаемого возбуждения LF-сигнала. Кроме того, в одном варианте осуществления типы кадров, выбранные для нижней полосы частот (ACELP/TCX), непосредственно диктуют длину кадра, используемую для расширения полосы пропускания в 80-миллисекундном суперкадре.
Конфигурации суперкадров
Все возможные конфигурации суперкадров перечислены в табл. 2 в форме
1
2
3
4
k
(m, m, m, m), где m обозначает тип кадра, выбранный для k-того кадра в 20 мс в рамках 80-миллисекундного суперкадра таким образом, чтобы:
k
m = 0 для 20-миллисекундного ACELP-кадра,
k
m = 1 для 20-миллисекундного TCX-кадра,
k
m = 2 для 40-миллисекундного TCX-кадра,
k
m = 3 для 80-миллисекундного TCX-кадра.
Например, конфигурация (1, 0, 2, 2) указывает, что 80-миллисекундный суперкадр закодирован посредством кодирования первого 20-миллисекундного кадра как 20-миллисекундного TCX-кадра (TCX20), после чего следует кодирование второго 20-миллисекундного кадра как 20-миллисекудного ACELP-кадра и, наконец, посредством кодирования последних двух 20-миллисекундных кадров как одиночного 40-миллисекундного TCX-кадра (TCX40). Аналогично, конфигурация (3, 3, 3, 3) указывает, что 80-миллисекундный TCX-кадр (TCX80) задает целый суперкадр 2.005.
Таблица 2Все возможные 26 конфигураций суперкадров
(0,0,0,0)
(0,0,0,1)
(2,2,0,0)
(1,0,0,0)
(1,0,0,1)
(2,2,1,0)
(0,1,0,0)
(0,1,0,1)
(2,2,0,1)
(1,1,0,0)
(1,1,0,1)
(2,2,1,1)
(0,0,1,0)
(0,0,1,1)
(0,0,2,2)
(1,0,1,0)
(1,0,1,1)
(1,0,2,2)
(0,1,1,0)
(0,1,1,1)
(0,1,2,2)
(2,2,2,2)
(1,1,1,0)
(1,1,1,1)
(1,1,2,2)
(3,3,3,3)
Выбор режима
Конфигурация суперкадра может быть определена посредством решения в разомкнутом контуре или в замкнутом контуре. Подход разомкнутого контура состоит из выбора конфигурации суперкадра после определенного анализа до кодирования суперкадра таким образом, чтобы уменьшить общую сложность. Подход замкнутого контура состоит из испытания всех комбинаций суперкадров и выбора оптимальной. Решение замкнутого контура, в общем, предоставляет более высокое качество по сравнению с решением разомкнутого контура, с компромиссом по сложности. Неограничивающий пример решения замкнутого контура обобщен в следующей табл. 3.
В этом неограничивающем примере решения замкнутого контура все 26 возможных комбинаций суперкадров табл. 2 могут быть выбраны с помощью всего 11 испытаний. Левая половина табл. 3 (испытания) показывает, что режим кодирования применяется к каждому 20-миллисекундному кадру в каждом из 11 испытаний. Fr1-Fr4 относятся к кадру - кадру 4 в суперкадре. Каждый номер испытания (1-11) указывает этап в процессе принятия решения замкнутого контура. Окончательное решение известно только после этапа 11. Следует отметить, что каждый 20-миллисекундный кадр участвует только в четырех (4) из 11 испытаний. Когда более одного (1) кадра участвует в испытании (см., например, испытания 5, 10 и 11), то применяется TCX-кодирование соответствующей длины (TCX40 или TCX80). Чтобы понять промежуточные этапы процесса принятия решения замкнутого контура, правая половина табл. 3 приводит пример решения замкнутого контура, где окончательное решение после испытания 11 - это TCX80. Это соответствует значению 3 для режима во всех четырех (4) 20-миллисекундных кадрах этого конкретного суперкадра. Выделенные жирным числа в примере в правой части табл. 3 показывают, в какой точке выполняется выбор режима при промежуточных этапах процесса принятия решения в замкнутом контуре.
Таблица 3Испытания и пример выбора режима замкнутого контура
ИСПЫТАНИЯ (11)
Пример выбора (жирным = сравнение выполнено)
Fr1
Fr2
Fr3
Fr4
Fr 1
Fr2
Fr3
Fr4
ACELP
ACELP
TCX20
<b>ACELP</b>
ACELP
ACELP
ACELP
TCX20
ACELP
<b>TCX20</b>
TCX40
TCX40
<b>ACELP</b>
<b>TCX20</b>
ACELP
ACELP
TCX20
ACELP
TCX20
ACELP
TCX20
<b>TCX20</b>
ACELP
ACELP
TCX20
TCX20
ACELP
TCX20
ACELP
TCX20
TCX20
<b>TCX20</b>
TCX40
TCX40
ACELP
TCX20
<b>TCX40</b>
<b>TCX40</b>
TCX80
TCX80
TCX80
TCX80
<b>TCX80</b>
<b>TCX80</b>
<b>TCX80</b>
<b>TCX80</b>
Процесс принятия решения замкнутого контура табл. 3 выполняется следующим образом. Сначала при испытаниях 1 и 2 кодирование ACELP (AMR-WB) и TCX20 испытывается для 20-миллисекундного кадра Fr1. Затем осуществляется выбор для кадра Fr1 между этими двумя режимами. Критерием выбора может быть сегментное соотношение "сигнал-шум" (SNR) между взвешенным сигналом и синтезированным взвешенным сигналом. Сегментное SNR вычисляется с помощью, например, 5-миллисекундных сегментов, а выбранный режим кодирования - это приводящий к наилучшему сегментному SNR. В примере табл. 3 предполагается, что режим ACELP сохранялся, как указано жирным справа в табл. 3.
При испытании 3 и 4 то же сравнение выполняется для кадра Fr2 между ACELP и TCX20. В проиллюстрированном примере табл. 3 предполагается, что TCX20 лучше ACELP. Снова выбирается TCX20 на основе вышеописанного измерения сегментного SNR. Этот выбор указан жирным в строке 4 справа в табл. 3.
При испытании 5 кадры Fr1 и Fr2 группируются вместе, чтобы сформировать 40-миллисекундный кадр, который кодируется с помощью TCX40. Теперь алгоритм должен выбрать между TCX40 для первых двух кадров Fr1 и Fr2, в сравнении с ACELP в первом кадре Fr1 и TCX20 во втором кадре Fr2. В примере табл. 3 предполагается, что последовательность ACELP-TCX20 выбрана в соответствии с вышеописанным критерием сегментного SNR, как указано жирным в строке 5 справа в табл. 3.
Та же процедура, что и при испытаниях 1-5, затем применяется к третьему Fr3 и четвертому Fr4 кадрам в испытаниях 6-10. После испытания 10 в примере табл. 3 четыре 20-миллисекундных кадра классифицируются как ACELP для кадра Fr1, TCX20 для кадра Fr2 и TCX40 для кадров Fr3 и Fr4, сгруппированных вместе.
Последнее испытание 11 выполняется, когда все четыре 20-миллисекундных кадра, т.е. целый 80-миллисекундный суперкадр, кодируются с помощью TCX80. Кроме того, критерий сегментного SNR снова используется для 5-миллисекундных сегментов, чтобы сравнить испытания 10 и 11. В примере табл.3 предполагается, что окончательное решение замкнутого контура - это TCX80 для всего суперкадра. Биты режима для четырех (4) 20-миллисекундных кадров в таком случае - это (3, 3, 3, 3), как показано в табл. 2.
Обзор режима TCX
Выбор режима замкнутого контура, описанный выше, подразумевает, что выборки в суперкадре должны быть закодированы с помощью ACELP и TCX перед принятием решения о режиме. ACELP-кодирование выполняется так, как в AMR-WB. TCX-кодирование выполняется, как показано на блок-схеме фиг.5. Режим TCX-кодирования аналогичен для TCX-кадров в 20, 40 и 80 мс, с несколькими отличиями, касающимися, главным образом, оконного кодирования и фильтрующей интерполяции. Подробности TCX-кодирования приводятся в последующем описании кодера. На данный момент TCX-кодирование фиг.5 может быть обобщено следующим образом.
Входной звуковой сигнал фильтруется посредством фильтра перцепционного взвешивания (такого же фильтра перцепционного взвешивания, что и в AMR-WB), чтобы получить взвешенный сигнал. Коэффициенты фильтра взвешивания интерполируются способом, который зависит от длины TCX-кадра. Если последним кадром был ACELP-кадр, отклик при отсутствии входного сигнала (ZIR) фильтра перцепционного взвешивания удаляется из взвешенного сигнала. Затем сигнал оконно кодируется (форма окна описывается далее), и преобразование применяется к оконно кодированному сигналу. В области преобразования сигнал сначала предварительно формируется, чтобы минимизировать помехи шума кодирования на нижних частотах, а затем квантуется с помощью конкретного пространственного квантователя, который описывается далее. После квантования функция обратного предварительного формирования применяется к спектру, который затем обратно преобразуется, чтобы предоставить квантованный сигнал временной области. После повторного масштабирования усиления окно снова применяется к квантованному сигналу, чтобы минимизировать межблоковые эффекты квантования в области преобразования. Перекрытие с суммированием используется для предыдущего кадра, если этот предыдущий кадр также был в режиме TCX. Наконец, сигнал возбуждения обнаруживается посредством обратной фильтрации с надлежащим обновлением памяти фильтра. Это возбуждение TCX осуществляется в той же "области", что и возбуждение ACELP (AMR-WB).
Далее описываются подробности TCX-кодирования, показанного на фиг.5.
Обзор расширения полосы пропускания (BWE)
Расширение полосы пропускания - это способ, используемый для того, чтобы кодировать HF-сигнал с низкими издержками в отношении скорости передачи в битах и сложности. В этом неограничивающем примере используется модель фильтра возбуждения, чтобы кодировать HF-сигнал. Возбуждение не передается, вместо этого декодер экстраполирует возбуждение HF-сигнала из принимаемого декодированного LF-возбуждения. Не требуются биты для передачи HF-сигнала возбуждения; все биты, связанные с HF-сигналом, используются для того, чтобы передавать аппроксимацию огибающей спектра этого HF-сигнала. Модель линейного LPC (фильтра) вычисляется для дискретизированного с понижением частоты HF-сигнала 1.006 фиг.1. Эти LPC-коэффициенты могут быть закодированы с помощью нескольких бит, поскольку дискретность уха уменьшается на верхних частотах и спектральная динамика звуковых сигналов также стремится у уменьшению на верхних частотах. Усиление также передается для каждого 20-миллисекундного кадра. Это усиление необходимо для того, чтобы компенсировать отсутствие согласования между HF-сигналом возбуждения, экстраполированным из LF-сигнала возбуждения, и передаваемым LPC-фильтром, связанным с HF-сигналом. LPC-фильтр квантуется в домене иммитансных спектральных частот (ISF).
Кодирование в диапазонах нижних и верхних частот синхронизировано по времени таким образом, чтобы расширение полосы пропускания сегментировалось по суперкадру согласно выбору в режиме нижней полосы частот. В последующем описании кодера раскрывается модуль расширения полосы пропускания.
Параметры кодирования
Параметры кодирования могут быть поделены на три (3) категории, как показано на фиг.1: информация о конфигурации суперкадров (или информация о режиме) 1.007, LF-параметры 1.008 и HF-параметры 1.009.
k
k
Конфигурация суперкадров может быть закодирована с помощью различных подходов. Например, чтобы удовлетворить конкретным системным требованиям, часто желательно или обязательно отправлять крупные пакеты, такие как 80-миллисекундные суперкадры, как последовательность меньших пакетов, каждый из которых соответствует меньшему числу бит и имеет, возможно, меньшую длительность. При этом каждый 80-миллисекундный суперкадр делится на четыре последовательных меньших пакета. Для секционирования суперкадра на четыре пакета тип кадра, выбранный для каждого 20-миллисекундного кадра в рамках суперкадра, указывается посредством двух бит, которые должны быть включены в соответствующий пакет. Это может быть легко осуществлено посредством преобразования целевого числа m ∈ {0, 1, 2, 3} в его соответствующее двоичное представление. Следует напомнить, что m - это целое число, описывающее режим кодирования, выбранный для k-того 20-миллисекундного кадра в рамках 80-миллисекундного суперкадра.
LF-параметры зависят от типа кадра. В ACELP-кадрах LF-параметры такие же, как параметры AMR-WB, помимо параметра средней интенсивности, чтобы повысить производительность AMR-WB относительно атак в музыкальных сигналах. Более конкретно, когда 20-миллисекундный кадр закодирован в ACELP-режиме (режим 0), LF-параметры, отправляемые для этого конкретного кадра в соответствующем пакете, - это:
- ISF-параметры (46 бит, повторно используемых из AMR-WB);
- Параметр средней интенсивности (2 дополнительных бита относительно AMR-WB);
- Запаздывание основного тона (как в AMR-WB);
- Фильтр основного тона (как в AMR-WB);
- Индексы фиксированных словарей тонов (повторно использованные из AMR-WB); и
- Усиления словарей кодов (как в 3GPP AMR-WB).
В TCX-кадрах ISF-параметры такие же, как в режиме ACELP (AMR-WB), но они передаются только каждый TCX-кадр. Например, если 80-миллисекундный суперкадр состоит из двух 40-миллисекундных TCX-кадров, то только два набора ISF-параметров передаются для всего 80-миллисекундного суперкадра. Аналогично, когда 80-миллисекундный суперкадр кодируется только как один 80-миллисекундный TCX-кадр, то только один набор ISF-параметров передается для этого суперкадра. Для каждого TCX-кадра, TCX20, TCX40 и TCX80, передаются следующие параметры:
- Один набор ISF-параметров (46 бит, повторно используемых из AMR-WB);
- Параметры, описывающие квантованные коэффициенты спектра при кратном пространственном VQ (см. фиг.6);
- Коэффициент шума для шумовой вставки (3 бита); и
- Глобальное усиление (скалярное, 7 бит).
Эти параметры и их кодирование описывается далее в описании кодера. Следует заметить, что значительная часть бюджета бит в TCX-кадрах выделяется индексам пространственного VQ.
HF-параметры, которые предоставляются посредством расширения полосы пропускания, типично связаны с огибающей и интенсивностью спектра. Передаются следующие HF-параметры:
- Один набор ISF-параметров (порядка 8, 9 бит) на кадр, при этом кадром может быть 20-миллисекундный ACELP-кадр, кадр TCX20, кадр TCX40 или кадр TCX80;
- HF-усиление (7 бит), квантованное как 4-мерный вектор усиления, с одним усилением на 20-, 40- или 80-миллисекундный кадр; и
- Корректировка HF-усиления для кадров TCX40 и TCX80, чтобы модифицировать более грубо квантованные HF-усиления в этих режимах TCX.
Выделения бит согласно одному варианту осуществления
Кодек ACELP/TCX согласно этому варианту осуществления может работать на пяти скоростях передачи в битах: 13,6, 16,8, 19,2, 20,8 и 24,0 кбит/с. Эти скорости передачи в битах связаны с несколькими из скоростей AMR-WB. Число бит, чтобы закодировать каждый 80-миллисекундный суперкадр на пяти (5) вышеупомянутых скоростях передачи в битах, составляет 1088, 1344, 1536, 1664 и 1920 бит соответственно. Более конкретно, всего 8 бит выделяется для конфигурации суперкадра (2 бита на 20-миллисекундный кадр), и 64 бита выделяются для расширения пропускной способности в каждом 80-миллисекундном суперкадре. Большее или меньшее число бит может быть использовано для расширения полосы пропускания, в зависимости от расширения, требуемого для того, чтобы закодировать HF-усиление и огибающую спектра. Оставшийся бюджет по битам, т.е. большая часть бюджета по битам, используется для того, чтобы закодировать LF-сигнал 1.005 фиг.1. Неограничивающий пример типичного выделения бит для различных типов кадров приведен в прилагаемых табл. 4, 5a, 5b и 5c. Выделение бит для расширения полосы пропускания показано в табл. 6. Эта таблица указывает процент общего бюджета по битам, типично используемый для кодирования различных параметров. Следует отметить, что в табл. 5b и 5c, соответствующих соответственно кадрам TCX40 и TCX80, числа в круглых скобках показывают разделение бит на два (табл. 5b) или четыре (табл. 5c) пакета равного размера. Например, табл. 5c показывает, что в режиме TCX80 46 ISF-бит суперкадра (один LPC-фильтр для всего суперкадра) делятся на 16 бит в первом пакете, 6 бит во втором пакете, 12 бит в третьем пакете и, наконец, 12 бит в последнем пакете.
Аналогично, биты алгебраического VQ (большая часть бюджета бит в режимах TCX) делятся на два пакета (табл. 5b) или четыре пакета (табл. 5c). Это разделение выполняется таким образом, чтобы квантованный спектр разделялся на две (табл. 5b) или четыре (табл. 5c) перемежающиеся дорожки, где каждая дорожка содержит один из каждых двух (табл. 5b) или один из каждых четырех (табл. 5c) спектральных блоков. Каждый спектральный блок состоит из четырех последовательных комплексных коэффициентов спектра. Это перемежение обеспечивает то, что, если пакет отсутствует, это приведет только к чередующимся "отверстиям" в декодированном спектре для кадров TCX40 и TCX80. Это разделение бит на меньшие пакеты для кадров TCX40 и TCX80 должно выполняться тщательно, чтобы управлять переполнением при записи в данный пакет.
Описание неограничивающего иллюстративного варианта осуществления кодера
В этом варианте осуществления кодера предполагается, что звуковой сигнал дискретизируется в PCM-формате на 16 кГц или выше при дискретности 16 бит на выборку. Роль кодера заключается в том, чтобы вычислять и кодировать параметры на основе звукового сигнала и передавать закодированные параметры в потоке битов для целей декодирования и синтеза. Признак указывает кодеру, что является входной частотой дискретизации.
Упрощенная блок-схема этого варианта осуществления кодера показана на фиг.1.
Входной сигнал делится на последовательные блоки по 80 мс, которые упоминаются как суперкадры, такие как 1.004 (фиг.1) в последующем описании. Каждый 80-миллисекундный суперкадр 1.004 предварительно обрабатывается и затем делится на два сигнала поддиапазона, т.е. LP-сигнал 1.005 и HF-сигнал 1.006, посредством препроцессора и аналитической гребенки фильтров 1.001 с помощью методики, аналогичной кодированию речи AMR-WB. Например, LF- и HF-сигналы 1.005 и 1.006 задаются в полосах частот 0-6400 Гц и 6400-11025 Гц соответственно.
Как раскрыто в описании кодера, LF-сигнал 1.005 кодируется посредством многорежимного кодирования ACELP/TCX с помощью модуля LF-кодирования (ACELP/TCX) 1.002, чтобы сгенерировать информацию 1.007 о режиме и квантованные LF-параметры 1.008, тогда как HF-сигнал кодируется с помощью модуля HF-кодирования (расширения полосы пропускания) 1.003, чтобы сгенерировать квантованные HF-параметры 1.009. Как проиллюстрировано на фиг.1, параметры кодирования, вычисленные в данном 80-миллисекундном суперкадре, в том числе информация 1.007 о режиме и квантованные HF- и LF-параметры 1.008 и 1.009, мультиплексируются, например, в четыре (4) пакета 1.011 равного размера посредством мультиплексора 1.010.
Далее подробнее описываются основные блоки схемы фиг.1, в том числе препроцессор и аналитическая гребенка фильтров 1.001, модуль LF-кодирования (ACELP/TCX) 1.002 и модуль HF-кодирования 1.003.
Препроцессор и аналитическая гребенка фильтров 1.001
Фиг.19 - это принципиальная блок-схема препроцессора и аналитической гребенки фильтров 1.001 фиг.1. Ссылаясь на фиг.19, входной 80-миллисекундный суперкадр 1.004 делится на два сигнала поддиапазона, более конкретно LF-сигнал 1.005 и HF-сигнал 1.006 на выходе препроцессора и аналитической гребенки фильтров 1.001 фиг.1.
Все еще ссылаясь на фиг.19, увидим, что модуль 19.001 HF-дискретизации с понижением частоты выполняет дискретизацию с понижением частоты с соответствующей фильтрацией (см., например, AMR-WB) входного 80-миллисекундного суперкадра, чтобы получить HF-сигнал 1.006 (80-миллисекундный кадр), а модуль 19.002 LF-дискретизации с понижением выполняет дискретизацию с понижением частоты с соответствующей фильтрацией (см., например, AMR-WB) входного 80-миллисекундного суперкадра, чтобы получить LF-сигнал (80-миллисекундный кадр), с помощью способа, аналогичного разложению на поддиапазоны AMR-WB. HF-сигнал 1.006 формирует входной сигнал модуля 1.003 HF-кодирования на фиг.1. LF-сигнал из модуля 19.002 LF-дискретизации с понижением частоты дополнительно предварительно обрабатывается с помощью двух фильтров перед отправкой в модуль 1.002 LF-кодирования по фиг.1. Сначала LF-сигнал из модуля 19.002 обрабатывается посредством фильтра 19.003 верхних частот, имеющего частоту среза в 50 Гц, чтобы удалить DC-компонент и самые нижние частотные компоненты. Затем фильтрованный LF-сигнал из фильтра 19.003 верхних частот обрабатывается посредством фильтра 19.004 устранения предыскажений, чтобы усилить высокочастотные компоненты. Это устранение предыскажений типично в широкополосных речевых кодерах и, следовательно, не описывается дополнительно в настоящем документе. Выход фильтра 19.004 устранения предыскажений составляет LF-сигнал 1.005 фиг.1, предоставляемый в модуль 1.002 LF-кодирования.
LF-кодирование
Упрощенная блок-схема неограничивающего примера LF-кодера показана на фиг.18. Фиг.18 показывает, что два режима кодирования, в частности, но не только, режимы ACELP и TCX, конкурируют в каждом 80-миллисекундном суперкадре. Более конкретно, селектор переключения 18.017 на выходе ACELP-кодера 18.015 и TCX-кодера 18.016 дает возможность каждому 20-миллисекундному кадру в рамках 80-миллисекундного суперкадра быть закодированным в режиме ACELP или TCX, т.е. в режиме TCX20, TCX40 или TCX80. Выбор режима осуществляется так, как описано в вышеприведенном описании кодера.
Следовательно, LF-кодирование использует два режима кодирования: режим ACELP, применяемый к 20-миллисекундным кадрам, и TCX. Чтобы оптимизировать качество звука, длине кадров в режиме TCX разрешено быть переменной. Как описано выше, режим TCX работает с 20-миллисекундными, 40-миллисекундными или 80-миллисекундными кадрами. Фактическая временная структура, используемая в кодере, проиллюстрирована на фиг.2.
На фиг.18 сначала выполняется LPC-анализ для входного LF-сигнала s(n). Тип, позиция и длина окна для LPC-анализа показаны на фиг.3, где окна размещаются относительно 80-миллисекундного сегмента LF-сигнала плюс данный просмотр вперед. Окна размещаются каждые 20 мс. После оконного кодирования LPC-коэффициенты вычисляются каждые 20 мс, затем преобразуются в представление иммитансных спектральных пар (ISP) и квантуются для передачи декодеру. Квантованные ISP-коэффициенты интерполируются каждые 5 мс, чтобы сглаживать выделение огибающей спектра.
Более конкретно, модуль 18.002 отвечает за входной LF-сигнал s(n), чтобы выполнять оконное кодирование и автокорреляцию каждые 20 мс. За модулем 18.002 следует модуль 18.003, который выполняет корреляционное оконное кодирование и корректировку белого шума. Сигнал, для которого выполнено корреляционное оконное кодирование и корректировка белого шума, обрабатывается посредством алгоритма Левинсона-Дурбина, реализованного в модуле 18.004. Далее модуль 18.005 выполняет ISP-преобразование LPC-коэффициентов. ISP-коэффициенты из модуля 18.005 интерполируются каждые 5 мс в ISP-области посредством модуля 18.006. Наконец, модуль 18.007 преобразует интерполированные ISP-коэффициенты из модуля 18.006 в интерполированные коэффициенты LPC-фильтра A(z) каждые 5 мс.
ISP-параметры из модуля 18.005 преобразуются в параметры ISF (иммитансных спектральных частот) в модуле 18.008 до квантования в ISF-области (модуль 18.009). Квантованные ISF-параметры из модуля 18.009 предоставляются в мультиплексор 18.021 ACELP/TCX.
Кроме того, квантованные ISF-параметры из модуля 18.009 преобразуются в ISP-параметры в модуле 18.010, полученные ISP-параметры интерполируются каждые 5 мс в ISP-области посредством модуля 18.011, и интерполированные ISP-параметры преобразуются в квантованные LPC-параметры A(z) каждые 5 мс.
Входной LF-сигнал s(n) фиг.18 кодируется в режиме ACELP посредством ACELP-кодера 18.015 и в режиме TCX посредством TCX-кодера 18.016 во всех возможных комбинациях длины кадра, описанных выше. В режиме ACELP только 20-миллисекундные кадры рассматриваются в рамках 80-миллисекундного суперкадра, тогда как в режиме TCX 20-миллисекундные, 40-миллисекундные и 80-миллисекундные могут быть рассмотрены. Все возможные комбинации кодирования ACELP/TCX по табл. 2 генерируются посредством кодеров 18.015 и 18.016 и затем тестируются посредством сравнения соответствующего синтезированного сигнала с исходным сигналом во взвешенной области. Как показано в табл. 2, окончательным выбором может быть смесь ACELP- и TCX-кадров в кодированном 80-миллисекундном суперкадре.
Для этой цели LF-сигнал s(n) обрабатывается посредством фильтра 18.013 перцепционного взвешивания, чтобы сгенерировать взвешенный LF-сигнал. Аналогичным образом синтезированный сигнал из ACELP-кодера 18.015 или TCX-кодера 18.016 в зависимости от позиции селектора переключения 18.017 обрабатывается посредством фильтра 18.018 перцепционного взвешивания, чтобы сгенерировать взвешенный синтезированный сигнал. Вычитатель 18.019 вычитает взвешенный синтезированный сигнал из взвешенного LF-сигнала, чтобы сгенерировать взвешенный сигнал ошибки. Блок 18.020 вычисления сегментного SNR отвечает за взвешенный LP-сигнал из фильтра 18.013 и взвешенный сигнал ошибки, чтобы сгенерировать сегментное отношение "сигнал-шум" (SNR). Сегментное SNR генерируется каждый 5-миллисекундный субкадр. Вычисление сегментного SNR хорошо известно специалистам в данной области техники и поэтому не описывается дополнительно в настоящем документе. Комбинация режимов ACELP и/или TCX, которая минимизирует сегментное SNR в 80-миллисекундном суперкадре, выбирается в качестве оптимальной комбинации режима кодирования. Помимо этого выполняется ссылка на табл. 2, задающую 26 возможных комбинаций режимов ACELP и/или TCX в 80-миллисекундном суперкадре.
Режим ACELP
Используемый режим ACELP очень похож на алгоритм ACELP, работающий при 12,8 кГц в стандарте кодирования речи AMR-WB. Основные изменения по сравнению с алгоритмом ACELP в AMR-WB - это:
- LP-анализ использует другое оконное кодирование, которое проиллюстрировано на фиг.3.
- Квантование усилений словарей кодов выполняется каждый 5-миллисекундный субкадр, как описано ниже.
Режим ACELP работает с 5-миллисекундными субкадрами, где анализ основного тона и алгебраический поиск в словаре кодов выполняются каждый субкадр.
Квантование усиления словарей кодов в режиме ACELP
p
c
c
В данном 5-миллисекундном ACELP-субкадре два усиления словаря кодов, в том числе усиление основного тона g и усиление фиксированного словаря кодов g, квантуются вместе на основе 7-битного квантования усиления по AMR-WB. Тем не менее, предсказание по методу скользящего среднего (MA) усиления фиксированного словаря кодов g, которое используется в AMR-WB, заменено на абсолютную ссылку, которая кодируется явно. Таким образом, усиления словарей кодов квантуются посредством формирования квантования с удалением среднего значения. Квантование без памяти (без предсказания) хорошо подходит, поскольку режим ACELP может быть применен к неречевым сигналам, например переходам в музыкальном сигнале, что требует более обобщенного квантования, чем в предиктивном подходе AMR-WB.
Вычисление и квантование абсолютной ссылки (в логарифмической области)
ener
0
1
L
i
i
i
sub
sub
ener
Параметр, обозначенный μ, вычисляется в открытом контуре и квантуется один раз на кадр с помощью 2 бит. Текущий 20-миллисекундный кадр LPC-остатка r = (r, r, ..., r), где L - это число выборок в кадре, делится на четыре (4) 5-миллисекундных субкадра, r=(r(0), ..., r(L-1)), где i = 0, 1, ..., 3, а L - это номер выборки в субкадре. Параметр μ задается просто как среднее интенсивностей субкадров (в дБ) по текущему кадру LPC-остатка:
где
i
i
- это интенсивность i-того субкадра LPC-остатка, а e(dB)=10 log10{e}. Константа 1 добавлена к фактической интенсивности субкадра в вышеприведенном уравнении, чтобы избежать последующего вычисления логарифмического значения 0.
ener
Среднее значение параметра μ затем обновляется следующим образом:
ener
ener
1
2
μ(dB) := μ(dB) - 5 * (ρ + ρ),
i
где ρ (i = 1 или 2) - это нормализованная корреляция, вычисленная как побочное произведение i-того анализа основного тона в открытом контуре. Эта модификация
ener
μ повышает качество звука для сегментов вокализованной речи.
ener
Среднее μ (dB) затем скалярно квантуется с помощью 2 бит. Уровни квантования задаются с шагом 12 дБ равными 18, 30, 42 и 54 дБ. Индекс квантования может быть вычислен просто как:
ener
tmp = (μ - 18)/12
index = floor (tmp + 0,5)
если (index < 0) index =0, если (index > 3) index=3.
Здесь floor означает взятие целой части числа с плавающей запятой. Например, floor (1,2) = 1, а floor (7,9)=7.
Следовательно, восстановленное среднее (в дБ):
ener
(dB) = 18 + (index * 12).
Тем не менее индекс и восстановленное среднее после этого обновляются, чтобы повысить качество звука для изменяющихся сигналов, таких как атаки, следующим образом:
1
2
3
4
max = max (e(dB), e(dB), e(dB), e(dB))
ener
если (dB) < (max - 27) и index <3,
ener
ener
index = index +1 и (dB) = (dB) + 1.
Квантование усилений словарей кодов
p
c
p
c
c0
c0
c
В AMR-WB усиления g и g основного тона и фиксированных словарей кодов квантуются совместно в форме (g, g * g), где g объединяет MA-предсказание для g и нормализацию относительно интенсивности нового кодового вектора.
p
c
p
c
c0
c0
c0
ener
Два усиления g и g в данном субкадре совместно квантуются с помощью ровно 7 бит, как и при кодировании речи AMR-WB, в форме (g, g* g). Единственное отличие заключается в вычислении g. Значение g основано только на квантованной средней интенсивности μ и вычисляется следующим образом:
c0
ener
c
g = 10 * ((dB) - ener(dB))/20
где
c
sub
sub
ener(dB) =10 * log10(0.01 + (c(0)*2 + … + c(L-1)*2)/L)
sub
sub
sub
где c(0), ..., c(L-1) - это выборки вектора LP-остатка в субкадре выборок L длины. c(0) - это первая выборка, c(1) - это вторая выборка, а c(L) - это последняя выборка LP-остатка в субкадре.
Режим TCX
В режимах TCX (TCX-кодер 18.016) перекрытие со следующим кадром задается, чтобы уменьшить блокирующие наведенные помехи вследствие кодирования с преобразованием целевого сигнала TCX. Оконное кодирование и перекрытие сигнала зависит от типа (ACELP или TCX) и размера текущего кадра, а также от типа и размера последнего кадра. Оконное кодирование описывается в следующем разделе.
Один вариант осуществления TCX-кодера 18.016 проиллюстрирован на фиг.5a. Процедура TCX-кодирования описывается далее, а затем приводится описание пространственного квантования, используемого, чтобы квантовать спектр.
TCX-кодирование согласно одному варианту осуществления выполняется следующим образом.
Сначала, как проиллюстрировано на фиг.5a, входной сигнал (TCX-кадр) фильтруется посредством фильтра 5.001 перцепционного взвешивания, чтобы сгенерировать взвешенный сигнал. В режимах TCX фильтр 5.001 перцепционного взвешивания использует квантованные LPC-коэффициенты A(z) вместо неквантованных LPC-коэффициентов A(z), используемых в режиме ACELP. Это обусловлено тем, что в отличие от ACELP, который использует анализ посредством синтеза, TCX-декодер должен применять фильтр обратного взвешивания, чтобы восстанавливать сигнал возбуждения. Если предыдущим закодированным кадром был ACELP-кадр, отклик при отсутствии входного сигнала (ZIR) фильтра перцепционного взвешивания удаляется из взвешенного сигнала посредством сумматора 5.014. В одном варианте осуществления ZIR усекается до 10 мс и оконно кодируется таким образом, чтобы его амплитуда монотонно уменьшалась до нуля после 10 мс (вычислитель 5.100). Несколько окон временной области могут быть использованы для этой операции. Фактическое вычисление ZIR не показано на фиг.5a, поскольку этот сигнал, также упоминаемый как "звонок фильтра" в кодерах CELP-типа, хорошо известен специалистам в данной области техники. После того как взвешенный сигнал вычислен, сигнал оконно кодируется в адаптивном генераторе 5.003 окон согласно выбору окна, описанному на фиг.4a-4c.
После оконного кодирования посредством генератора 5.003 модуль 5.004 преобразования преобразует оконно кодированный сигнал в частотную область с помощью быстрого преобразования Фурье (FFT).
Оконное кодирование в режимах TCX - адаптивный модуль 5.003 оконного кодирования
Далее описывается переключение режимов между ACELP-кадрами и TCX-кадрами. Чтобы минимизировать переходные помехи при переключении из одного режима к другому, надлежащее внимание должно быть уделено оконному кодированию и перекрытию последовательных кадров. Адаптивное оконное кодирование выполняется посредством процессора 6.003. Фиг.4a-4c показывают формы окон в зависимости от длины TCX-кадра и типа предыдущего кадра (ACELP или TCX).
На фиг.4a рассматривается случай, когда текущим кадром является кадр TCX20. В зависимости от последнего кадра применяемым окном может быть:
1) Если предыдущим кадром был 20-миллисекундный ACELP, окно - это конкатенация двух оконных сегментов: плоского окна продолжительностью 20 мс, за которым следует правая половина квадратного корня окна Хенинга (или правая половина синусоидального окна) продолжительностью 2,5 мс. Затем кодеру требуется просмотр вперед на 2,5 мс взвешенной речи.
2) Если предыдущим кадром был кадр TCX20, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 2,5 мс, затем плоского окна продолжительностью 17,5 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 2,5 мс. Кодеру снова требуется просмотр вперед на 2,5 мс взвешенной речи.
3) Если предыдущим кадром был кадр TCX40, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 5 мс, затем плоского окна продолжительностью 15 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 2,5 мс. Кодеру снова требуется просмотр вперед на 2,5 мс взвешенной речи.
4) Если предыдущим кадром был кадр TCX80, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 2,5 мс, затем плоского окна продолжительностью 10 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 2,5 мс. Кодеру снова требуется просмотр вперед на 2,5 мс взвешенной речи.
На фиг.4b рассматривается случай, когда текущим кадром является кадр TCX40. В зависимости от последнего кадра применяемым окном может быть:
1) Если предыдущим кадром был 20-миллисекундный ACELP-кадр, окно - это конкатенация двух оконных сегментов: плоского окна продолжительностью 40 мс, за которым следует правая половина квадратного корня окна Хенинга (или правая половина синусоидального окна) продолжительностью 5 мс. Затем кодеру требуется просмотр вперед на 5 мс взвешенной речи.
2) Если предыдущим кадром был кадр TCX20, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 2,5 мс, затем плоского окна продолжительностью 37,5 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 5 мс. Кодеру снова требуется просмотр вперед на 5 мс взвешенной речи.
3) Если предыдущим кадром был кадр TCX40, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 5 мс, затем плоского окна продолжительностью 35 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 5 мс. Кодеру снова требуется просмотр вперед на 5 мс взвешенной речи.
4) Если предыдущим кадром был кадр TCX80, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 10 мс, затем плоского окна продолжительностью 30 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 5 мс. Кодеру снова требуется просмотр вперед на 5 мс взвешенной речи.
Наконец, на фиг.4c рассматривается случай, когда текущим кадром является кадр TCX80. В зависимости от последнего кадра применяемым окном может быть:
1) Если предыдущим кадром был 20-миллисекундный ACELP-кадр, окно - это конкатенация двух оконных сегментов: плоского окна продолжительностью 80 мс, за которым следует правая половина квадратного корня окна Хенинга (или правая половина синусоидального окна) продолжительностью 5 мс. Затем кодеру требуется просмотр вперед на 10 мс взвешенной речи.
2) Если предыдущим кадром был кадр TCX20, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 2,5 мс, затем плоского окна продолжительностью 77,5 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 10 мс. Кодеру снова требуется просмотр вперед на 10 мс взвешенной речи.
3) Если предыдущим кадром был кадр TCX40, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 5 мс, затем плоского окна продолжительностью 75 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 10 мс. Кодеру снова требуется просмотр вперед на 10 мс взвешенной речи.
4) Если предыдущим кадром был кадр TCX80, окно - это конкатенация трех оконных сегментов: сначала левой половины квадратного корня окна Хенинга (или левой половины синусоидального окна) продолжительностью 10 мс, затем плоского окна продолжительностью 70 мс и, наконец, правой половины квадратного корня окна Хенинга (или правой половины синусоидального окна) продолжительностью 10 мс. Кодеру снова требуется просмотр вперед на 10 мс взвешенной речи.
Следует отметить, что эти типы окон применяются к взвешенному сигналу только в тех случаях, когда текущим кадром является TCX-кадр. Кадры ACELP-типа кодируются в значительной степени в соответствии с кодированием AMR-WB, т.е. посредством кодирования сигнала возбуждения с помощью анализа посредством синтеза, с тем чтобы минимизировать ошибку в целевом сигнале, причем целевым сигналом, в сущности, является взвешенный сигнал, для которого удален отклик при отсутствии входного сигнала фильтра взвешивания. Также следует отметить, что при кодировании TCX-кадра, которому предшествует другой TCX-кадр, сигнал, оконно кодированный посредством вышеописанных окон, квантуется непосредственно в области преобразования, как описывается ниже. Затем после квантования и обратного преобразования синтезированный взвешенный сигнал рекомбинируется с помощью перекрытия с суммированием в начале кадра с помощью запомненного просмотра вперед предыдущего кадра.
С другой стороны, при кодировании TCX-кадра, которому предшествовал ACELP-кадр, отклик при отсутствии входного сигнала фильтра взвешивания, фактически оконно кодированная и усеченная версия отклика при отсутствии входного сигнала сначала удаляется из оконно кодированного взвешенного сигнала. Поскольку отклик при отсутствии входного сигнала - это хорошая аппроксимация первых выборок кадра, результирующий эффект заключается в том, что оконно кодированный сигнал стремится к нулю в начале кадра (вследствие вычитания отклика при отсутствии входного сигнала) и в конце кадра (вследствие правого окна Хенинга, примененного к просмотру вперед, как описано выше и показано на фиг.4a-4c). Безусловно, оконно кодированный и усеченный отклик при отсутствии входного сигнала обратно добавляется к квантованному взвешенному сигналу после обратного преобразования.
Следовательно, надлежащий компромисс достигается между оптимальным окном (к примеру, окном Хенинга) до преобразования, используемого в TCX-кадрах, и неявным прямоугольным окном, которое должно быть применено к целевому сигналу при кодировании в режиме ACELP. Это обеспечивает плавное переключение между ACELP- и TCX-кадрами, при этом обеспечивая надлежащее оконное кодирование в обоих режимах.
Частотно-временное преобразование - модуль 5.004 преобразования
После вышеописанного оконного кодирования преобразование применяется к взвешенному сигналу в модуле 5.004 преобразования. В примере фиг.5a используется быстрое преобразование Фурье (FFT).
Как проиллюстрировано на фиг.4a-4c, режим TCX использует перекрытие между последовательными кадрами, чтобы уменьшить блокирующие наведенные помехи. Длина перекрытия зависит от длины режимов TCX: она задается равной соответственно 2,5, 5 и 10 мс, когда режим TCX работает с длиной кадра в 20, 40 и 80 мс соответственно (т.е. длина перекрытия задается равной 1/8 длины кадра). Этот выбор перекрытия упрощает основание логарифмов при быстром вычислении DFT посредством FFT. Как следствие, эффективная поддержка времени режимов TCX20, TCX40 и TCX80 - это 22,5, 45 и 90 мс соответственно, как показано на фиг.2. При частоте дискретизации в 12800 выборок в секунду (в LF-сигнале, генерируемом препроцессором и аналитической гребенкой фильтров 1.001 фиг.1) и при продолжительности "кадр+просмотр вперед" в 22,5, 45 и 90 мс поддержка времени FFT составляет 288, 576 и 1152 выборок соответственно. Эта длина может быть выражена, как 9 умножить на 32, 9 умножить на 64 и 9 умножить на 128. Следовательно, специальное FFT с основанием логарифмов 9 в таком случае может быть использовано для того, чтобы быстро вычислить спектр Фурье.
Предварительное формирование (введение низкочастотных предыскажений) - модуль 5.005 предварительного формирования
После того, как вычислен спектр Фурье (FFT), адаптивное введение низкочастотных предыскажений применяется к спектру сигнала посредством модуля 5.005 предварительного формирования спектра, чтобы минимизировать воспринимаемое искажение в нижних частотах. Обратное введение низкочастотных предыскажений применяется в декодере, а также в кодере посредством модуля 5.007 обратного формирования спектра, чтобы сгенерировать сигнал возбуждения, используемый для того, чтобы закодировать следующие кадры. Адаптивное введение низкочастотных предыскажений применяется только к первой четверти спектра следующим образом.
max
m
Сначала назовем X преобразованный сигнал на выходе модуля 5.004 FFT-преобразования. Коэффициент Фурье при частоте Найквиста систематически задается равным 0. Далее, если N - это число выборок в FFT (N тем самым соответствует длине окна), K=N/2 комплекснозначных коэффициентов Фурье группируются в блоки по четыре (4) последовательных коэффициента, формируя 8-мерные блоки действительных значений. Вкратце напомним, что длина блоков размера, отличного от 8, в целом может быть использована. В одном варианте осуществления размер блока 8 выбирается, чтобы совпадать с 8-мерным пространственным квантователем, используемым для спектрального квантования. Ссылаясь на фиг.20, интенсивность каждого блока вычисляется вплоть до первой четверти спектра, и интенсивность E и индекс i позиции блока с максимальной интенсивностью сохраняется (вычислитель 20.001). Затем вычисляется коэффициент Rдля каждого 8-мерного блока с индексом m позиции меньшим i (вычислитель 20.002) следующим образом:
m
- вычисление интенсивности E 8-мерного блока с индексом m позиции (модуль 20.003);
m
max
m
- вычисление соотношения R = E/ E (модуль 20.004);
m
m
- если R > 10, то задать R = 10 (модуль 20.005);
m
(m-1)
m
(m-1)
- также, если R > R, то R = R (модуль 20.006);
m
1/4
- вычисление значения (R) (модуль 20.007).
m
(m-1)
m
(m-1)
m
m
Последнее условие (если R > R, то R = R) обеспечивает, что функция R соотношения уменьшается монотонно. Дополнительно, ограничение соотношения R быть меньшим или равным 10 означает, что спектральные компоненты в функции введения низкочастотных предыскажений не будут модифицированы более чем на 20 дБ.
m
max
m
max
1/4
1/4
После вычисления соотношения (R) = (E / E)  для всех блоков с индексом позиции меньше i (и с вышеописанными ограничивающими условиями) эти соотношения применяются в качестве усиления для коэффициентов преобразования каждого соответствующего блока (вычислитель 20.008). Это имеет эффект увеличения интенсивности блоков с относительно низкой интенсивностью в сравнении с блоком с максимальной интенсивностью E. Применение этой процедуры до квантования имеет эффект формирования шума кодирования в нижней полосе частот.
Фиг.5b показывает примерный спектр, к которому применяется раскрытое предварительное формирование. Ось частоты нормализована между 0 и 1, где 1 - это частота Найквиста. Амплитудный спектр показан в дБ. На фиг.5b выделенная жирным линия - это амплитудный спектр до предварительного формирования, а не выделенная жирным линия - это модифицированный (предварительно сформированный) спектр. Следовательно, только спектр, соответствующий не выделенной жирным линии, модифицируется в этом примере. На фиг.5c показано фактическое усиление, применяемое к каждому спектральному компоненту посредством функции предварительного формирования. Из фиг.5c можно видеть, что усиление ограничено 10 и монотонно уменьшается до 1 по мере того, как достигает спектрального компонента с наивысшей интенсивностью (здесь третья гармоника спектра) при нормализованной частоте примерно 0,18.
Раздельное кратное пространственное векторное квантование - модуль 5.006
После введения низкочастотных предыскажений спектральные коэффициенты квантуются с помощью, в одном варианте осуществления, модуля 5.006 алгебраического квантования на основе кодов пространственной решетки. Используемые пространственные решетки - это 8-мерные пространственные решетки Госсета, что объясняет разделение спектральных коэффициентов на 8-мерные блоки. Индексы квантования - это, в сущности, глобальное усиление и последовательность индексов, описывающих фактические точки пространственной решетки, используемые для того, чтобы квантовать каждый 8-мерный субвектор в спектре. Модуль 5.006 пространственного квантования выполняет структурным способом поиск ближайшего соседа между каждым 8-мерным вектором масштабированного предварительно сформированного спектра из модуля 5.005 и точек в словаре кодов пространственной решетки, используемых для квантования. Коэффициент масштабирования (глобальное усиление) фактически определяет назначение бит и среднее искажение. Чем больше глобальное усиление, тем больше бит используется и тем меньше среднее искажение. Для каждого 8-мерного вектора спектральных коэффициентов модуль 5.006 пространственного квантования выводит индекс, который обозначает номер используемого словаря кодов пространственной решетки и фактическую точку пространственной решетки, выбранную в соответствующем словаре кодов пространственной решетки. В таком случае декодер имеет возможность восстановить квантованный спектр с помощью глобального усиления наряду с индексами, описывающими каждый 8-мерный вектор. Ниже описаны подробности этой процедуры.
После того, как спектр квантован, глобальное усиление из вывода модуля 5.009 вычисления усиления и квантования и индексы векторов пространственной решетки из вывода модуля 5.006 квантования могут быть переданы декодеру посредством мультиплексора (не показан).
Оптимизация глобального усиления и вычисление коэффициента шум-вставка
Нетривиальный этап в использовании пространственных векторных квантователей заключается в том, чтобы определять надлежащее назначение бит в рамках предварительно определенного бюджета бит. В отличие от сохраненных словарей кодов, где индекс словаря кодов - это, по сути, его позиция в таблице, индекс словаря кодов пространственной решетки вычисляется с помощью математической (алгебраической) формулы. Число бит, чтобы закодировать индекс пространственного вектора, таким образом, известно только после того, когда квантован входной вектор. В принципе, чтобы оставаться в рамках предварительно определенного бюджета битов, выполняется испытание нескольких глобальных усилений и квантование нормализованного спектра с помощью каждого различного усиления, чтобы вычислять общее число бит. Глобальное усиление, которого достигает назначение бит, ближайшее к предварительно определенному бюджету бит, без его превышения, должно быть выбрано в качестве оптимального усиления. В одном варианте осуществления вместо этого используется эвристический подход, чтобы избежать необходимости квантовать спектр несколько раз до получения оптимального квантования и назначения бит.
Для ясности ключевые символы, связанные с последующим описанием, собраны из табл.A-1.
Ссылаясь на фиг.5a, увидим, что взвешенный TCX-сигнал временной области x обрабатывается посредством преобразования T и предварительного формирования P, которое генерирует спектр X, который должен быть квантован. Преобразованием T может быть FFT, а предварительное формирование может соответствовать вышеописанному адаптивному введению низкочастотных предыскажений.
0
1
N-1
T
Приводится ссылка на вектор X как предварительно сформированный спектр. Предполагается, что этот вектор имеет форму X = [X, X ... X], где N - это число коэффициентов преобразования, полученных из преобразования T (предварительное формирование P не изменяет это число коэффициентов).
Обзор процедуры квантования предварительно сформированного спектра
x
В одном варианте осуществления предварительно сформированный спектр X квантуется, как показано на фиг.6. Квантование основано на устройстве [Ragot, 2002] при условии доступного бюджета бит в R бит для кодирования X. Как показано на фиг.6, X квантуется посредством раздельного векторного квантования "усиление-форма" за три основных этапа.
- Оцененное глобальное усиление g, называемое в дальнейшем глобальным усилением, вычисляется посредством модуля 6.001 оценки разделенной интенсивности и модуля 6.002 оценки глобального усиления и уровня шума, а делитель 6.003 нормализует спектр X посредством этого глобального усиления g, чтобы получить X'=X/g, где X' - это нормализованный предварительно сформированный спектр.
8
0
1
K-1
T
T
T
T
- Кратное раздельное пространственное векторное квантование по [Ragot, 2002] применяется посредством модуля 6.004 раздельного автомасштабируемого кратного кодирования RE ко всем 8-мерным блокам коэффициентов, формирующим спектр X', и результирующие параметры мультиплексируются. Чтобы иметь возможность применять эту схему квантования, спектр X' делится на K субвекторов идентичного размера, так что X = [X'  X' ... X' ], где k-тый субвектор (или разделение) задается как:
k
8k
8k+K-1
X' = [x' … x'], k = 0, 1, ..., K-1.
Поскольку устройство по [Ragot, 2002] фактически реализует форму 8-мерного векторного квантования, K просто присваивается значение 8. Предполагается, что N является кратным K.
1
- Усиление шумовой вставки fac вычисляется в модуле 6.002, чтобы в дальнейшем вставлять комфортный шум в неквантованные разделения спектра X'. Неквантованные разделения - это блоки коэффициентов, которым было присвоено значение нуль квантователем. Вставка шума позволяет маскировать помехи при низких скоростях передачи в битах и повышает качество звука. Одиночное усиление fac используется, поскольку кодирование TCX предполагает, что шум кодирования является плоским в целевом домене и формируется посредством обратного перцепционного фильтра W(z)'. Хотя здесь используется предварительное формирование, вставка квантования и шума основывается на одном принципе.
x
Как следствие, квантование спектра X, показанное на фиг.6, генерирует три типа параметров: глобальное усиление g, параметры (раздельного) алгебраического VQ и усиление шумовой вставки fac. Назначение бит, или бюджет бит R, разлагается следующим образом:
x
g
fac
R = R + R + R,
g
fac
fac
где R, R и R - это число бит (или бюджет бит), назначаемое усилению g, параметрам алгебраического VQ и усилению fac соответственно. В иллюстративном варианте осуществления R = 0.
Кратное пространственное векторное квантование по [Ragot, 2002] является автомасштабируемым и не позволяет непосредственно управлять назначением бит и искажением в каждом разделении. Это является причиной того, почему устройство по [Ragot, 2002] применяется к разделениям спектра X' вместо X. Оптимизация глобального усиления g поэтому управляет качеством режима TCX. В одном варианте осуществления оптимизация усиления g основана на логарифмической интенсивности разделений.
Далее каждый блок фиг.6 описывается отдельно.
Модуль 6.001 раздельной оценки интенсивности
Интенсивность (т.е. квадратная норма) раздельных векторов используется в алгоритме назначения бит и используется для определения глобального усиления, а также уровня шума. Вкратце напомним, что N-мерный входной вектор
0
1
N-1
k
8k
8k+1
8k+7
T
T
X = [x, x, ..., x] секционируется на K разделений, 8-мерных субвекторов, таким образом, чтобы k-тое разделение стало x = [x, x, ..., x]для k=0, 1, ..., K-1. Предполагается, что N кратно восьми. Интенсивность k-того раздельного вектора вычисляется следующим образом:
k
k
k
8k
8k+7
T
2
2
e = x  x = x  + … + x , k = 0, 1, ..., K-1.
Модуль 6.002 оценки глобального усиления и уровня шума
Глобальное усиление g контролирует непосредственно потребление бит разделениями и разрешается из R(g) ~ R, где R(g) - это число бит, используемое (или потребление бит) всем раздельным алгебраическим VQ для данного значения g. Как указано в вышеприведенном описании, R - это бюджет бит, назначаемых раздельному алгебраическому VQ. Как следствие, глобальное усиление g оптимизируется таким образом, чтобы соответствовать потреблению бит и бюджету бит алгебраического VQ. Базовый принцип известен в литературе как обратное создание избытка информации.
8
Чтобы уменьшить сложность квантования, фактическое потребление бит для каждого разделения не вычисляется, а только оценивается из интенсивности разделений. Эта информация об интенсивности вместе с априорным знанием кратного векторного квантования RE позволяет оценивать R(g) как простую функцию от g.
k
k
Глобальное усиление g определяется посредством применения этого базового принципа в модуле 6.002 оценки глобального усиления и уровня шума. Оценка потребления бит разделения X - это функция от глобального усиления g, и она обозначается как R(g). При единичном усилении g=1 эвристика дает
k
2
k
R(1) = 5 log (ε + e)/2, k =0, 1, ..., K-1
2
k
в качестве оценки потребления бит. Константа ε>0 предотвращает вычисление log0, и, например, используется значение ε=2. В общем, константа ε пренебрежительно мала по сравнению с интенсивностью разделения e.
k
8
Формула R(1) основана на априорном знании кратного квантователя по [Ragot, 2002] и свойств базовой пространственной решетки RE:
k
k
2
k
- Для номера словаря кодов n>1 требование по бюджету бит для кодирования k-того разделения составляет не более 5n, что может быть подтверждено табл. 1. Это дает коэффициент 5 в формуле, когда log (ε+ e)/2 является оценкой номера словаря кодов.
2
nk
nk+1
- Логарифм log отражает то свойство, что средняя квадратная норма кодовых векторов приблизительно удваивается при использовании Q вместо Q. Свойство может быть получено из табл. 4.
k
2
2
2
2
2
- Коэффициент 1/2, применяемый к ε+e, точно определяет оценку номера словаря кодов Q. Известно, что средняя квадратная норма точек пространственной решетки в данном конкретном словаре кодов составляет порядка 8,0 (см. табл. 4). Поскольку log(ε + e)/2 = log (2 + 8,0)/2 = 2, оценка номера словаря кодов действительно является корректной для Q.
Таблица 4Определенная статистика по квадратным нормам точек пространственной решетки в различных словарях кодов
n
Средняя норма
0
0
2
8,50
3
20,09
4
42,23
5
93,85
6
182,49
7
362,74
k
k
k
2
2
2
2
Когда глобальное усиление g применяется к разделению, интенсивность x/g получается посредством деления e на g. Это подразумевает, что потребление бит масштабированного по усилению разделения может быть оценено на основе R(1) посредством вычитания 5 logg = 10 log g из этого:
2
k
2
Rk(g) = 5log(ε +e) / 2g
2
k
2
2
= 5log(ε +e) / 2 + 5logg
k
log
= R(1)- g (4),
log
2
k
где g= 10 log g. Оценка R(g) имеет нижнюю границу в нуль, поэтому отношение
k
k
log
R(g) = max{R(1)-g, 0} (5)
используется на практике.
Потребление бит для кодирования всех разделений AC теперь является просто суммой отдельных разделений:
0
1
k-1
R(g) = R(g) + R(g) + ... + R(g). (6)
Нелинейность уравнения (6) предотвращает аналитический процесс решения глобального усиления g, что приводит к потреблению бит, соответствующему данному бюджету бит R(g) = R. Тем не менее решение может быть найдено просто с помощью итеративного алгоритма, поскольку R(g) является монотонной функцией g.
log
2
log
log
log
log
log
iter
glog/10
В одном варианте осуществления глобальное усиление g эффективно находится посредством применения двоичного поиска к g = 10 log g, начиная со значения g = 128. В каждой итерации iter R(g) оценивается с помощью уравнений (4), (5) и (6), и g соответственно корректируется как g = g ± 128/2. Десять итераций обеспечивают достаточную точность. Глобальное усиление затем может быть разрешено из g как g = 2.
k
k
log
Блок-схема последовательности операций способа фиг.7 описывает алгоритм двоичного поиска, используемый для определения глобального усиления g. Алгоритм предоставляет также уровень шума как побочное произведение. Алгоритм начинается посредством корректировки бюджета бит R в операции 7.001 к значению 0,95(R-K). Эта корректировка определена экспериментально, чтобы не допустить переоценки оптимального глобального усиления g. Алгоритм двоичного поиска требует в качестве первоначального значения оценки потребления бит R(1) для k = 0, 1, ..., K-1, при условии единичного глобального усиления. Эти оценки вычисляются с помощью уравнения (4) в операции 7.002, причем сначала получаются квадратные нормы разделений e. Алгоритм начинается с начальных значений iter = 0, g = 0
iter
и fac= 128/2 = 128, заданных в операции 7.004.
log
log
log
log
log
ns
log
glog/10
Если iter<10 (операция 7.004), каждый критерий в алгоритме двоичного поиска содержит увеличение g = g + fac в операции 7.005 и оценку потребления бит R(g) в операциях 7.006 и 7.007 с новым значением g. Если оценка R(g) превышает бюджет бит R в операции 7.008, g обновляется в операции 7.009. Итерация завершается посредством увеличения счетчика iter и деления пополам размера шага fac в операции 7.010. После десяти итераций достаточная точность для g получается, и глобальное усиление может быть разрешено g = 2 в операции 7.011. Уровень шума g оценивается в операции 7.012 посредством усреднения оценок потребления бит теми разделениями, которые, возможно, являются неквантованными слева при определенном глобальном усилении g.
log
k
log
ns
k
log
k
log
ns
ns
Фиг.8 показывает операции, участвующие в определении уровня шума fac. Уровень шума вычисляется как квадратный корень средней интенсивности разделений, которые, возможно, являются неквантованными слева. Для данного глобального усиления g вероятно, что разделение будет неквантованным, если оцененное потребление бит меньше 5 бит, т.е. если R(1)-g<5. Общее потребление бит всех этих разделений, R(g), получается посредством вычисления R(1)-g для разделений, в которых R(1)-g<5. Средняя интенсивность этих разделений затем может быть вычислена в логарифмической области из R(g) как R(g)/nb, где nb - это число этих разделений. Уровень шума равен:
Rns(g)/nb-5
fac = 2 .
В этом уравнении константа -5 в экспоненте - это коэффициент настройки, который корректирует коэффициент шума на 3 дБ (в интенсивности) ниже реальной оценки на основе средней интенсивности.
Модуль 5.004 кратного пространственного векторного квантования
8
0
2
3
1
n
n
8
n
8
n
4n
Модуль 6.004 квантования - это средство кратного квантования, раскрытое и описанное в [Ragot, 2002]. 8-мерные разделения нормализованного спектра X' кодируются с помощью кратного квантования, которое использует набор словарей кодов RE, обозначенный как {Q, Q, Q, ...}. Словарь кодов Qне задается в наборе, чтобы повысить эффективность кодирования. N-ный словарь кодов обозначается Q, где n упоминается как номер словаря кодов. Все словари кодов Q составляются как поднаборы одной 8-мерной пространственной решетки RE, Q х RE. Скорость передачи в битах n-ного словаря кодов, заданная как биты на размерность, составляет 4n/8, т.е. каждый словарь кодов Q содержит 2 кодовых векторов. Кратный квантователь составляется в соответствии с идеей [Ragot, 2002].
k
k
8
Для k-того 8-мерного разделения X' модуль 6.004 кодирования находит ближайшего соседа Y в пространственной решетке RE и выводит:
k
k
nk
- наименьший номер словаря кодов n таким образом, чтобы Y ∈ Q; и
k
k
nk
- индекс i Y в Q.
k
k
k
k
k
k
Номер словаря кодов n - это дополнительная информация, которая должна быть сделана доступной декодеру вместе с индексом i, чтобы восстановить кодовый вектор Y. Например, размер индекса i - это An бит для n>1. Этот индекс может быть представлен с помощью 4-битных блоков.
k
k
k
Для n=0 восстановлением y становится 8-мерный нулевой вектор и i не требуется.
Модуль 6.005 обработки переполнения бюджета бит и индексирования разделений
x
0
1
K-1
k
nk
Для данного глобального усиления g фактическое потребление бит может либо превышать, либо оставаться в рамках бюджета бит. Возможное переполнение бюджета бит не разрешается какими-либо специальными средствами, но доступные лишние биты обнуляются и остаются неиспользованными. Когда происходит переполнение бюджета бит, потребление бит подгоняется под бюджет бит R в модуле 6.005 посредством обнуления некоторых номеров словарей кодов n, n, …, n. Обнуление номера словаря кодов n>0 уменьшает общее потребление бит, по меньшей мере, на 5-1 бит. Разделения, обнуленные при обработке переполнения бюджета бит, восстанавливаются в декодере посредством шумовой вставки.
k
k
k
T
Чтобы минимизировать искажение кодирования, которое возникает, когда номера словарей кодов некоторых разделений принудительно обнуляются, эти разделения должны выбираться разумно. В одном варианте осуществления потребление бит накапливается посредством обработки разделений по одному в порядке убывания интенсивности e = x x для k = 0, 1, ..., K-1. Эта процедура зависит от сигнала и согласуется со средством, используемым ранее при определении глобального усиления.
k
k
k
k
k
Перед изучением подробностей обработки переполнения в модуле 6.005 будет обобщена структура кода для представления вывода кратных квантователей. Единичный код n>0 содержит k-1, после которых следует нулевой стоповый бит. Как показано в табл. 1, 5n-1 требуется, чтобы закодировать индекс i и номер словаря кодов n, исключая стоповый бит. Номер словаря кодов n=0 содержит только стоповый бит, указывающий нулевое разделение. Когда кодируется K разделений, только K-1 стоповых бит требуется, поскольку последний неявно определяется посредством бюджета бит R и, таким образом, является избыточным. Более конкретно, когда k последних разделений равно нулю, только k-1 стоповых бит достаточно, поскольку последние нулевые разделения могут быть закодированы посредством знания бюджета бит Ft.
к(0)
к(1)
к(K-1)
к(k)
Работа модуля 6.005 обработки переполнения бюджета бит фиг.6 изображена на блок-схеме последовательности операций способа фиг.9. Этот модуль 6.005 работает с индексами разделений к(0), к(1), ..., к(K-1), определяемыми в операции 9.001 посредством сортировки квадратных норм разделений в порядке убывания, так чтобы е, е, ..., е. Таким образом, индекс к(k) ссылается на разделение х, которое имеет k-тую наиболее большую квадратную норму. Квадратные нормы разделений предоставляются для обработки переполнения как вывод операции 9.001.
к(k)
8
к(k)
к(k)
K-тая итерация обработки переполнения может быть легко пропущена, когда n=0, посредством перехода непосредственно к следующей итерации, поскольку нулевые разделения не могут приводить к переполнению. Эта функциональность реализуется с помощью логической операции 9.005. Если k<K (операция 9.003), и при условии, что к(k)-тое разделение является ненулевым разделением, точка REy сначала индексируется при помощи операции 9.004. Кратное индексирование обеспечивает точное значение номера словаря кодов nи индекса кодового вектора
к(k)
i. Потребление бит разделений вплоть до и включая текущее к(k)-тое разделение может быть вычислено.
k
D,k
S,k
Используя свойства единичного кода, потребление бит R вплоть до и включая текущее разделение подсчитывается в операции 9.008 как сумма двух членов: R бит, необходимых для данных, исключая стоповые бит, и R стоповых бит:
k
D,k
S,k
R = R + R, (7)
к(k)
где для n > 0
D,k
D,k-1
к(k)
R = R+ 5n - 1, (8)
S,k
S,k-1
R = max{к(k), R}. (9)
Требуемые начальные значения задаются равными нулю в операции 9.002. Стоповые биты подсчитываются в операции 9.007 из уравнения (9) с учетом того, что только разделения вплоть до последнего ненулевого разделения указываются стоповыми битами, поскольку известно, что последующие разделения являются нулевыми, вследствие структуры кода. Индекс последнего ненулевого разделения также может быть выражен как max{к(0), к(k), ..., к(k)}.
D,k
S,k
S,k-1
D,k-1
k
к(k)
к(k)
S,k
D,k
Поскольку обработка переполнения начинается с нулевых начальных значений для Rи Rв уравнениях (8) и (9), потребление бит вплоть до текущего разделения всегда вписывается в бюджет бит, R+R<R. Если потребление бит R, включая текущее к(k)-тое разделение, превышает бюджет бит R, проверенный в логической операции 9.008, номер словаря кодов n и восстановление y обнуляются на этапе 9.009. Счетчики потребления бит R и R, следовательно, обновляются и возвращаются до предыдущих значений на этапе 9.010. После этого обработка переполнения может переходить к следующей итерации посредством увеличения k на 1 в операции 9.011 и возврата к логической операции 9.003.
Следует обратить внимание на то, что операция 9.004 генерирует индексирование разделений как неотъемлемую часть процедур обработки переполнения. Индексирование может быть сохранено и предоставлено дополнительно мультиплексору 6.007 потоков бит по фиг.6.
Модуль 5.007 обратного формирования квантованного спектра
После того, как спектр квантуется с помощью модуля 5.006 раздельного кратного пространственного VQ, индексы квантования (номера словарей кодов и индексы точек пространственной решетки) могут быть вычислены и отправлены в канал посредством мультиплексора (не показан). Поиск ближайшего соседа в пространственной решетке и вычисление индекса выполняются в соответствии с [Ragot, 2002]. После этого TCX-кодер выполняет обратное формирование спектра в модуле 5.007 таким образом, чтобы инвертировать предварительное формирование модуля 5.005.
Обратное формирование спектра работает только с использованием квантованного спектра. Чтобы получить процесс, который инвертирует работу модуля 5.005, модуль 5.007 применяет следующие этапы:
max
- вычисление позиции i и интенсивности E 8-мерного блока с наивысшей интенсивностью в первой четверти (низкие частоты) спектра;
m
- вычисление интенсивности E 8-мерного блока с индексом m позиции;
m
max
m
- вычисление соотношения R = E/ E;
m
m
- если R>10, то задать R=10;
m
(m-1)
m
(m-1)
- также, если R>R, то R=R;
m
1/2
- вычисление значения (R).
m
max
m
m
После вычисления соотношения R=E/E для всех блоков с индексом позиции меньше i мультипликативная инверсия этого соотношения затем применяется в качестве усиления для каждого соответствующего блока. Различия с предварительным формированием в модуле 5.005 следующие: (a) при обратном формировании в модуле 5.007 вычисляется квадратный корень (а не степень 1/4) соотношения R, и nd (b) это соотношение берется как делитель (а не множитель) соответствующего 8-мерного блока. Если эффект квантования в модуле 5.006 пренебрежительно мал (идеальное квантование), можно показать, что вывод модуля 5.007 точно равен входу модуля 5.005. Процесс предварительного формирования, таким образом, является обратимым процессом.
HF-кодирование
Работа модуля 1.003 HF-кодирования фиг.1 проиллюстрирована на фиг.10a. Как показано в предшествующем описании со ссылкой на фиг.1, HF-сигнал состоит из частотных компонентов входного сигнала выше 6400 Гц. Полоса пропускания этого HF-сигнала зависит от частоты дискретизации входного сигнала. Чтобы закодировать HF-сигнал с низкой частотой, схема расширения полосы пропускания (BWE) используется в одном варианте осуществления. В BWE информация об интенсивности отправляется декодеру в форме огибающей спектра и интенсивности кадров, но точная структура сигнала экстраполируется в декодере из принимаемого (декодированного) сигнала возбуждения из LF-сигнала, который согласно одному варианту осуществления кодируется в модуле 1.002 переключаемого кодирования ACELP/TCX.
HF
HF
HF
Дискретизированный с понижением частоты HF-сигнал на выходе препроцессора и аналитической гребенки фильтров 1.001 называется s(n) на фиг.10a. Спектр этого сигнала можно рассматривать как свернутую версию полосы верхних частот до дискретизации с понижением частоты. LPC-анализ, описанный выше со ссылкой на фиг.18, выполняется в модулях 10.020-10.022 для сигнала s(n), чтобы получить набор LPC-коэффициентов, которые моделируют огибающую спектра этого сигнала. Типично требуется меньше параметров, чем для LF-сигнала. В одном варианте осуществления используется фильтр порядка 8. LPC-коэффициенты A(z) после этого преобразуются в ISP-области в модуле 10.023, затем преобразуются из ISP-области в ISF-область в модуле 10.004 и квантуются в модуле 10.003 для передачи посредством мультиплексора 10.029. Номер LPC-анализа в 80-миллисекундном суперкадре зависит от длины кадров в суперкадре. Квантованные ISF-коэффициенты преобразуются обратно к ISP-коэффициентам в модуле 10.004 и затем интерполируются (можно вкратце описать способ интерполяции) в модуле 10.005 до преобразования в квантованные LPC-коэффициенты A(z) модулем 10.006.
HF
HF
Набор коэффициентов LPC-фильтра может быть представлен как полином в переменной z. Кроме того, A(z) - это LPC-фильтр для LF-сигнала, а A(z) - это LPC-фильтр для HF-сигнала. Квантованные версии этих двух фильтров - это соответственно  и  Из LF-сигнала s(n) фиг.10 сначала получается остаточный сигнал посредством фильтрации s(n) с помощью остаточного фильтра (z), идентифицированного посредством ссылки 10.014. Затем этот остаточный сигнал фильтруется посредством фильтра HF-синтеза 1/(z), идентифицированного посредством ссылки 10.015. Вплоть до коэффициента усиления это генерирует синтезированную версию HF-сигнала, но в спектрально свернутой версии. Фактический сигнал HF-синтеза восстанавливается после того, как применена дискретизация с повышением частоты.
HF
HF
Поскольку возбуждение восстанавливается из LF-сигнала, надлежащее усиление вычисляется для HF-сигнала. Это осуществляется посредством сравнения интенсивности опорного HF-сигнала s(n) с интенсивностью синтезированного HF-сигнала. Интенсивность вычисляется каждый 5-миллисекундный субкадр, при этом совпадение интенсивности обеспечивается на границе поддиапазона 6400 Гц. Конкретно, синтезированный HF-сигнал и опорный HF-сигнал фильтруются посредством перцепционного фильтра (модули 10.011-10.012 и 10.024-10.025). В варианте осуществления фиг.10 этот перцепционный фильтр извлекается из A(Z) и называется "перцепционным HF-фильтром". Интенсивность этих двух фильтрованных сигналов вычисляется каждые 5 мс в модулях 10.013 и 10.026, соответственно, соотношение между интенсивностями, вычисленное посредством модулей 10.125 и 10.126, вычисляется делителем 10.027 и выражается в дБ в модуле 10.016. Предусмотрено четыре таких усиления в 20-миллисекундном кадре (одно для каждого 5-миллисекундного субкадра). Данный вектор из 4 усилений представляет усиление, которое должно быть применено к HF-сигналу, чтобы надлежащим образом согласовать интенсивность HF-сигнала.
HF
0
nb-1
Вместо передачи этого усиления непосредственно сначала вычисляется оцененное соотношение усиления посредством сравнения усилений фильтров (z) из нижней полосы частот и (Z) из верхней полосы частот. Эта оценка соотношения усиления подробно проиллюстрирована на фиг.10b и описывается далее. Оценка соотношения усиления интерполируется каждые 5 мс, выражается в дБ и вычитается в модуле 10.010 из измеренного соотношения усиления. Результирующие разности усиления, или корректировки усиления, обозначенные как g-g на фиг.10, квантуются в модуле 10.009. Корректировки усиления могут быть квантованы как 4-мерные векторы, т.е. 4 значения на 20-миллисекундный кадр, и затем предоставлены в мультиплексор 10.029 для передачи.
HF
Оценка усиления, вычисленная в модуле 10.007 из фильтров  и  описана на фиг.10b. Эти два фильтра доступны в декодере. Первые 64 выборки затухающей синусоиды на частоте Найквиста π радиан на выборку сначала вычисляются посредством фильтрации единичного импульса δ(n) с помощью однополюсного фильтра 10.017. Частота Найквиста используется, поскольку ее цель - сопоставить усиления фильтров на примерно 6400 Гц, т.е. на частоте объединения между LF- и HF-сигналами. При этом длины в 64 выборки этого опорного сигнала - это длина субкадра (5 мс). Затухающая синусоида h(n) затем фильтруется сначала посредством фильтра (z) 10.018, чтобы получить низкочастотный остаток, затем посредством фильтра 1/(Z) 10.019, чтобы получить синтезирующий сигнал из фильтра HF-синтеза. Если фильтры  и  имеют идентичные усиления при нормализованной частоте в π радиан на выборку, интенсивность вывода x(n) фильтра 10.019 должна быть эквивалентная интенсивности входа h(n) фильтра 10.018 (затухающей синусоиде). Если усиления отличаются, то эта разница усилений учитывается в интенсивности сигнала x(n) на выходе фильтра 10.019. Корректирующее усиление должно фактически возрастать по мере того, как интенсивность сигнала x(n) уменьшается. Следовательно, корректировка усиления вычисляется в модуле 10.028 как мультипликативная инверсия интенсивности сигнала x(n) в логарифмической области (т.е. в дБ). Чтобы получить истинное соотношение интенсивности, интенсивность затухающей синусоиды h(n), в дБ, должна быть удалена из выхода модуля 10.028. Тем не менее, поскольку это смещение интенсивности постоянно, его просто следует учесть в кодере корректировки усиления модуля 10.009. Наконец, усиление из модуля 10.007 интерполируется и выражается в дБ до вычитания модулем 10.010.
В декодере усиление HF-сигнала может быть восстановлено посредством прибавления выхода устройства 1.003 HF-кодирования, известного в декодере, к декодированным корректировкам усиления, закодированным в модуле 11.009.
Подробное описание декодера
Роль декодера заключается в том, чтобы считывать закодированные параметры из потока бит и синтезировать восстановленный звуковой суперкадр. Высокоуровневая блок-схема декодера показана на фиг.11.
0
1
2
3
k
k
Как указано в предшествующем описании, каждый 80-миллисекундный суперкадр кодируется в четырех (4) последовательных двоичных пакетах одинакового размера. Эти четыре (4) пакета формируют вход декодера. Поскольку все пакеты могут не быть доступны вследствие стираний каналов, основной демультиплексор 11.001 также принимает в качестве входа четыре (4) индикатора некорректных кадров BFI=(bfi, bfi, bfi, bfi), которые указывают, какие из четырех пакетов приняты. Здесь предполагается, что bfi=0, когда k-тый пакет принят, и bfi=1, когда k-тый пакет потерян. Размер четырех (4) пакетов указывается демультиплексору 11.001 посредством ввода bit_rate_flag, указывающего скорость передачи в битах, используемую кодером.
Основное демультиплексирование
k
Демультиплексор 11.001 просто выполняет обратную операцию относительно мультиплексора кодера. Биты, связанные с закодированными параметрами в пакете k, извлекаются, когда пакет k доступен, т.е. когда bfi=0.
Как указано в описании выше, закодированные параметры делятся на три (3) категории: индикаторы режима, LF-параметры и HF-параметры. Индикаторы режима задают то, какой режим кодирования использован в кодере (ACELP, TCX20, TCX40 или TCX80). После того как основной демультиплексор 11.001 восстановил эти параметры, они декодируются посредством модуля 11.002 экстраполяции режима, декодера ACELP/TCX 11.003 и HF-декодера 11.004 соответственно. Это декодирование приводит к 2 сигналам, LF-сигналу синтеза и HF-сигналу синтеза, которые объединяются, чтобы сформировать вывод звука гребенки фильтров 11.005 постобработки и синтеза. Предполагается, что входной признак FS указывает декодеру, что является выходной частотой дискретизации. В одном варианте осуществления допустимые частоты дискретизации составляют 16 кГц и выше.
Модули с фиг.11 описываются далее.
ACELP/TCX-декодер 11.003 LF-сигнала
Декодирование LF-сигнала влечет за собой, по сути, декодирование ACELP/TCX. Эта процедура показана на фиг.12. Демультиплексор 12.001 ACELP/TCX извлекает закодированные LF-параметры на основе значений режима. Более конкретно, LF-параметры разделяются на ISF-параметры, с одной стороны, и конкретные для ACELP или TCX параметры, с другой стороны.
Декодирование LF-параметров управляется основным блоком 12.002 управления декодированием ACELP/TCX. В частности, этот основной блок 12.002 управления декодированием ACELP/TCX отправляет управляющие сигналы модулю 12.003 ISF-декодирования, модулю 12.005 SP-интерполяции, а также ACELP- и TCX-декодерам 12.007 и 12.008. Основной блок 12.002 управления декодированием ACELP/TCX также обрабатывает переключение между ACELP-декодером 12.007 и TCX-декодером 12.008 посредством задания надлежащих входов в эти два декодера и активации селектора переключения 12.009. Основной блок 12.002 управления декодированием ACELP/TCX дополнительно управляет буфером 12.010 LF-сигнала, так чтобы декодированные ACELP- или TCX-кадры записывались в нужные сегменты времени 80-миллисекундного выходного буфера.
TCX
Основной блок 12.002 управления декодированием ACELP/TCX генерирует управляющие данные, которые являются внутренними для LF-декодера: BFI_ISF, nb (число субкадров для ISP-интерполяции), bfi_acelp, L (длина TCX-кадра), BFI_TCX, switch_flag и frame_selector (чтобы задать указатель кадра на выходной LF-буфер 12.010). Характер этих данных следующий:
- BFI_ISF может быть расширен как двумерный целочисленный вектор
1st_stage
2nd_stage
1st_stage
1st_stage
1st_stage
2nd_stage
2nd_stage
1st_split
2nd_split
3rd_split
4th_split
5th_split
BFI_ISF = (bfibfi) и состоит из индикаторов некорректных кадров для ISF-декодирования. Значение bfi является двоичным, а bfi=0, когда доступна первая стадия ISF, bfi=1, когда она потеряна. Значение 0≤bfi≤31 - это 5-битный флаг, предоставляющий индикатор некорректных кадров для каждого из 5 разделений второй стадии ISF: bfi=bfi+2*bfi+4*bfi+8*bfi+16*bfi,
kth_split
1st_stage
2nd_stage
0,
1
2
3
где bfi=0, когда разделение k доступно, и равно 1 в противном случае. С помощью вышеописанного формата потоков бит значения bfi и bfi могут быть вычислены из BFI=(bfi bfi, bfi, bfi) следующим образом:
k
- для ACELP или TCX20 в пакете k, BFI_ISF=(bfi),
k
k+1
- для TCX40 в пакетах k и k+1, BFI_ISF=(bfi (31*bfi)),
0
1
2
3
- для TCX80 в пакетах k=0-3, BFI_ISF=(bfi (bfi+ 6*bfi + 20*bfi)).
Эти значения BFI_ISF могут быть описаны непосредственно посредством формата потока бит, используемого, чтобы упаковывать биты ISF-квантования, а также того, как стадии и разделения распределяются в одном или нескольких пакетах в зависимости от типа кодера (ACELP/TCX20, TCX40 или TCX80).
- Число субкадров для ISF-интерполяции ссылается на число 5-миллисекундных субкадров в декодированном ACELP- или TCX-кадре. Таким образом, nb=4 для ACELP и TCX20, 8 для TCX40 и 16 для TCX80.
k
- bfi_acelp - это двоичный признак, показывающий потерю пакета ACELP. Он просто задается как bfi_acelp=bfi для ACELP-кадра в пакете k.
TCX
- Длина TCX-кадра (в выборках) задается посредством L=256 (20 мс) для TCX20, 512 (40 мс) для TCX40 и 1024 (80 мс) для TCX80. Это не учитывает перекрытие, используемое в TCX, чтобы уменьшать блокирующие эффекты.
k
k
k+1
- BFI_TCX - это двоичный вектор, используемый для того, чтобы сигнализировать о потерях пакетов TCX-декодеру: BFI_TCX=(bfi) для TCX20 в пакете k, (bfi bfi) для TCX40 в пакетах k и k+1 и BFI_TCX=BFI для TCX80.
wsyn
Другие данные, сгенерированные основным блоком 12.002 управления декодированием ACELP/TCX, не требуют пояснений. Селектор переключения 12.009 управляется в соответствии с типом декодированного кадра (ACELP или TCX). Данные frame_selector позволяют выполнять запись декодированных кадров (ACELP или TCX20, TCX40 или TCX80) в правильные 20-миллисекундные сегменты суперкадра. На фиг.12 также отображаются некоторые вспомогательные данные, такие как ACELP_ZIR и rms. Эти данные задаются в последующих параграфах.
1st_stage
2nd_stage
1st_stage
1st_stage
Модуль 12.003 ISF-декодирования соответствует ISF-декодеру, заданному в стандарте кодирования речи AMR-WB, с теми же таблицами MA-предсказания и квантования, за исключением обработки некорректных кадров. Разница в сравнении с устройством AMR-WB - это использование BFI_ISF=(bfi bfi) вместо одиночного двоичного индикатора некорректных кадров. Когда первая стадия ISF-квантователя потеряна (т.е. bfi=1), ISF-параметры просто декодируются с помощью маскировки стирания кадров ISF-декодера AMR-WB. Когда первая стадия доступна (т.е. bfi=0), эта первая стадия декодируется. Раздельные векторы второй стадии накапливаются в декодированной первой стадии только в том случае, если они доступны. Восстановленный ISF-остаток добавляется в среднему вектору MA-предсказания и ISF, чтобы сформировать восстановленные ISF-параметры.
Преобразователь 12.004 преобразует ISF-параметры (заданные в частотной области) в ISP-параметры (в косинусной области). Эта операция взята из кодирования речи AMR-WB.
Модуль 12.005 ISP-интерполяции реализует простую линейную интерполяцию между ISP-параметрами предыдущего декодированного кадра (ACELP/TCX20, TCX40 или TCX80) и декодированными ISP-параметрами. Интерполяция выполняется в ISP-области и приводит к ISP-параметрам для каждого 5-миллисекундного субкадра согласно формуле:
subframe-i
new
old
isp = i/nb * isp + (1-i/nb) * isp,
old
new
где nb - это число субкадров в текущем декодированном кадре (nb=4 для ACELP и TCX20, 8 для TCX40, 16 для TCX80), i=0, ..., nb-1 - это индекс субкадра, isp - это набор ISP-параметров, полученных из декодированных ISF-параметров предыдущего декодированного кадра (ACELP, TCX20/40/80), а isp - это набор ISP-параметров, полученных из ISF-параметров, декодированных в декодере 12.003. Интерполированные ISP-параметры затем преобразуются в линейные предиктивные коэффициенты для каждого субкадра в преобразователе 12.006.
ACELP- и TCX-декодеры 12.007 и 12.008 описываются по отдельности в завершение общего описания декодирования ACELP/TCX.
Переключение ACELP/TCX
Описание фиг.12 в форме блок-схемы завершается посредством блок-схемы последовательности операций способа по фиг.13, которая точно задает то, как выполняется переключение между ACELP и TCX на основе индикаторов режима суперкадров в MODE. Следовательно, фиг.13 описывает то, как используются модули 12.003-12.006 фиг.12.
Один из ключевых аспектов декодирования ACELP/TCX - это обработка перекрытия от последнего декодированного кадра, чтобы обеспечить прозрачное переключение между ACELP и TCX, а также между TCX-кадрами. Фиг.13 подробно представляет этот ключевой признак для декодирования.
Перекрытие состоит из одного 10-миллисекундного буфера: OVLP_TCX. Когда последний декодированный кадр - это ACELP-кадр, OVLP_TCX=ACELP_ZIR запоминает отклик при отсутствии импульса (ZIR) фильтра LP-синтеза (1/A(z)) во взвешенной области предыдущего ACELP-кадра. Когда последний декодированный кадр - это TCX-кадр, только первые 2,5 мс (32 выборки) для TCX20, 5 мс (64 выборки) для TCX40 и 10 мс (128 выборок) для TCX80 используются в OVLP_TCX (другим выборкам присваивается значение нуль).
Как проиллюстрировано на фиг.13, декодирование ACELP/TCX основывается на последовательной интерполяции индикаторов режима в MODE. Номер пакета и индекс k декодированного кадра увеличивается с 0 до 3. Цикл, реализуемый операциями 13.002, 13.003 и 13.021-13.023, позволяет последовательно обрабатывать четыре (4) пакета 80-миллисекундного суперкадра. Описание операций 13.005, 13.006 и 13.009-13.011 опущено, поскольку они реализуют вышеописанное ISF-декодирование, преобразование ISF-ISP, ISP-интерполяцию и преобразование ISP-A(z).
k
При ACELP-декодировании (т.е. когда m=0, как распознано в операции 13.012) буфер ACELP_ZIR обновляется, и длина ovp_len перекрытия TCX задается равной 0 (операции 13.013 и 16.017). Фактическое вычисление ACELP_ZIR описывается в следующем параграфе, касающемся ACELP-декодирования.
При TCX-декодировании буфер OVLP_TCX обновляется (операции 13.014-13.016), и фактическая длина ovp_len перекрытия TCX задается равной числу выборок, эквивалентному 2,5, 5 и 10 мс для TCX20, TCX40 и TCX80 соответственно (операции 13.018-13.020). Фактическое вычисление http://OVL.P_.TCX описывается в следующем параграфе, касающемся TCX-декодирования.
p
0
1
15
0
1
15
p
4k
4k+1
4k+3
4k
4k+1
4k+3
Декодер ACELP/TCX также вычисляет два параметра для последующей пост-фильтрации основного тона LF-синтеза: усиления основного тона g = (g, g, ..., g) и запаздывания основного тона T = (T, T, ...., T) для каждого 5-миллисекундного субкадра 80-миллисекундного суперкадра. Эти параметры инициализируются в процессоре 13.001. Для каждого нового суперкадра усиления основного тона задаются по умолчанию равными g=0 для k=0, ..., 15, тогда как запаздывания основного тона инициализируются равными 64 (т.е. 5 мс). Эти векторы модифицируются только посредством ACELP в операции 13.013: если ACELP задан в пакете k, g, g, ..., g соответствуют усилениям основного тока в каждом декодированном ACELP-субкадре, тогда как T, T, ..., T- это запаздывания основного тона.
ACELP-декодирование
ACELP-декодер, представленный на фиг.14, извлекается из алгоритма кодирования речи AMR-WB [Bessette et al, 2002]. Новые или модифицированные блоки в сравнении с ACELP-декодером AMR-WB выделены (посредством затенения этих блоков) на фиг.14.
На первом этапе конкретный для ACELP параметр демультиплексируется посредством демультиплексора 14.001.
p
c
p
c
p
c
p
c
По-прежнему ссылаясь на фиг.14, увидим, что ACELP-декодирование состоит из восстановления сигнала возбуждения r(n) как линейной комбинации g p(n)+g c(n), где g и g - это соответственно усиление основного тона и усиление фиксированного словаря кодов, T - это запаздывание основного тона, p(n) - это вклад основного тона, извлеченный из адаптивного словаря кодов 14.005 посредством фильтра 14.006 основного тона, а c(n) - это подвергшийся постобработке кодовый вектор нового словаря кодов 14.009, полученного из индексов нового словаря кодов ACELP, декодированных посредством декодера 14.008 и обработанных посредством модулей 14.012 и 14.013; p(n) умножается на усиление g в умножителе 14.007, c(n) умножается на усиление g в умножителе 14.014, а произведения g p(n) и g c(n) суммируются в модуле 14.015 сумматора. Когда запаздывание основного тона T является дробным, p(n) влечет за собой интерполяцию в адаптивном словаре 14.005 кодов. Затем восстановленное возбуждение передается посредством фильтра синтеза 1/В(z) 14.016, чтобы получить синтез s(n). Эта обработка выполняется на основе субкадров для интерполированных LP-коэффициентов, а синтез обрабатывается посредством выходного буфера 14.017. Весь процесс ACELP-декодирования управляется основным блоком 14.002 ACELP-декодирования. Стирания пакетов (указываемые bfi_acelp=1) обрабатываются посредством селектора переключения 14.011, переключающего с нового словаря кодов 14.009 к произвольному новому словарю кодов 14.010, экстраполирующему параметры основного тона и усиления из их прошлых значений в декодерах 14.003 и 14.004 усиления и основывающемуся на экстраполированных LP-коэффициентах.
Изменения в сравнении с ACELP-декодером AMR-WB касаются декодера 14.003 усиления, вычисления отклика при отсутствии импульса (ZIR) для 1/В(z) во взвешенной области в модулях 14.018-14.020 и обновления значения rms взвешенного синтеза
wsyn
(rms) в модулях 14.021 и 14.022. Декодирование усиления уже раскрыто, когда bfi_acelp=0 или 1. Оно основано на параметре средней интенсивности, так чтобы применять VQ с удалением среднего значения.
При этом ZIR 1/В(z) вычисляется во взвешенной области для переключения от ACELP-кадра к TCX-кадру, при этом не допуская блокирующих эффектов. Связанная обработка распадается на три (3) этапа, и ее результат сохраняется в 10-миллисекундном буфере, обозначенном ACELP_ZIR:
1) вычислитель вычисляет 10-миллисекундный ZIR 1/В(z), где LP-коэффициенты берутся из последнего ACELP-субкадра (модуль 14.018);
2) фильтр перцепционно взвешивает ZIR (модуль 14.019),
3) ACELP_ZIR обнаруживается после применения гибридного плоскотреугольного оконного кодирования (посредством генератора окон) к 10-миллисекундному взвешенному ZIR в модуле 14.020. Этот этап использует 10-миллисекундное окно w(n), заданное ниже:
w(n) = 1, если n=0, ..., 63,
w(n)=(128-n)/64, если n=64, ..., 127.
Следует отметить, что модуль 14.020 всегда обновляет OVLP_TCX как OVLP_TCX=ACELP_ZIR.
wsyn
w
Параметр rms обновляется в ACELP-декодере, поскольку он используется в TCX-декодере для маскировки стирания пакетов. Его обновление в декодированных ACELP-кадрах состоит из вычисления на субкадр взвешенного ACELP-синтеза s(n) с помощью фильтра 14.021 перцепционного взвешивания и вычисления в модуле 14.022:
где L=256 (20 мс) - это длина ACELP-кадра.
TCX-декодирование
Один вариант осуществления TCX-декодера показан на фиг.15. Селектор переключения 15.017 используется, чтобы обрабатывать два различных варианта декодирования:
Случай 1: Маскировка стирания пакетов в TCX20 посредством модулей 15.013-15.016, когда длина TCX-кадра составляет 20 мс и связанный пакет потерян, т.е. BFI_TCX=1; и
Случай 2: Обычное TCX-декодирование, возможно, с частичными потерями пакетов, посредством модулей 15.001-15.012.
-1
-1
wsyn
В случае 1 нет доступной информации, чтобы декодировать TCX20-кадр. TCX-синтез осуществляется обработкой посредством нелинейного фильтра, эквивалентного 1/В(z) (модули 15.014-15.016), последнего возбуждения из предыдущего декодированного TCX-кадра, сохраненного в буфере 15.013 возбуждения и задерживаемого на T, где T=pitch_tcx - это запаздывание основного тона, оцененное в ранее декодированном TCX-кадре. Нелинейный фильтр используется вместо фильтра 1/В(z), чтобы избежать щелчков при синтезе. Этот фильтр разлагается на три (3) блока: фильтр 15.014, имеющий функцию переноса В(z/y)/В(z)/(1-α z), чтобы преобразовывать возбуждение, задерживаемое на T, в целевой домен TCX, ограничитель 15.015, чтобы ограничивать амплитуду до ± rms, и, наконец, фильтр 15.016, имеющий функцию переноса (1-α z)/В(z/y), чтобы находить синтез. Буфер OVLP_TCX задается равным нулю в этом случае.
0
1
N-1
8
В случае 2 TCX-декодирование влечет за собой декодирование параметров алгебраического VQ посредством демультиплексора 15.001 и декодера 15 VQ-параметров. Эта операция декодирования представлена в другой части настоящего описания. Как указано в описании выше, набор коэффициентов преобразования Y=[Y Y ... Y], где N=288, 576 и 1152 для TCX20, TCX40 и TCX80, соответственно, делится на K субвекторов (блоков последовательных коэффициентов преобразования) размерности 8, которые представлены в пространственной решетке RE. Число K субвекторов - это 36, 72 и 144 для TCX20, TCX40 и TCX80 соответственно. Следовательно, коэффициенты Y могут быть расширены как
0
1
K-1
k
8k
8k+7
Y=[Y Y... Y] с помощью Y=[Y ... Y] и k=0, ..., K-1.
noise
1
noise
noise
1
1
noise
noise
Уровень σ шумовой вставки декодируется в декодере 15.003 уровня шумовой вставки посредством инвертирования 3-битного однородного скалярного квантования, используемого в кодере. Для индекса 0≤idx≤7 σ задается как: σ=0,1*(8-idx). Тем не менее, может случиться так, что idx не доступен. Это имеет место в случае, когда BFI_TCX=(1) в TCX20, (1 x) в TCX40 и (x 1 x x) в TCX80, где x представляет произвольное двоичное значение. В этом случае σ присваивается его максимальное значение, т.е. σ=0,8.
k
k
k
Комфортный шум вставляется в субвекторы Y, округленные до нуля, и которые соответствуют частоте выше 6400/6=1067 Гц (модуль 15.004). Более точно, Z инициализируется как Z=Y и для K/6≤k≤K (только), если Y=(0, 0, ..., 0), Zзаменяется на 8-мерный вектор:
noise
1
1
2
2
3
3
4
4
σ*[cos(θ)sin(θ)cos(θ)sin(θ)cos(θ)sin(θ)cos(θ) sin(θ)],
1
2
3
4
где фазы θ, θ, θ и θвыбираются случайно.
k
Адаптивный модуль 15.005 устранения низкочастотных предыскажений масштабирует коэффициенты преобразования каждого субвектора Z,
k
для k=0, ..., K/4-1, на коэффициент fac(модуль 21.004 фиг.21), который изменяется с k:
k
k
k
X' = fac Z, k = 0, ..., K/4-1.
k
max
k
max
Коэффициент fac - это фактически кусочно-постоянная монотонно возрастающая функция k, и она насыщается при 1 для данного k=k<K/4 (т.е. fac<1 для k<k и
k
max
max
k
k
k
fac=1 для k≥k). Значение k зависит от Z. Чтобы получить fac, интенсивность ε каждого субвектора Z вычисляется следующим образом (модуль 21.001):
k
k
k
T
ε = Z Z+0,01,
k
где член 0,01 задан произвольным образом, чтобы не допустить нулевой интенсивности (инверсия ε вычисляется впоследствии). Затем осуществляется поиск максимальной интенсивности по первым K/4 субвекторам (модуль 21.002):
max
0
K/4-1
ε = max(ε, …, ε).
k
Фактическое вычисление fac задается формулой ниже (модуль 21.003):
0
0
max
0.5
fac = max ((ε / ε), 0,1),
k
k
max
k-1
0.5
fac = max ((ε / ε), fac) для k = 1, ..., K/4-1.
Оценка преобладающего основного тона выполняется эстиматором 15.006, так чтобы следующий кадр, который должен быть декодирован, мог быть надлежащим образом экстраполирован, если он соответствует TCX20 и если связанный пакет потерян. Эта оценка основана на том допущении, что пик максимальной амплитуды в спектре целевого TCX соответствует преобладающему основному тону. Поиск максимального M ограничен частотой ниже 400 Гц
i=1, ..., N/32
2i
2i+1
2
2
M=max(X')+(X')
max
2i
2i+1
2
2
и минимальным индексом 1≤i≤N/32, так чтобы (X')+(X')=M также был найден. Затем преобладающий основной тон оценивается в множестве выборок как
est
max
est
est
T=N/i (это значение может быть не целочисленным). Преобладающий основной тон вычисляется для маскировки стирания пакетов в TCX20. Чтобы избежать проблем с буферизацией (буфер 15.013 возбуждения ограничен 20 мс), если T>256 выборок (20 мс), pitch_tcx присваивается значение 256, в противном случае, если T≤256, кратный период основного тона в 20 мс не допускается посредством присвоения pitch_tcx значения
est
est
pitch_tcx=max{└ n T ┘|n integer>0 и n T≤256},
где └.┘ обозначает округление до ближайшего целого в направлении -.
0
N-1
Используемое преобразование - это, в одном варианте осуществления, DFT, и оно реализуется как FFT. Вследствие упорядочения, используемого в TCX-кодере, коэффициенты преобразования X'=(X', ..., X') таковы, что:
0
- X' соответствует DC-коэффициенту;
1
- X' соответствует частоте Найквиста (т.е. 6400 Гц, поскольку целевой сигнал временной области дискретизируется при 12,8 кГц); и
2k
2k+1
- коэффициенты X' и X' для k = 1...N/2-1 - это действительная и мнимая часть компонента Фурье частоты k(/N/2)*6400 Гц.
1
w
FFT-модуль 15.007 всегда принудительно задает X' равным 0. После этого обнуления целевой TCX-сигнал x' временной области находится в FFT-модуле 15.007 посредством обратного FFT.
TCX
w
(Глобальное) TCX-усиление g декодируется в декодере 15.008 глобального TCX-усиления посредством инвертирования 7-битного логарифмического квантования, используемого в TCX-кодере. Для этого декодер 17.008 вычисляет значение rms целевого TCX-сигнала x' как:
w0
w1
wL-1
2
2
2
rms= sqrt(1/N(x' +x' +...+x' )).
2
Из индекса 0≤idx≤127 TCX-усиление задается как:
TCX
2
idx
/28/(4*rms)
g=10  .
Шаг (логарифмического) квантования составляет примерно 0,71 дБ.
w
w
2
2
Это усиление используется в умножителе 15.009, чтобы масштабировать x' до x. Из стратегии экстраполяции режимов и повторения усиления, используемой в иллюстративном варианте осуществления, индекс idx доступен умножителю 15.009. Тем не менее, в случае частичных потерь пакетов (1 потеря для TCX40 и до 2 потерь для TCX80) самый младший бит idx может быть задан по умолчанию равным 0 в демультиплексоре 15.001.
0
1
N-1
0
1
N-1
Поскольку TCX-кодер использует оконное кодирование с перекрытием и удаление взвешенного ZIR для кодирования с преобразованием целевого сигнала, восстановленный целевой TCX-сигнал x=(x, x, ..., x) фактически находится посредством перекрытия с суммированием в модуле 15.010 синтеза. Перекрытие с суммированием зависит от типа предыдущего декодированного кадра (ACELP или TCX). Первый генератор окон умножает целевой TCX-сигнал на адаптивное окно w=[w w ... w]:
i
i
i
x := x* w, i=0, ..., L-1,
где w задается как:
i
w = sin(π/ovlp_len * (i+1)/2), i= 0, ..., ovlp_len-1
i
w =1, i=ovlp_len, ..., L-1
i
w = cos( π/(L-N) * (i+1-L)/2), i=L, ..., N-1.
Если ovlp_len=0, т.е. если предыдущий декодированный кадр - это ACELP-кадр, левая часть этого окна пропускается посредством надлежащего средства пропускания. Затем перекрытие из последнего декодированного кадра (OVLP_TCX) добавляется посредством надлежащего сумматора к оконно кодированному сигналу x:
0
128
0
128
[x ... x] := [x ... x] + OVLP_TCX.
Если ovlp_len=0, OVLP_TCX - это 10-миллисекундный взвешенный ZIR ACELP (128 выборок) по x. Иначе,
где ovlp_len может быть равно 32, 64 или 128 (2,5, 5 или 10 мс), что означает, что предыдущий декодированный кадр - это TCX20, TCX40 или TCX80 соответственно.
0
L
Восстановленный целевой TCX-сигнал задается как [x ... x], а последние N-L выборок сохраняются в буфере OVLP_TCX:
-1
-1
Восстановленный целевой TCX фильтруется в фильтре 15.011 посредством обратного перцепционного фильтра W(z)=(1-α z)/В(z/y), чтобы найти синтез. Возбуждение также вычисляется в модуле 15.012, чтобы обновить адаптивный словарь кодов ACELP и дать возможность переключиться с TCX на ACELP в последующем кадре. Заметим, что длина TCX-синтеза задается посредством длины TCX-кадра (без перекрытия): 20, 40 или 80 мс.
Декодирование высокочастотного (HF) сигнала
HF
Декодирование HF-сигнала реализует тип механизма расширения полосы пропускания (BWE) и использует некоторые данные из LF-декодера. Это развитие механизма BWE, использовавшегося в декодере речи AMR-WB. Структура HF-декодера проиллюстрирована в форме блок-схемы фиг.16. Цепочка HF-синтеза состоит из модулей 16.012-16.014. Боле точно, HF-сигнал синтезируется за 2 этапа: вычисление HF-сигнала возбуждения и вычисление HF-сигнала из HF-сигнала возбуждения. HF-возбуждение получается посредством формирования во временной области (умножитель 16.012) LF-сигнала возбуждения с помощью скалярных коэффициентов (или усилений) на 5-миллисекундные субкадры. Это HF-возбуждение подвергается пост-обработке в модуле 16.013, чтобы уменьшить "зашумленность" выхода, и затем фильтруется посредством фильтра 16.014 линейно-предиктивного HF-синтеза, имеющего передаточную функцию 1/A(Z). Как указано в описании выше, порядок LP используется для того, чтобы закодировать и затем декодировать HF-сигнал - 8. Результат также подвергается пост-обработке, чтобы сгладить вариации интенсивности в модуле 16.015 сглаживания HF-интенсивности.
0
1
2
3
k
k
k
HF-декодер синтезирует 80-миллисекундный HF-суперкадр. Этот суперкадр сегментируется согласно MODE=(m, m, m, m). Более конкретно, декодированные кадры, используемые в HF-декодере, являются синхронными с кадрами, используемыми в LF-декодере. Следовательно, m≤1, m=2 и m=3 указывают соответственно 20-миллисекундные, 40-миллисекундные и 80-миллисекундные кадры. Эти кадры упоминаются как HF-20, HF-40 и HF-80 соответственно.
HF
Из вышеописанной цепочки синтеза очевидно, что единственные параметры, необходимые для HF-декодирования, - это ISF и параметры усиления. ISF-параметры представляют фильтр 18.014 (1/A(z)), тогда как параметры усиления используются для того, чтобы сформировать LF-сигнал возбуждения с помощью умножителя 16.012. Эти параметры демультиплексируются из потока битов в демультиплексоре 16.001 на основе РЕЖИМ и знания формата потока битов.
Декодирование HF-параметров управляется основным блоком 16.002 управления HF-декодированием. Более конкретно, основной блок 16.002 управления HF-декодированием управляет декодированием (ISF-декодер 16.003) и интерполяцией (модуль 16.005 ISP-интерполяции) линейно-предиктивных (LP) параметров. Основной блок 16.002 управления HF-декодированием задает надлежащие индикаторы некорректных кадров для ISF и декодеров 16.003 и 16.009 усиления. Он также управляет выходным буфером 16.016 HF-сигнала, так чтобы декодированные кадры записывались в нужные сегменты времени 80-миллисекундного выходного буфера.
Основной блок 16.002 управления HF-декодированием генерирует управляющие данные, которые являются внутренними для HF-декодера: bfi_isf_hf, BFI_GAIN, число субкадров для ISF-интерполяции и селектор кадров, чтобы задавать указатель кадра в выходном буфере 16.016. За исключением селектора кадров, который не требует пояснений, характер этих данных более подробно описывается ниже:
0
1
2
3
- bfi_isf_hf - это двоичный признак, указывающий потерю ISF-параметров. Его определение приведено ниже из BFI=(bfi, bfi, bfi, bfi):
k
- для HF-20 в пакете k, bfi_isf_hf=bfi,
k
- для HF-40 в пакетах k и k+1, bfi_isf_hf=bfi,
0
- для HF-80 в пакетах k=0-3, bfi_isf_hf=bfi.
Это определение можно легко понять из формата потока битов. Как указано выше, ISF-параметры HF-сигнала всегда находятся в первом пакете, описывающем кадры HF-20, HF-40 или HF-80.
k
- BFI_GAIN - это двоичный вектор, используемый для того, чтобы сигнализировать о потерях пакетов HF-декодеру усиления: BFI_GAIN=(bfi) для HF-20 в пакете k,
k
k+1
(bfi bfi) для HF-40 в пакетах k и k+1, BFI_GAIN=BFI для HF-80.
- Число субкадров для ISF-интерполяции ссылается на число 5-миллисекундных субкадров в декодированном кадре. Это число равно 4 для HF-20, 8 для HF-40 и 16 для HF-80.
1
2
ISF-вектор isf_hf_q декодируется с помощью предиктивного VQ AR(1) в ISF-декодере 16.003. Если bfi_isf_hf=0, 2-битный индекс i первой стадии и 7-битный индекс i второй стадии доступны, и isf_hf_q задается как
1
2
isf_hf
isf_hf_q=cb(i) + cb2(i) + mean_isf_hf + µ * mem_isf_hf,
1
1
2
2
isf_hf
где cb(i) - это i-й кодовый вектор первой стадии, cb2(i) - это i-й кодовый вектор второй стадии, mean_isf_hf - это средний ISF-вектор, µ=0,5 - это коэффициент предсказания AR(1), а mem_isf_hf - это память предиктивного ISF-декодера. Если bfi_isf_hf=1, декодированный ISF-вектор соответствует предыдущему ISF-вектору, смещенному в направлении среднего ISF-вектора:
isf_hf
isf_hf_q = α * mem_isf_hf + mean_isf_hf,
isf_hf
где α=0,9. После вычисления isf_hf_q переупорядочение ISF, заданное в кодировании речи AMR-WB, применяется к isf_hf_q с ISF-паузой в 180 Гц. Наконец, память mem_isf_hf обновляется для следующего HF-кадра как:
mem_isf_hf = isf_hf_q - mean_isf_hf.
Начальное значение mem_isf_hf (при сбросе декодера) равно нулю. Преобразователь 16.004 преобразует ISF-параметры (в частотной области) в ISP-параметры (в косинусной области).
Модуль 16.005 ISP-интерполяции реализует простую линейную интерполяцию между ISP-параметрами предыдущего декодированного HF-кадра (HF-20, HF-40 или HF-80) и новыми декодированными ISP-параметрами. Интерполяция выполняется в ISP-области и приводит к ISP-параметрам для каждого 5-миллисекундного субкадра, согласно формуле:
subframe-i
new
old
isp=i/nb*isp+(1-i/nb)*isp,
old
new
FZ
где nb - это число субкадров в текущем декодированном кадре (nb=4 для HF-20, 8 для HF-40, 16 для HF-80), i=0, ..., nb-1 - это индекс субкадра, isp - это набор ISP-параметров, полученных из декодированных ISF-параметров предыдущего декодированного HF-кадра, а isp - это набор ISP-параметров, полученных из ISF-параметров, декодированных в процессорах 18.003. Преобразователь 10.006 затем преобразует интерполированные ISP-параметры в квантованные линейно-предиктивные коэффициенты В(z) для каждого субкадра.
match
match
Вычисление усиления g в дБ в модуле 16.007 описано в следующих параграфах. Это усиление интерполируется в модуле 16.008 для каждого 5-миллисекундного субкадра на основе его предыдущего значения old_g как:
i
match
match
ĝ = i/nb * g + (1-i/nb)* old_g,
0
nb-1
где nb - это число субкадров в текущем декодированном кадре (nb=4 для HF-20, 8 для HF-40, 16 для HF-80), i=0, ..., nb-1 - это индекс субкадра. Это имеет результатом вектор (ĝ, …, ĝ).
Вычисление оценки усиления, чтобы соответствовать амплитуде при 6400 Гц (модуль 16.007)
-1
2
2
2
HF
match
10
Процессор 16.007 описан на фиг.10b. Поскольку этот процесс использует только квантованную версию LPC-фильтров, он идентичен тому, что кодер вычислил на эквивалентной стадии. Убывающая синусоида частоты 6400 Гц генерируется посредством вычисления первых 64 выборок [h(0) h(1) ... h(63)] импульсной характеристики h(n) авторегрессионного фильтра первого порядка 1/(1+0,9 z), имеющего полюс z=-0,9 (фильтра 10.017). Этот 5-миллисекундный сигнал h(n) обрабатывается посредством предсказателя (исходного состояния) В(z) порядка 16, коэффициенты которого берутся из LF-декодера (фильтра 10.018), а затем результат обрабатывается посредством фильтра синтеза (исходного состояния) 1/В(z) порядка 8, коэффициенты которого берутся из HF-декодера (фильтр 10.018), чтобы получить сигнал x(n). 2 набора LP-коэффициентов соответствуют последнему субкадру текущего декодированного кадра HF-20, HF-40 или HF-80. Затем вычисляется корректирующее усиление в дБ как g=10 log [1/(x(0)+x(1)+ ... +x(63))], как проиллюстрировано в модуле 10.028.
match
match
HF
Напомним, что частота дискретизации LF- и HF-сигналов составляет 12800 Гц. Более того, LF-сигнал соответствует звуковому сигналу нижних частот, тогда как HF-сигнал - это спектрально свернутая версия звукового сигнала верхних частот. Если HF-сигнал - это синусоида при 6400 Гц, он становится после гребенки фильтров синтеза синусоидой при 6400 Гц, а не 12800 Гц. Как следствие, предполагается, что g создается так, чтобы амплитуда свернутой частотной характеристики 10^(g//20)/A(Z) соответствовала амплитуде частотной характеристики 1/A(z) в районе 6400 Гц.
Декодирование корректирующих усилений и вычисление усилений (декодер 16.009 усилений)
est
est
est
0
1
nb-1
0
1
nb-1
Как описано выше, после интерполяции усиления HF-декодер получает из модуля 16.008 оцененные усиления (g , g , ..., g ) в дБ для каждого из nb субкадров текущего декодированного кадра. Более того, nb = 4, 8 и 16 в HF-20, HF-40 и HF-80 соответственно. Роль декодера 16.009 усилений заключается в том, чтобы декодировать корректирующие усиления в дБ, которые добавляются посредством сумматора 16.010 к оцененным усилениям на субкадр, чтобы сформировать усиления декодирования ĝ, ĝ, ..., ĝ:
0
1
nb-1
0
1
nb-1
0
1
nb-1
(ĝ(dB), ĝ(dB), …, ĝ(dB))=(ġ, ġ, …, ġ)+(ğ, ğ, …, ğ),
где
0
1
nb-1
0
1
nb-1
0
1
nb-1
c1
c1
c1
c2
c2
c2
(ğ, ğ, …, ğ)=(g , g , …, g ) + (g , g , …, g ).
Следовательно, декодирование усилений соответствует декодированию предиктивного двухстадийного VQ-скалярного квантования, где предсказание предоставляется посредством интерполированного согласующего усиления объединения 6400 Гц. Размерность квантования является переменной и равна nb.
Декодирование первой стадии
0
1
2
3
7-битный индекс 0≤idx≤127 4-мерного словаря кодов HF-усиления первой стадии декодируется на 4 усиления (G, G, G, G). Индикатор некорректных кадров bfi=BFI_GAINo в HF-20, HF-40 и HF-80 позволяет обрабатывать потери пакетов. Если bfi=0, эти усиления декодируются как
0
1
2
3
(G, G, G, G) = cb_gain_hf(idx) + mean_gain_hf,
где cb_gain_hf(idx) - это idx-тый кодовый вектор словаря кодов cb_gain_hf. Если bfi=1, память past_gain_hf_q смещается в направлении -20 дБ:
gain_hf
past_gain_hf_q: = α * (past_gain_hf_q + 20) - 20,
gain_hf
0
1
2
3
где α=0,9, и 4 усилениям (G, G, G, G) присваивается одинаковое значение:
k
G=past_gain_hf_q+mean_gain_hf, для k= 0, 1, 2 и 3. Затем память past_gain_hf_q обновляется следующим образом:
0
1
2
3
past_gain_hf_q := (G + G + G + G)/4 - mean_gain_hf.
Вычисление восстановления первой стадии в таком случае задается как:
c1
c1
c1
c1
0
1
2
3
0
1
2
3
HF-20: (g , g , g , g  ) = (G, G, G, G).
c1
c1
c1
0
1
7
0
0
1
1
2
2
4
3
HF-40: (g , g , ..., g ) = (G, G, G, G, G, G, G, G).
c1
c1
c1
0
1
15
0
0
0
0
1
1
1
1
2
2
2
2
3
3
3
3
HF-80: (g , g , ..., g ) = (G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G).
Декодирование второй стадии
c2
c2
c2
c2
0
1
2
3
В TCX-20 (g , g , g , g ) просто присваивается значение (0, 0, 0, 0), и нет фактического декодирования второй стадии. В HF-40 2-битный индекс 0≤idx≤3 i-того субкадра, где i=0, ..., 7, декодируется как:
c2
c2
i
i
i
если bfi=0, g =3*idx-4,5, иначе g =0.
i
В TCX-80 16-субкадровый 3-битный индекс 0≤idx≤7 i-того субкадра, где i=0, ..., 15, декодируется как:
c2
c2
i
i
i
если bfi=0, g =3*idx-10,5, иначе g =0.
В TCX-40 амплитуда второго скалярного уточнения составляет до ±4,5 дБ, а в TCX-80 - до ±10,5 дБ. В обоих случаях шаг квантования равен 3 дБ.
Восстановление HF-усиления
ĝi/20
Усиление для каждого субкадра затем вычисляется в модуле 16.011 как: 10.
Модуль 16.013 снижения зашумленности и модуль 16.015 сглаживания HF-интенсивности
HF
HF
HF
HF
HF
Роль модуля 16.013 снижения зашумленности заключается в том, чтобы ослаблять импульсы в HF-сигнале возбуждения r(n) временной области, которые зачастую приводят к тому, что выводимый звук звучит "зашумленно". Импульсы обнаруживаются посредством проверки того, является ли абсолютное значение |r(n)|>2*thres(n), где thres(n) является адаптивным порогом, соответствующим огибающей временной области r(n). Выборки r(n), которые распознаются как импульсы, ограничены ±2*thres(n), где ± - это знак r(n).
HF
-1
Каждая выборка r(n) HF-возбуждения фильтруется посредством фильтра нижних частот первого порядка 0,02/(1-0,98 z), чтобы обновлять thres(n). Начальное значение thres(n) (при сбросе декодера) равно 0. Амплитуда затухания импульсов задается как:
HF
Δ=max(|r(n)|-2*thres(n), 0,0).
HF
Таким образом, Δ присваивается значение 0, если текущая выборка не распознана как импульс, что оставляет r(n) неизменной. В таком случае текущее значение thres(n) адаптивного порога изменяется следующим образом:
thres(n) := thres(n) + 0,5 * Δ.
HF
HF
HF
HF
HF
HF
Наконец, каждая выборка r(n) модифицируется как: r'(n)=r(n)-Δ, если r(n)≥0, и r'(n)=r(n)+Δ в противном случае.
HF
Краткосрочные вариации интенсивности HF-синтеза s(n) сглаживаются в модуле 16.015. Интенсивность измеряется по субкадру. Интенсивность каждого субкадра модифицируется до ±1,5 дБ на основе адаптивного порога.
HF
HF
HF
Для данного субкадра [s(0) s(1) ... s(63)] интенсивность субкадра рассчитывается как:
2
2
2
2
HF
HF
HF
ε=0,0001+s(0)+s(1)+...+s(63).
Значение t порога обновляется как:
2
2
t=min(ε*1,414, t), если ε<t,
2
max(ε /1,414, t), иначе.
2
Текущий субкадр затем масштабируется посредством V(t/ε):
HF
HF
HF
HF
HF
HF
2
[s'(0) s'(1) ... s'(63)] = V(t/ε) * [s(0) s(1) ... s(63)].
Постобработка и гребенка фильтров синтеза
Постобработка LF- и HF-синтеза и рекомбинация двух полос частот в исходную звуковую полосу пропускания проиллюстрирована на фиг.17.
preemph
preemph
p
p0
p1
p15
0
1
15
-1
В LF-синтез (который является выводом декодера ACELP/TCX) сначала предварительно вводятся предыскажения посредством фильтра 17.001 функции преобразования 1/(1-α z), где α=0,75. Результат передается посредством LF-постфильтра 17.002 основного тона, чтобы снизить уровень шума кодирования между гармониками основного тона только в декодированных сегментах ACELP. Этот постфильтр берет в качестве параметров усиления основного тона g = (g, g, ..., g) и запаздывания основного тона T = (T, T, ..., T) для каждого 5-миллисекундного субкадра 80-миллисекундного суперкадра. Эти векторы,
p
g и T, берутся из декодера ACELP/TCX. Фильтр 17.003 - это фильтр верхних частот второго порядка 50 Гц, используемый при кодировании речи AMR-WB.
Постобработка HF-синтеза осуществляется посредством модуля 17.005 задержки, который реализует простое согласование по времени HF-синтеза, чтобы синхронизировать его с LF-синтезом постобработки. HF-синтез, таким образом, задерживается на 76 выборок, так чтобы компенсировать за задержку, сгенерированную LF-постфильтром 17.002 основного тона.
Гребенка фильтров синтеза реализуется посредством модуля 17.004 LP-дискретизации с повышением частоты, модуля 17.007 HF-дискретизации с повышением частоты и сумматора 17.008. Выходная частота дискретизации FS=16000 или 24000 Гц задается в качестве параметра. Дискретизация с повышением частоты с 12800 Гц до FS в модулях 17.004 и 17.007 реализуется аналогичным образом, как при кодировании речи AMR-WB. Когда FS=16000, подвергнутые постобработке LF- и HF-сигналы дискретизируются с повышением частоты до 5, обрабатываются посредством FIR-фильтра 120-го порядка, затем дискретизируются с понижением частоты до 4 и масштабируются на 5/4. Разность между модулями 17.004 и 17.007 дискретизации с повышением частоты касается коэффициентов FIR-фильтра 120-го порядка. Аналогично, когда FS=24000, подвергнутые постобработке LF- и HF-сигналы дискретизируются с повышением частоты до 15, обрабатываются FIR-фильтром 368-го порядка, затем дискретизируются с понижением частоты до 8 и масштабируются на 15/8. Сумматор 17.008, в итоге, объединяет два дискретизированных с повышением частоты LF- и HF-сигнала, чтобы сформировать 80-миллисекундный суперкадр или выходной звуковой сигнал.
Хотя настоящее изобретение описано выше посредством неограничивающего иллюстративного варианта осуществления, следует принимать во внимание, что этот вариант осуществления при необходимости может быть модифицирован в рамках области применения прилагаемой формулы изобретения без отступления от области применения, характера и духа настоящего изобретения.
Приложение
Таблица А-1Список ключевых символов в соответствии с иллюстративным вариантом осуществления изобретения(а) автомасштабируемое кратное RE<sub>8 </sub>векторное квантование
Символ
Значение
Примечание
N
Размерность векторного квантования
Λ
(обычно) решетка размерности N
RE<sub>8</sub>
Решетка Госсета размерностью 8
x или X
Исходный вектор размерности 8
y или Y
Ближайшая точка решетки к x в RE<sub>8</sub>
n
Номер словаря кодов, ограниченный набором {0, 2, 3, 4, 5, ...}
Q<sub>n</sub>
Словарь кодов пространственной решетки в Λ индекса n
В автомасштабируемом кратном RE<sub>8 </sub>векторном квантователе Q<sub>n </sub>индексируется 4n битами
i
Индекс точки у решетки в словаре кодов Q<sub>n</sub>
В автомасштабируемом кратном RE<sub>8 </sub>векторном квантователе индекс i представляется 4n битами
n<sub>E</sub>
Двоичное представление номера n словаря кодов
См. таблицу 2 для примера
R
Выделение бит для автомасштабируемого кратного RE<sub>8 </sub>векторного квантования (т.е. доступное количество битов для квантования x)
(b) раздельное автомасштабируемое кратное RE<sub>8 </sub>векторное квантование
Символ
Значение
Примечание
┌.┐
округление до ближайшего целого в сторону +<img file="00000019.tif" he="3" wi="4" img-content="undefined" img-format="tif" />
иногда называется ceil()
N
Размерность векторного квантования
кратное 8
K
номер 8-мерного субвектора
N=8K
RE<sub>8</sub>
Решетка Госсета размерностью 8
RE<sub>8</sub><sup>K</sup>
Декартово произведение RE<sub>8</sub> (K раз):RE<sub>8</sub><sup>K</sup>=RE<sub>8</sub><img file="00000020.tif" he="4" wi="4" img-content="undefined" img-format="tif" />…<img file="00000021.tif" he="4" wi="4" img-content="undefined" img-format="tif" />RE<sub>8</sub>
Это - N-мерная решетка
z
N-мерный исходный вектор
x
N-мерный входной вектор для разделенного RE<sub>8 </sub>векторного квантования
x=1/gz
g
Параметр усиления векторного квантования "усиление-форма"
e
Вектор разделенных интенсивностей (K-кортеж)
e=(e(0), ..., e(K-1))e(k) = z(8k)<sup>2</sup>+ ... +z(8k+7)<sup>2</sup>, 0 ≤ k ≤ K-1
R
вектор предполагаемого разделенного бюджета битов (K-кортеж) для g=1
R=(R(0), …, R(K-1))
b
вектор предполагаемого разделенного бюджета битов (K-кортеж) для данного
b=(b(0), …, b(K-1))
offset
для данного offsetb(k)=R(k)-offset, еслиb(k) <0, b(k) := 0
offset
целое смещение в логарифмической области, используемой в дискретном
g=2<sup>offset/10</sup>
поиске оптимального g
0≤ offset ≤ 255
fac
оценка уровня шума
y
Ближайшая точка решетки к x в RE<sub>8</sub> <sup>K</sup>
nq
Вектор номеров словаря кодов (K-кортеж)
nq=(nq(0), ..., nq(K-1)<sub>1</sub>)каждое вхождение nq(k) ограничено набором {0, 2, 3, 4, 5, ...}
Q<sub>n</sub>
Словарь кодов пространственной решетки в RE<sub>8</sub> индекса n
Q<sub>n </sub>индексируется 4n битами
iq
Вектор индексов (K-кортеж)
iq=(iq(0), …, iq(K-1))индекс iq(k) представляется 4nq(k) битами
nq<sub>E</sub>
вектор двоичных представлений (переменной длины) для номеров словарей кодов в nq'
См. таблицу 2 для примера
R
Выделение бит для разделенного автомасштабируемого кратного RE<sub>8 </sub>векторного квантования (т.е. доступное количество битов для квантования x)
nq'
вектор номеров словарей кодов (К-кортеж) такой, что количество битов, необходимое для мультиплексирования nq<sub>E</sub> и iq (до субвектора last), не превышает R
nq'=(nq'(0), …, nq'(K-1))каждое вхождение nq'(k)<sub>() </sub>ограничено набором {0, 2, 3, 4, 5, ...}
last
индекс для последнего субвектора, мультиплексированный в таблице форматирования parm
0 ≤ last ≤ K-1
pos
индексы для субвекторов, отсортированные в соответствии со своими разделенными интенсивностями
pos=(ps(0), ..., pos(K-1)<sub>1</sub>)pos - перестановка(0, 1, …, K-1)e(pos(0)) ≥ e(pos((1)) ≥ ... ≥ e(pos(K-1))
parm
целочисленная таблица форматирования для мультиплексирования
[R/4] целочисленных элементовКаждый элемент имеет 4 бита, за исключением последнего элемента, который имеет (R mod 4) бит, если R не кратно 4, иначе - 4 бита
pos<sub>i</sub>
точка записи/чтения индексов в таблице форматирования parm
в случае одного пакета:инициализируется в 0, инкрементируется целочисленными шагами кратными 4
pos<sub>n</sub>
точка записи/чтения номеров словарей кодов в таблице форматирования parm
в случае одного пакета:инициализируется в R-1, декрементируется целочисленными шагами
(с) кодирование с преобразованием, основанное на разделенном автомасштабируемом кратном RE<sub>8 </sub>векторном квантовании
Символ
Значение
Примечание
N
Размерность векторного квантования
RE<sub>8</sub>R
Решетка Госсета размерностью 8Выделение бит для автомасштабируемого кратного RE<sub>8 </sub>векторного квантования (т.е. доступное количество битов для квантования x)
Список использованной литературы
(Jayant, 1984)
N.S. Jayant and P. Noll, Digital Coding of Waveforms -Principles and Applications to Speech and Video, Prentice-Hall, 1984
(Gersho, 1992)
A. Gersho and R.M. Gray, Vector quantization and signal compression, Kluwer Academic Publishers, 1992
(Kleijn, 1995)
W.B. Kleijn and K.P. Paliwal, Speech coding and synthesis, Elsevier, 1995
(Gibson, 1988)
J.D. Gibson and K. Sayood, "Lattice. Quantization," Adv. Electron. Phys., vol. 72, pp. 259-331, 1988
(Lefebvre, 1994)
R. Lefebvre and R. Salami and C. Laflamme and J.-P. Adoul, "High quality coding of wideband audio signals using transform coded excitation (TCX)," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 1, 19-22 April 1994, pp. 1/193 -1/196
(Xie, 1996)
M. Xie and J-P. Adoul, "Embedded algebraic vector quantizers (EAVQ) with application to wideband speech coding," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 1, 7-10 May 1996, pp. 240-243
(Ragot, 2002)
S. Ragot, B. Bessette and J.-P. Adoul, A Method and System for Multi-Rate Lattice Vector Quantization of a Signal, PCT application WO03103151A1
(Jbira, 1998)
A. Jbira and N. Moreau and P. Dymarski, "Low delay coding of wideband audio (20 Hz-15 kHz) at 64 kbps," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 6, 12-15 May 1998, pp. 3645 -3648
(Schnitzler, 1999)
J. Schnitzler et al., "Wideband speech coding using forward/backward adaptive prediction with mixed time/frequency domain excitation," Proceedings IEEE Workshop on Speech Coding Proceedings, 20-23 June 1999, pp. 4-6
(Moreau, 1992)
N. Moreau and P. Dymarski, "Successive orthogonalizations in the multistage CELP coder," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 1992, pp. 61-64
(Bessette, 2002)
B. Bessette et al., "The adaptive multirate wideband speech codec (AMR-WB) ", IEEE Transactions on Speech and Audio Processing, vol. 10, no. 8, Nov. 2002, pp. 620 -636
(Bessette, 1999)
B. Bessette and R. Salami and C. Laflamme and R. Lefebvre, "A wideband speech and audio codec at 16/24/32 kbit/s using hybrid ACELP/TCX techniques," Proceedings IEEE Workshop on Speech Coding Proceedings, 20-23 June 1999, pp. 7-9
(Chen, 1997)
J.-H. Chen, "A candidate coder for the ITU-T's new wideband speech coding standard," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 2, 21-24 April 1997, pp. 1359-1362
(Chen, 1996)
J.-H. Chen and D. Wang, "Transform predictive coding of wideband speech signals," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 1, 7-10 May 1996, pp. 275-278
(Ramprashad, 2001)
S.A. Ramprashad, "The multimode transform predictive coding paradigm," IEEE Transactions on Speech and Audio Processing, vol. 11, no. 2, March 2003, pp. 117-129
(Combescure, 1999)
P. Combescure et al., "A 16, 24, 32 kbit/s wideband speech codec based on ATCELP", Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 1, 15-19 March 1999, pp. 5-8
(3GPPTS 26.190)
3GPP TS 26.190, "AMR Wideband Speech Codec; Transcoding Functions"
(3GPPTS 26.173)
3GPP TS 26.173, "ANSI-C code for AMR Wideband speech codec"
Таблица 4Выделение бит для 20-мс ACELP кадра
Параметр
Выделение бит на 20-мс кадр
13,6k
16,8k
19,2k
20,8k
24k
ISF-параметры
46
Средняя интенсивность
2
Запаздывание основного тона
32
Фильтр основного тона
4×1
Параметр
Выделение бит на 20-мс кадр
13,6k
16,8k
19,2k
20,8k
24k
ISF-параметры
46
Средняя интенсивность
2
Запаздывание основного тона
32
Фильтр основного тона
4×1
Индексы фиксированного словаря кодов
4×36
4×52
4×64
4×72
4×88
Усиление словаря кодов
4×7
Всего в битах
254
318
366
398
462
Таблица 5аВыделение бит для 20-мс TCX кадра
Параметр
Выделение бит на 20-мс кадр
13,6k
16,8k
19,2k
20,8k
24k
ISF-параметры
46
Коэффициент шума
3
Глобальное усиление
7
Алгебраический VQ
198
262
310
342
406
Всего в битах
254
318
366
398
462
Таблица 5bВыделение бит для 40-мс TCX кадра
Параметр
Выделение бит на 40-мс кадр(1-ый 20-мс кадр, 2-й 20-мс кадр)
13,6k
16,8k
19,2k
20,8k
24k
ISF-параметры
46 (16,30)
Коэффициент шума
3 (3,0)
Глобальное усиление
13 (7,6)
Алгебраический VQ
446 (228,218)
574 (292,282)
670(340,330)
734 (372,362)
862 (436,426)
Всего в битах
508
636
732
796
924
Таблица 5cВыделение бит для 80-мс TCX кадра
Параметр
Выделение бит на 80-мс кадр(1-й, 2-й, 3-й, 4-й 20-мс кадр)
13,6k
16,8k
19,2k
20,8k
24k
ISF-параметры
46 (16,6,12,12)
Коэффициент шума
3 (0,3,0,0)
Глобальное усиление
16 (7,3,3,3)
Алгебраический VQ
960 (231,242,239,239)
1207 (295,306,303,303)
1399 (343,354,359,359)
1536 (375,386,383,383)
1792 (439,450,447,447)
Всего в битах
1016
1272
1464
1592
1848
Таблица 6Выделение бит для расширения полосы пропускания
Параметр
Выделение бит на 20/40/80-мс кадр
ISF-параметры
9 (2 + 7)
Усиление
7
Коррекция усиления
0/8×2/16 × 3
Всего в битах
16/32/64