КОДИРОВАНИЕ ЗВУКА С МАЛОЙ ЗАДЕРЖКОЙ, СОДЕРЖАЩЕЕ ЧЕРЕДУЮЩИЕСЯ ПРЕДСКАЗАТЕЛЬНОЕ КОДИРОВАНИЕ И КОДИРОВАНИЕ С ПРЕОБРАЗОВАНИЕМ
LOW LATENCY AUDIO ENCODING, COMPRISING ALTERNATING PREDICTIVE CODING AND TRANSFORM CODING

Настоящее изобретение относится к области кодирования цифровых сигналов.
Предпочтительно изобретение находит свое применение в кодировании звуков с чередованием речи и музыки.
Для эффективного кодирования речевых звуков рекомендованы методы типа CELP (“Code Excited Linear Prediction”). Для эффективного кодирования музыкальных звуков более предпочтительными являются методы кодирования с преобразованием.
Кодеры типа CELP являются предсказательными кодерами. Они предназначены для моделирования производства речи на основании различных элементов: краткосрочное линейное предсказание для моделирования голосового канала, долгосрочное предсказание для моделирования вибрации голосовых связок в звонком периоде и возбуждение, производное от стационарного словаря (белый шум, алгебраическое возбуждение), для характеристики «инновации», которая не была моделирована.
В наиболее распространенных кодерах с преобразованием (например, кодер MPEG ААС или ITU-T G.722.1 Annexe С) используют преобразования с критической дискретизацией, чтобы уплотнить сигнал в области преобразования. «Преобразованием с критической дискретизацией» называют преобразование, при котором число коэффициентов в области преобразования равно числу анализируемых временных отсчетов.
rd
Решение для эффективного кодирования сигнала, содержащего эти два типа контента, состоит в выборе наилучшего метода в течение времени. В частности, это решение было рекомендовано организацией по стандартизации 3GPP (“3 Generation Partnership Project”), которая предложила метод, называемый AMR WB+.
Этот метод основан на технологии CELP типа AMR-WB, в частности, типа ACELP (от “Algebraic Code Excited Linear Prediction” на английском языке) и на кодировании с преобразованием, основанном на преобразовании Фурье с перекрытием в модели типа ТСХ (от “Transform Coded Excitation” на английском языке).
Кодирование ACELP и кодирование ТСХ являются методами линейного предсказательного типа. Следует отметить, что кодек AMR-WB+ был разработан для сервисов 3GPP PSS (от “Packet Switched Streaming” на английском языке), MBMS (от “Multimedia Broadcast/Multicast Service” на английском языке) и MMS (от “Multimedia Messaging Service” на английском языке), иначе говоря, для сервисов передачи и запоминания без строгих требований по алгоритмической задержке.
Это решение страдает от недостаточного качества музыки. Эта недостаточность связана, в частности, с кодированием с преобразованием. В частности, преобразование Фурье с перекрытием не является преобразованием с критической дискретизацией и поэтому не является достаточно оптимальным.
Кроме того, используемые в этом кодере окна не являются оптимальными с точки зрения концентрации энергии: частотные формы этих квази-прямоугольных окон являются неоптимальными.
Усовершенствование кодирования AMR-WB+ в комбинации с принципами кодирования MPEG ААС (от “Advanced Audio Coding” на английском языке) достигнуто при помощи кодека MPEG USAC (от “Unified Speech Audio Coding” на английском языке), которые все еще находятся в стадии разработки в ISO/MPEG. Приложения, предусмотренные для MPEG USAC, не относятся к разговорным, а соответствуют сервисам передачи и запоминания без строгих требований по алгоритмической задержке.
th
Первоначальная версия кодека USAC, называемая RM0 (Reference Model 0) описана в статье М. Neuendorf et al., A Novel Scheme for Low Bitrate Unified Speech and Audio Coding - MPEG RM0, 7-10 May 2009, 126 AES Convention. Этот кодек RM0 чередует свою работу по нескольким режимам кодирования:
- Для сигналов типа речи: режимы LPD (от “Linear Predictive Domain” на английском языке), включающие в себя два разных режима, производных от кодирования AMR-WB+:
- Режим ACELP
- Режим ТСХ, называемый wLPT (от “weighted Linear Predictive Transform” на английском языке), в котором применяют преобразование типа MDCT (в отличие от кодека AMR-WB+).
- Для сигналов типа музыки: режим FD (от “Frequency Domain” на английском языке), в котором используют кодирование с преобразованием MDCT (от “Modified Discrete Cosine Transform” на английском языке) типа MPEG ААС (от “Advanced Audio Coding” на английском языке) на 1024 отсчетах.
По сравнению с кодеком AMR-WB+ основными отличиями кодирования USAC RM0 в части моно являются использование преобразования с критическим прореживанием типа MDCT для кодирования с преобразованием и квантование спектра MDCT посредством скалярного квантования с арифметическим кодированием. Необходимо отметить, что акустическая полоса, кодируемая при помощи различных режимов (LPD, FD) зависит от выбранного режима в отличие от того, что происходит в кодеке AMR-WB+, где режимы ACELP и ТСХ работают на одной и той же внутренней частоте дискретизации. Кроме того, принятие решения по режиму в кодеке USAC RM0 происходит в контуре без обратной связи (или “open-loop” на английском языке) для каждого фрейма из 1-24 отсчетов. Следует напомнить, что решением с обратной связью (“closed loop” на английском языке) называют решение, осуществляемое с параллельным выполнением различных режимов кодирования и с последующим выбором режима, который дает наилучший результат в соответствии с заранее определенным критерием. В случае решения без обратной связи решение принимают априори в зависимости от имеющихся в наличии данных и наблюдений, но не проверяют, является это решение оптимальным или нет.
th
В кодеке USAC переходы между режимами LPD и FD являются определяющими для обеспечения достаточного качества без дефекта переключения, зная, что каждый режим (ACELP, ТСХ, FD) имеет специфическую «сигнатуру» (с точки зрения артефактов) и что режимы FD и LPD существенно различаются: режим FD основан на кодировании с преобразованием в области сигнала, тогда как режимы LPD используют линейное предсказательное кодирование в области, перцептуально взвешенной при помощи запоминающих устройств фильтра, требующих правильного управления. Управление переключениями между режимами в кодеке USAC RM0 подробно описано в статье J. Lecomte et al., “Efficient cross-fade windows for transitions between LPC-based and non-LPC based audio coding”, 7-10 May 2009, 126 AES Convention. Как указано в этой статье, основная трудность заключается в переходах между режимами от LPD к FD и наоборот. В данном случае рассматриваются только переходы от ACELP к FD.
Чтобы лучше понять работу, следует напомнить принцип кодирования с преобразованием MDCT на типовом примере реализации.
В кодере преобразование MDCT подразделяется на три этапа:
- Взвешивание сигнала при помощи окна, называемого в данном случае «окном MDCT», длиной 2М
- Временное наложение (или “time-domain aliasing” на английском языке) для формирования блока длиной М
- Преобразование DCT (от “Discrete Cosine Transform” на английском языке) длиной М.
Окно MDCT делят на 4 смежных участка одинаковой длины М/2, называемых «четвертями».
Сигнал умножают на окно анализа, затем производят наложения: первую четверть (окна) накладывают (то есть, инвертируют во времени и располагают с перекрытием) на вторую четверть, а четвертую четверть накладывают на третью четверть.
В частности, наложение одной четверти на другую осуществляют следующим образом: первую выборку первой четверти складывают с (или вычитают из) последней выборкой (и) второй четверти, вторую выборку первой четверти складывают с (или вычитают из) предпоследней выборкой (и) второй четверти и так далее до последней выборки первой четверти, которую складывают с (или вычитают из) первой выборкой (и) второй четверти.
Таким образом, из 4 четвертей получают 2 наложенные четверти, в которых каждая выборка является результатом линейной комбинации из 2 отсчетов кодируемого сигнала. Эту линейную комбинацию называют временным наложением.
Эти 2 наложенные четверти затем кодируют вместе после преобразования DCT. Для следующего фрейма производят смещение на половину окна (то есть 50% перекрытия), при этом третья и четвертая четверти предыдущего фрейма становятся первой и второй четвертями текущего фрейма. После наложения отправляют вторую линейную комбинацию таких же пар отсчетов, как и в предыдущем фрейме, но с другими весовыми коэффициентами.
В декодере после обратного преобразования DCT получают декодированную версию этих наложенных сигналов. Два последовательных фрейма содержат результат 2-х разных наложений одних и тех же четвертей, то есть для каждой пары отсчетов получают результат 2-х линейных комбинаций с разными, но известными весовыми коэффициентами: следовательно решают систему уравнений для получения декодированной версии входного сигнала, поэтому временное наложение можно исключить, используя 2 последовательных декодированных фрейма.
Как правило, решение упомянутых систем уравнений осуществляют путем развертывания, умножения на правильно выбранное окно синтеза, затем путем сложения-перекрытия общих частей. Это сложение-перекрытие одновременно обеспечивает постепенный переход (без прерывистостей, связанных с погрешностями квантования) между двумя последовательными декодированными фреймами; действительно, эта операция производит впечатление плавного перехода. Когда окно для первой четверти или четвертой четверти находится на нуле для каждой выборки, то говорят о преобразовании MDCT без наложения во времени в этой части окна. В этом случае преобразование MDCT не обеспечивает постепенного перехода, который следует производить при помощи других средств, например, таких как внешний плавный переход.
Следует отметить, что существуют варианты применения преобразования MDCT, в частности, по определению преобразование DCT, по способу временного наложения преобразуемого блока (например, можно инвертировать знаки, применяемые для четвертей, накладываемых слева и справа, или накладывать вторую и третью четверти соответственно на первую и четвертую четверти) и т.д. Эти варианты не меняют принципа анализа-синтеза MDCT с уменьшением блока отсчетов при помощи применения окна, временного наложения, затем преобразования и, наконец, применения окна, наложения и сложения-перекрытия.
В случае кодера USAC RM0, описанного в статье Lecomte et al., переход между фреймом, кодируемым посредством кодирования ACELP, и фреймом, кодируемым посредством кодирования FD, происходит следующим образом.
Окно перехода для режима FD используют с перекрытием слева 128 отсчетов, как показано на фиг.1. Наложение во времени в этой зоне перекрытия аннулируют путем введения «искусственного» временного наложения справа воспроизводимого фрейма ACELP. Окно MDCT, служащее для перехода, имеет размер в 2304 отсчета, и преобразование DCT происходит на 1152 отсчетах, тогда как обычно фреймы в режиме FD кодируют при помощи окна размером 2048 отсчетов и преобразования DCT на 1024 отсчетах. Таким образом, преобразование MDCT в нормальном режиме FD напрямую не используют для переходного окна, и кодер должен включать в себя также модифицированную версию этого преобразования, что усложняет применение перехода для режима FD.
Эти известные методы кодирования AMR-WB+ или USAC имеют алгоритмические задержки порядка 100-200 мс. Эти задержки несовместимы с разговорными приложениями, для которых задержка кодирования обычно составляет 20-25 мс для кодеров речи в мобильных приложениях (например: GSM EFR, 3GPP AMR или AMR-WB) и примерно 40 мс в разговорных кодерах с преобразованием для видеоконференций (например: UIT-T G.722.1 Annexe С и G.719).
Таким образует, существует потребность в кодировании, чередующем методы предсказательного кодирования и кодирования с преобразованием для приложений кодирования звука с чередованиями речи и музыки при хорошем качестве как для речи, так и для музыки и с алгоритмической задержкой, совместимой с разговорными приложениями, как правило, порядка 20-40 мс для фреймов в 20 мс.
Эту ситуацию призвано улучшить настоящее изобретение.
В связи с этим изобретением предлагается способ кодирования цифрового звукового сигнала, содержащий следующие этапы:
- кодирование предыдущего фрейма отсчетов цифрового сигнала посредством предсказательного кодирования;
- кодирование текущего фрейма отсчетов цифрового сигнала посредством кодирования с преобразованием.
Способ осуществляют таким образом, что первую часть текущего фрейма кодируют путем предсказательного кодирования, сокращенного относительно предсказательного кодирования предыдущего фрейма путем повторного использования по меньшей мере одного параметра предсказательного кодирования предыдущего фрейма и кодирования только не используемые повторно параметры указанной первой части текущего фрейма.
Таким образом, при кодировании, в котором чередуют кодирование предсказательного типа и кодирование с преобразованием, во время перехода между фреймом, кодируемым путем предсказательного кодирования, и фреймом, кодируемым путем кодирования с преобразованием, предусматривают переходный фрейм. Тот факт, что первую часть текущего фрейма тоже кодируют путем предсказательного кодирования, позволяет получить части наложения, которые невозможно было получить только путем кодирования с преобразованием, так как память кодирования с преобразованием для этого переходного фрейма не доступна, поскольку предыдущий фрейм не был кодирован с преобразованием.
Дополнительное использование сокращенного предсказательного кодирования позволяет ограничить влияние на скорость кодирования этой части. Действительно, для части текущего фрейма, кодируемой путем сокращенного предсказательного кодирования, кодируют только не используемые повторно параметры предыдущего фрейма.
Кроме того, кодирование этой части фрейма не влечет за собой дополнительной задержки, так как эта первая часть находится в начале переходного фрейма.
Наконец, этот тип кодирования позволяет сохранять размер взвешивающего окна одинаковой длины для кодирования с преобразованием, как при кодирования переходного фрейма, так и при кодировании других фреймов, кодируемых с преобразованием. Следовательно, сложность способа кодирования уменьшается.
К этапам описанного выше способа можно добавить независимо или в комбинации различные описанные ниже частные варианты выполнения.
В частном варианте выполнения при сокращенном предсказательном кодировании используют предсказательный фильтр, скопированный с предыдущего фрейма предсказательного кодирования.
Использование кодирования с преобразованием обычно выбирают, когда кодируемые сегменты являются квази-стационарными. Так, параметр спектральной огибающей сигнала можно повторно использовать от одного фрейма к другому в течение времени продолжительности части фрейма, например, субфрейма, без существенного влияния на качество кодирования. Следовательно, использование предсказательного фильтра, использованного для предыдущего фрейма, не влияет на качество кодирования и позволяет отказаться от использования дополнительных бит для передачи его параметров.
В варианте выполнения при сокращенном предсказательном кодировании дополнительно используют декодированное значение питча и/или его коэффициента усиления, связанного с предыдущим фреймом предсказательного кодирования.
Эта параметры мало меняются от одного фрейма к другому. Использование одних и тех же параметров от одного фрейма к другому будет мало влиять на качество кодирования и к тому же упростит предсказательное кодирование субфрейма.
В другом варианте выполнения некоторые параметры предсказательного кодирования, используемые для сокращенного предсказательного кодирования, квантуют дифференцированно относительно декодированных параметров предыдущего фрейма предсказательного кодирования.
Это позволяет еще больше упростить предсказательное кодирование переходного субфрейма.
Согласно частному варианту выполнения, способ содержит этап получения восстановленных сигналов, полученных путем локального кодирования и декодирования, предсказательного и с преобразованием, для первого субфрейма текущего фрейма и комбинирования этих восстановленных сигналов при помощи плавного перехода.
Таким образом, переход кодирования в текущем фрейме является плавным и не приводит к появлению мешающих артефактов.
Согласно частному варианту выполнения, указанный плавный переход восстановленных сигналов осуществляют на участке первой части текущего фрейма в зависимости от формы взвешивающего окна кодирования с преобразованием.
Это способствует лучшей адаптации кодирования с преобразованием.
Согласно частному варианту выполнения, указанный плавный переход восстановленных сигналов осуществляют на участке первой части текущего фрейма, при этом указанный участок не содержит временного наложения.
Это позволяет осуществлять идеальное восстановление сигналов в отсутствие погрешности квантования в случае, когда восстановленный сигнал, полученный путем кодирования с преобразованием первой части текущего фрейма, не содержит временного наложения.
В частном варианте выполнения при кодировании с малой задержкой кодирование с преобразованием использует взвешивающее окно, содержащее выбранное число последовательных весовых коэффициентов, имеющих нулевое значение, в конце и в начале окна.
В другом частном варианте выполнения для улучшения кодирования со слабой задержкой кодирование с преобразованием использует асимметричное взвешивающее окно, содержащее выбранное число последовательных весовых коэффициентов нулевого значения, по меньшей мере, в конце окна.
Объектом настоящего изобретения является также способ декодирования цифрового звукового сигнала, содержащий следующие этапы:
- предсказательное декодирование предыдущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством предсказательного кодирования;
- декодирование с обратным преобразованием текущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством кодирования с преобразованием;
при этом способ дополнительно содержит этап декодирования первой части текущего фрейма посредством предсказательного декодирования, сокращенного относительно предсказательного декодирования предыдущего фрейма.
Способ декодирования соответствует способу кодирования и обеспечивает те же преимущества, которые были описаны для способа кодирования.
Так, в частном варианте выполнения, способ декодирования содержит этап комбинирования путем плавного перехода сигналов, декодированных с обратным преобразованием и посредством сокращенного предсказательного декодирования, по меньшей мере, для участка первой части текущего фрейма, принятого и кодированного посредством сокращенного предсказательного кодирования, с повторным использованием по меньшей мере одного параметра предсказательного декодирования предыдущего фрейма и с кодированием только параметров, принятых для указанной первой части текущего фрейма.
Согласно предпочтительному варианту, при сокращенном предсказательном декодировании используют предсказательный фильтр, декодированный и использованный при предсказательном декодировании предыдущего фрейма.
В варианте выполнения при сокращенном предсказательном декодировании дополнительно используют декодированное значение питча и/или его соответствующего весового коэффициента из предсказательного декодирования предыдущего фрейма.
Объектом настоящего изобретения является также кодер цифрового звукового сигнала, содержащий:
- модуль предсказательного кодирования для кодирования предыдущего фрейма отсчетов цифрового сигнала;
- модуль кодирования с преобразованием для кодирования текущего фрейма отсчетов цифрового сигнала. Кодер дополнительно одержит модуль предсказательного кодирования, сокращенного относительно предсказательного кодирования предыдущего фрейма, для кодирования первой части текущего фрейма с повторным использованием по меньшей мере одного параметра предсказательного кодирования предыдущего фрейма и кодированием только повторно не использованных параметров указанной первой части текущего фрейма.
Объектом изобретения является также декодер цифрового звукового сигнала, содержащий:
- модуль предсказательного декодирования для декодирования предыдущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством предсказательного кодирования;
- модуль декодирования с обратным предсказанием для декодирования текущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством кодирования с преобразованием. Декодер дополнительно содержит модуль предсказательного декодирования, сокращенного относительно предсказательного декодирования предыдущего фрейма, для декодирования первой части текущего фрейма, принятой и кодированной посредством сокращенного предсказательного кодирования, с повторным использованием по меньшей мере одного параметра предсказательного декодирования предыдущего фрейма и кодированием только параметров, принятых для указанной первой части текущего фрейма.
Наконец, объектом изобретения является компьютерная программа, содержащая команды кода для осуществления этапов описанного выше способа кодирования и/или описанного выше способа декодирования при исполнении указанных команд процессором.
Объектом изобретения является также средство записи данных, считываемое процессором, интегрированное или не интегрированное в кодер или декодер, в случае необходимости, съемное, хранящее компьютерную программу, осуществляющую описанные выше способ кодирования и/или способ декодирования.
Другие отличительные признаки и преимущества изобретения будут более очевидны из нижеследующего описания со ссылками на прилагаемые фигуры, на которых:
фиг.1 иллюстрирует пример известного переходного окна для перехода между кодированием ACELP и кодированием FD описанного выше кодека MDCT USAC;
фиг.2 иллюстрирует представленные в виде блок-схемы кодер и способ кодирования согласно варианту выполнения изобретения;
фиг.3a иллюстрирует пример взвешивающего окна, используемого для кодирования с преобразованием в соответствии с изобретением;
фиг.3b иллюстрирует вариант кодирования с преобразованием с перекрытием, применяемый в рамках изобретения;
фиг.4 иллюстрирует переход между фреймом, кодируемым посредством предсказательного кодирования, и фреймом, кодируемым с преобразованием, согласно варианту осуществления заявленного способа;
фиг.4b, 4c и 4d иллюстрируют переход между фреймом, кодируемым посредством предсказательного кодирования, и фреймом, кодируемым с преобразованием, согласно двум версиям заявленного способа;
фиг.4e иллюстрируют переход между фреймом, кодируемым посредством предсказательного кодирования, и фреймом, кодируемым с преобразованием, согласно одной из версий заявленного способа для случая, когда при преобразовании MDCT используют асимметричные окна;
фиг.5 иллюстрирует декодер и способ декодирования согласно варианту выполнения изобретения;
фиг.6a и 6b иллюстрируют в виде блок-схем основные этапы способа кодирования, соответственно способа декодирования в соответствии с изобретением;
фиг.7 иллюстрирует возможный вариант материального выполнения кодера и декодера в соответствии с изобретением.
На фиг.2 представлен мультирежимный кодер CELP/MDCT, в котором применяют заявленный способ кодирования.
На этой фигуре представлены этапы кодирования, осуществляемые для каждого фрейма сигнала. Входной сигнал, обозначенный x(n'), подвергают дискретизации по частоте 16 кГц, и длина фрейма составляет 20 мс. Изобретение охватывает также случаи, когда используют другие частоты дискретизации, например, для сигналов в расширенной полосе, подвергаемых дискретизации по частоте 32 кГц, возможно с разделением на две подполосы для применения изобретения в низкочастотном диапазоне. В данном случае длину фрейма выбирают таким образом, чтобы она соответствовала длине фреймов в мобильных кодерах, таких как 3GPP AMR и AMR-WB, хотя возможны также и другие значения длины (например: 10 мс).
Условно отсчеты текущего фрейма соответствуют x(n'), n'=0,…,319. Этот входной сигнал сначала фильтруют при помощи фильтра верхних частот (блок 200), чтобы подавить частоты ниже 50 Гц и убрать непрерывную составляющую, затем подвергают субдискретизации по внутренней частоте 12,8 кГц (блок 201) для получения фрейма сигнала s(n) из 256 отсчетов. Считается, что децимационный фильтр (блок 201) получают с небольшой задержкой при помощи фильтра с конечной импульсной характеристикой (обычно порядка 60).
В режиме кодирования CELP текущий фрейм s(n) из 256 отсчетов кодируют согласно предпочтительному варианту изобретения при помощи кодера CELP, разработанного по принципу многоскоростного кодирования ACELP (от 6,6 до 23,05 кбит/с) на 12,8 кГц, описанному в стандарте 3GPP TS 26.190 или эквивалентно UIT-T G.722.2 - этот алгоритм называют AMR-WB (от “Adaptive MultiRate - WideBand” на английском языке).
-1
Сначала сигнал s(n) предварительно выделяют (блок 210) по 1-αz при α=0,68, затем кодируют (блок 211) при помощи алгоритма ACELP (описанного в разделе 5 стандарта 3GPP TS 26.190).
Последовательные фреймы по 20 мс содержат 256 временных отсчетов на 12,8 кГц. При кодировании ACELP используют память (или буфер) buf(n), n=-64, …, 319 на 30 мс сигнала: 5 мс прошлого сигнала (“lookback” на английском языке), 20 мс текущего фрейма и 5 мс будущего сигнала (“lookahead” на английском языке).
Полученный после предварительного выделения сигнал s(n) копируют в буфер в положениях n=64, …, 319 таким образом, чтобы текущий фрейм, соответствующий положениям n=0, …, 255, включал в себя 5 мс прошлого сигнала (n=0, …, 63) и 15 мс предназначенного для кодирования «нового» сигнала (n=64, …, 255), - именно в определении буфера применяемое в данном случае кодирование CELP отличается от кодирования ACELP согласно стандарту AMR-WB, так как в данном случае “lookahead” равен точно 5 мс без компенсации задержки фильтра субдискретизации (блок 201).
При этом буфере кодирование CELP (блок 211) содержит несколько этапов осуществления аналогично кодированию ACELP по стандарту AMR-WB: основные этапы приведены здесь в качестве примера выполнения:
a) анализ LPC: асимметричное окно на 30 мс взвешивает буфер buf(n), затем происходит вычисление автокорреляции. Затем через алгоритм Левинсона-Дарбина вычисляют коэффициенты линейного предсказания (для порядка 16). Таким образом, получают фильтр линейного предсказания LPC A(z).
<mrow><mover accent="true"><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
Осуществляют конверсию коэффициентов LPC в спектральные коэффициенты ISP (“Immittance spectral pairs” на английском языке), а также квантование (которое дает квантованный фильтр
).
Наконец, для каждого субфрейма вычисляют фильтр LPC путем интерполяции по субфрейму между фильтром текущего фрейма и фильтром предыдущего фрейма. На этом этапе интерполяции предполагается, что прошлый фрейм был закодирован в режиме CELP, в противном случае предполагают, что состояния кодера CELP были обновлены.
-1
b) Перцептуальное взвешивание сигнала: предварительно выделенный сигнал взвешивают при помощи фильтра, определенного по W(z)=A(z/γ)/(1-αz), где α=0,68 и γ=0,92.
c) Вычисление питча в контуре без обратной связи с поиском максимума функции автокорреляции взвешенного сигнала (в случае необходимости, подвергнутого субдискретизации для уменьшения сложности).
d) Поиск «адаптивного возбуждения» с обратной связью путем анализа-синтеза среди значений вблизи питча, полученного в контуре без обратной связи для каждого из субфреймов текущего фрейма. Также осуществляют или не осуществляют фильтрование адаптивного возбуждения по нижним частотам. Чтобы указать на применение или не применение фильтра, выдают один бит. Этот поиск дает составляющую, обозначенную v(n). Питч и связанный с фильтром питча бит кодируют в двоичном потоке.
e) Поиск инновации или фиксированного возбуждения, обозначенного c(n), с обратной связью тоже путем анализа-синтеза. Это возбуждение состоит из нулей и знаковых импульсов, при этом положения и знаки этих импульсов кодируют в двоичном потоке.
<mrow><msub><mover accent="true"><mi>g</mi><mo>^</mo></mover><mi>p</mi></msub></mrow>
<mrow><msub><mover accent="true"><mi>g</mi><mo>^</mo></mover><mi>c</mi></msub></mrow>
f) В двоичном потоке кодируют одновременно весовые коэффициенты адаптивного возбуждения и алгебраического возбуждения, соответственно
,
.
В этом примере реализации кодер CELP делит каждый фрейм длиной 20 мс на 4 субфрейма по 5 мс, и квантованный фильтр LPC соответствует последнему (четвертому) субфрейму.
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mi>u</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mrow><mover><mi>g</mi><mo>^</mo></mover></mrow><mi>p</mi></msub><mi>ν</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><msub><mrow><mover><mi>g</mi><mo>^</mo></mover></mrow><mi>c</mi></msub><mi>c</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mn>1</mn><mo>/</mo><mover accent="true"><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
-1
Восстановленный сигнал
получают при помощи локального декодера, включенного в блок 211, путем воспроизведения возбуждения
, возможно пост-обработки u(n) и фильтрации при помощи квантованного фильтра синтеза
(как описано в разделе 5.10 нормы 3GPP TS 26.190). Наконец, этот сигнал подвергают дезакцентуации (блок 212) при помощи фильтра передаточной функции 1/(1-αz) для получения декодированного сигнала CELP
.
Разумеется, не выходя за рамки изобретения, кроме описанного выше варианта выполнения, можно применять и другие версии кодирования CELP.
В одной версии блок 211 соответствует кодированию CELP при 8 кбит/с, описанному в стандарте UIT-T G.718, в соответствии с 4 возможными режимами кодирования CELP: не звонким режимом (UC), звонким режимом (VC), переходным режимом (ТС) или родовым режимом (GC). В другой версии выбирают другой вариант кодирования CELP, например, кодирование ACELP в варианте взаимодействия с кодированием AMR-WB по стандарту UIT-T G.718. Отображение коэффициентов LPC в виде ISF можно заменить парами спектральных линий (LSF) или другими эквивалентными изображениями.
CELP
В случае выбора режима CELP блок 211 выдает индексы CELP, кодированные I, для уплотнения в двоичном потоке.
В режиме кодирования MDCT, представленном на фиг.2, текущий фрейм s(n), n=0, …, 255, сначала преобразуют (блок 220) согласно предпочтительному варианту выполнения для получения следующих преобразованных коэффициентов:
<mrow><mi>S</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msqrt><mrow><mfrac><mn>2</mn><mi>M</mi></mfrac></mrow></msqrt><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mi>M</mi><mi>z</mi></mrow><mrow><mn>2</mn><mi>M</mi><mo>−</mo><msub><mi>M</mi><mi>z</mi></msub><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mtext> </mtext><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>.</mo><mi>s</mi><mrow><mo>(</mo><mrow><mi>n</mi><mo>−</mo><msub><mi>M</mi><mi>z</mi></msub></mrow><mo>)</mo></mrow><mo>.</mo><mi>cos</mi><mrow><mo>(</mo><mrow><mfrac><mi>π</mi><mi>M</mi></mfrac><mrow><mo>(</mo><mrow><mi>n</mi><mo>+</mo><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>)</mo></mrow><mrow><mo>(</mo><mrow><mi>k</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow></mstyle></mrow>
, k=0, …, M-1
где М=256 является длиной фрейма, и Mz=96 является числом нулей слева и справа в окне w(n). В предпочтительном варианте выполнения окно w(n) выбирают как симметричное окно «низкой выдержки» в виде:
<mrow><msub><mi>w</mi><mrow><mi>s</mi><mi>h</mi><mi>i</mi><mi>f</mi><mi>t</mi></mrow></msub><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>0</mn><mo>≤</mo><mi>m</mi><mo><</mo><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>−</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mi>sin</mi><mrow><mo>(</mo><mrow><mi>π</mi><mfrac><mrow><mtable><mtr><mtd><mrow /></mtd></mtr><mtr><mtd><mrow><mi>m</mi><mo>−</mo><mover><mrow><mrow><mo>(</mo><mrow><mover><mrow><mfrac><mi>M</mi><mn>2</mn></mfrac></mrow><mrow /></mover><mo>−</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow><mo>)</mo></mrow></mrow><mrow /></mover><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mtd></mtr></mtable></mrow><mrow><mn>2</mn><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>−</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac><mo>≤</mo><mi>m</mi><mo><</mo><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac><mo>≤</mo><mi>m</mi><mo><</mo><mn>3</mn><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mi>sin</mi><mrow><mo>(</mo><mrow><mi>π</mi><mfrac><mrow><mtable><mtr><mtd><mrow /></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>m</mi><mo>−</mo><mn>3</mn><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mn>3</mn><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mtd></mtr></mtable></mrow><mrow><mtable><mtr><mtd><mrow><mn>2</mn><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow /></mtd></mtr></mtable></mrow></mfrac></mrow><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mn>3</mn><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>−</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac><mo>≤</mo><mi>m</mi><mo><</mo><mn>3</mn><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>3</mn><mfrac><mi>M</mi><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msub><mi>L</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><mn>2</mn></mfrac><mo>≤</mo><mi>m</mi><mo><</mo><mn>2</mn><mi>M</mi></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
shift
ov
shift
Это окно низкой выдержки w(m), m=0, …, 511, при M=256 и L=64, применяют для текущего фрейма, соответствующего индексам n=0, …, 255, принимая w(n)=w(n+96), что предполагает перекрытие 64 отсчетов (5 мс).
shift
Это окно показано на фиг.3a. Можно отметить, что окно имеет 2(M-Mz)=320 не нулевых отсчетов, то есть 25 мс при 12,8 кГц. На фиг.3b показано, как окно w(n) применяют для каждого временного фрейма в 20 мс, принимая w(n)=w(n+96).
Это окно применяют к текущему фрейму в 20 мс, а также к будущему сигналу “looahead” в 5 мс. Следует отметить, что кодирование MDCT синхронизировано с кодированием CELP, поскольку декодер MDCT может полностью воспроизвести текущий фрейм путем сложения-перекрытия, благодаря перекрытию слева и промежуточному «плоскому» участку окна MDCT, и использует также перекрытие на будущем фрейме в 5 мс. Для этого окна можно отметить, что в текущем фрейме MDCT происходит временное наложение на первую часть фрейма (по сути на первых 5 мс), где происходит перекрытие.
Необходимо отметить, что фреймы, воспроизводимые кодерами/декодерами CELP и MDCT, имеют совпадающие временные основы. Эта синхронизация во времени воспроизведений облегчает переключение моделей кодирования.
В версиях изобретения возможны также другие окна MDCT, отличные от w(n). В данном случае блок 220 детально не рассматривается. Соответствующий пример представлен в стандарте UIT-T G.718 (пункты 6.11.2 и 7.10.6).
tot
env
Кодирование коэффициентов S(k), k=0, …, 255, осуществляет блок 221, который в предпочтительном варианте выполнения исходит из кодирования “TDAC” (от “Time Domain Aliasing Cancellation” на английском языке) по стандарту UIT.T G.729.1. В данном случае B обозначает общее количество бит в каждом фрейме при кодировании MDCT. Дискретный спектр S(k) делят на подполосы, затем спектральную огибающую, соответствующую r.m.s (от “root mean square” на английском языке, то есть корень квадратный от среднего значения энергии) на подполосу, квантуют в логарифмической области по шагу в 3 дБ и кодируют посредством энтропийного кодирования. Количество бит, используемое при этом кодировании огибающей, обозначено B; оно является переменным по причине энтропийного кодирования.
inj
tot
tot
env
inj
MDCT
В отличие от кодирования “TDAC” из стандарта G.729.1 для кодирования уровней введения шума резервируют заранее определенное число бит, обозначаемое B (функция B), чтобы «заполнить» шумом коэффициенты, кодированные на нулевое значение, и замаскировать артефакты «музыкального шума», которые иначе будут ощущаться на слух. Затем подполосы спектра S(k) кодируют посредством сферического векторного квантования с оставшимся количеством B-B-B бит. Это квантование, а также адаптивное распределение бит по подполосам детально не описаны, так как эти подробности выходят за рамки изобретения. В случае выбора режима MDCT или переходного режима блок 221 выдает индексы MDCT, кодированные I, для уплотнения в двоичном потоке.
<mrow><mover accent="true"><mi>S</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Блок 222 декодирует двоичный поток, выдаваемый блоком 221, для воспроизведения декодируемого спектра
, k=0, …, 255. Наконец блок 223 воспроизводит текущий фрейм для нахождения сигнала
, n=0, …, 255.
Учитывая характер кодирования с преобразованием MDCT (перекрытие между фреймами), при кодировании MDCT текущего фрейма следует рассматривать два случая:
- Первый случай: Предыдущий фрейм был кодирован в режиме MDCT. В этом случае данные память (или состояния), необходимая для синтеза MDCT в локальном (и удаленном) декодере, доступны, и возможна операция сложения/перекрытия, применяемая в синтезе MDCT для аннулирования временного наложения. Происходит правильное декодирование фрейма MDCT по всей его протяженности. В данном случае речь идет о «нормальной» работе кодирования/декодирования MDCT.
- Второй случай: Предыдущий фрейм был кодирован в режиме CELP. В этом случае восстановление фрейма в декодере (локальном и удаленном) является неполным. Как было указано выше, MDCT использует для воспроизведения операцию сложения/перекрытия между текущим фреймом и предыдущим фреймом (с сохраненными в памяти состояниями) для устранения временного наложения декодируемого фрейма, а также чтобы избежать блоковых эффектов и увеличить частотное разрешение путем использования более длинных окон, чем фрейм. С наиболее часто применяемыми окнами MDCT (синусоидального типа) искажение сигнала, связанное с временным наложением, сильнее на конце окна и является почти нулевым в середине окна. В этом конкретном случае, если предыдущий фрейм является фреймом типа CELP, память MDCT не доступна, так как последний фрейм не был кодирован с преобразованием MDCT.
Наложенная зона начала фрейма соответствует зоне сигнала в фрейме MDCT, возмущенном временным наложением, характерным для преобразования MDCT.
Таким образом, если текущий фрейм кодируют в режиме MDCT (блоки 220-223) и предыдущий фрейм был кодирован в режиме CELP (блоки 210-212), необходима специальная обработка для перехода от CELP к MDCT.
В этом случае, как показано на фиг.4a, первый фрейм кодируют в режиме CELP, и его можно полностью воспроизвести при помощи декодера CELP (локального или удаленного). С другой стороны, второй фрейм кодируется в режиме MDCT; этот второй фрейм считают текущим фреймом. Зона перекрытия слева в окне MDCT создает проблему, так как дополняющая часть (с временным наложением) этого окна не доступна, поскольку предыдущий фрейм не был кодирован в MDCT. Следовательно, в этой левой части окна MDCT наложение устранить невозможно.
Для этого перехода способ кодирования в соответствии с изобретением содержит этап кодирования блока отсчетов длиной, меньшей или равной длине фрейма, выбранного, например, в качестве дополнительного субфрейма в 5 мс в текущем фрейме, кодируемом с преобразованием (MDCT), представляющего собой зону наложения слева текущего фрейма, при помощи переходного предсказательного кодирования или сокращенного предсказательного кодирования. Следует отметить, что тип кодирования в фрейме, предшествующем переходному фрейму MDCT, может быть другим типом кодирования, отличным от CELP, например, кодированием MICDA или кодированием ТСХ. Изобретение применимо для общего случая, когда предыдущий фрейм был кодирован посредством кодирования без обновления данных памяти MDCT в области сигнала, и предполагает кодирование блока отсчетов, соответствующего части текущего фрейма, посредством переходного кодирования с использованием данных кодирования предыдущего фрейма.
Переходное предсказательное кодирование является сокращенным по сравнению с предсказательным кодированием предыдущего фрейма; оно состоит в использовании стабильных параметров предыдущего фрейма, кодированного посредством предсказательного кодирования, и в кодировании только нескольких минимальных параметров для дополнительного субфрейма в текущем переходном фрейме.
Таким образом, это сокращенное предсказательное кодирование повторно использует, по меньшей мере, один параметр предсказательного кодирования предыдущего фрейма и кодирует только не используемые повторно параметры. В этом смысле можно говорить о сокращенном кодировании (с сокращением кодируемых параметров).
Варианты выполнения, представленные на фиг.4a-4e, предполагают, что перекрытие слева первого окна MDCT меньше или равно длине субфрейма (5 мс). В противном случае необходимо также кодировать один или несколько дополнительных субфреймов CELP и использовать адаптивные и/или фиксированные словари возбуждения размером, адаптированным к длине перекрытия.
На фиг.4a-4e штрихпунктирные линии (линии с чередованием штрихов и точек) соответствуют линиям наложения кодирования MDCT и линиям развертывания декодирования MDCT. Вверху на этих фигурах сплошные жирные линии разделяют фреймы на входе кодирующего устройства, и кодирование нового фрейма можно начать, когда определенный таким образом фрейм полностью является доступным. Необходимо отметить, что эти сплошные линии в кодере соответствуют не текущему фрейму, а блоку новых отсчетов, поступающему для каждого фрейма; по сути дела текущий фрейм претерпевает задержку в 5 мс. Внизу сплошные линии делят декодированные фреймы на выходе декодера.
pre
Специальная обработка переходного фрейма соответствует блокам 230-232 и блоку 240 на фиг.2. Эту обработку производят, если предыдущий режим, обозначенный mode, то есть тип кодирования предыдущего фрейма (CELP или MDCT) является кодированием типа CELP.
Кодирование текущего фрейма, переходного между кодированием CELP и MDCT (второй фрейм на фиг.4a-4e), основан на нескольких этапах, осуществляемых при помощи блока 231:
tot
env
inj
tot
env
inj
trans
trans
trans
<mrow><mn>1</mn><mo>/</mo><mover><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
- Кодирование MDCT фрейма: в примере выполнения, представленном на фиг.4a вверху, окно, выбранное для этого кодирования, является определенным ранее окном w(n) с реальной длиной 25 мс. Другие формы окон для замены w(n) в переходном фрейме MDCT (первый фрейм MDCT, следующий за фреймом CELP) показаны на фиг.4b, 4c, 4d и 4e с одинаковой реальной длиной, которая может отличаться от 25 мс. Для случая, представленного на фиг.4a, 20 мс текущего фрейма помещены в начале не нулевого участка окна, тогда как остающиеся 5 мс являются 5 первыми миллисекундами будущего фрейма (“lookahead”). Таким образом, после вычисления MDCT (посредством наложения и дискретно-косинусного преобразования (DCT)) получают 256 отсчетов спектра MDCT. В данном случае квантование этих коэффициентов производят посредством передачи спектральной огибающей и сферического векторного квантования для каждой нормализованной подполосы огибающей. Отличие от предыдущего описания «нормального» кодирования MDCT состоит в том, что количество бит, выделенное для векторного квантования в переходной фрейме, уже составляет не B-B-B, а B-B-B-B, где B является числом бит, необходимым для передачи недостающих данных с целью входного возбуждения фильтра
в переходном кодере. Это число бит B меняется в зависимости от общей пропускной способности кодера.
- Декодирование квантованного спектра (внизу на фиг.4а-4е): после реконструкции квантованного спектра и операции частичного обратного преобразования MDCT (посредством развертывания и умножения на окно синтеза, но без сложения-перекрытия, так как данные памяти не доступны на основании предыдущего фрейма) получают временной сигнал, в котором 5 первых миллисекунд (первый субфрейм) содержат временное наложение, затем 15 мс воспроизведенного сигнала, наконец, 5 последних миллисекунд, служащий для пополнения памяти MDCT, необходимого для воспроизведения следующего фрейма, если он является фреймом типа MDCT; в случае, если следующим фрейм является фреймом CELP, эта память, как правило, является бесполезной.
- Кодирование первого субфрейма (заштрихованная зона, обозначенная “TR” на фиг.4a-4e) посредством переходного кодирования, включающего в себя сокращенное предсказательное кодирование.
Это сокращенное предсказательное кодирование содержит следующие этапы.
<mrow><mover><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
<mrow><mover><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
Фильтр
получают, например, путем копирования фильтра
четвертого субфрейма предыдущего фрейма. За счет этого экономят на вычислении этого фильтра и экономят число бит, связанное с его кодированием в двоичном потоке.
<mrow><mn>1</mn><mo>/</mo><mover accent="true"><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
Этот выбор является оправданным, так как в кодеке с чередованием CELP и MDCT, как правило, режим MDCT выбирают в квази-стационарных сегментах, где кодирование является более эффективным в частотной области, чем во временной области. В момент переключения между режимами ACELP и MDCT эта стационарность уже является установленной, и можно предположить, что некоторые параметры, такие как спектральная огибающая, меняются лишь незначительно от фрейма к фрейму. Таким образом, можно эффективно повторно использовать квантованный фильтр синтеза
, переданный во время предыдущего фрейма, характеризующий спектральную огибающую сигнала.
Для этого первого переходного субфрейма вычисляют в контуре с обратной связью питч (позволяющий воспроизвести адаптивное возбуждение посредством использования прошлого возбуждения). Его кодируют в двоичном потоке, в случае необходимости, дифференцированно относительно питча последнего субфрейма CELP. На основании этого выводят адаптивное возбуждение w(n) (n=0, …, 63). В варианте можно также использовать значение питча последнего фрейма CELP без его передачи.
Выделяют один бит, чтобы указать было фильтровано или нет адаптивное возбуждение w(n) при помощи фильтра нижних частот коэффициентов (0.18, 0.64, 0.18). Вместе с тем, значение этого бита можно взять из последнего предыдущего фрейма CELP.
Поиск алгебраического возбуждения субфрейма осуществляют с обратной связью только для этого переходного субфрейма, и кодирование положений и знаков импульсов возбуждения производят в двоичном потоке, причем тоже с числом бит, которое зависит от пропускной способности кодера.
<mrow><msub><mover accent="true"><mi>g</mi><mo>^</mo></mover><mi>p</mi></msub></mrow>
<mrow><msub><mover accent="true"><mi>g</mi><mo>^</mo></mover><mi>c</mi></msub></mrow>
Коэффициенты
,
, соответственно связанные с адаптивным и алгебраическим возбуждением, кодируют в двоичном потоке. Число бит, выделяемое для этого кодирования, зависит от пропускной способности кодера.
tr
Например, при общей пропускной способности в 12,65 кбит/с 9 бит зарезервированы для кодирования по абсолютной величине питча субфрейма, 6 бит зарезервированы для кодирования коэффициента усиления, 52 бита предназначены для кодирования фиксированного возбуждения, и один бит указывает, было или не было фильтровано адаптивное возбуждение. Таким образом, резервируют B=68 бит (3.4 кбит/с) для кодирования этого переходного субфрейма, и, следовательно, остается 9.25 кбит/с для кодирования MDCT в переходном фрейме.
<mrow><mn>1</mn><mo>/</mo><mover accent="true"><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
TR
После получения и кодирования всех параметров можно генерировать недостающий субфрейм посредством возбуждения фильтра
при помощи полученного возбуждения. Блок 231 выдает также параметры сокращенного предсказательного кодирования, I, для уплотнения в двоичном потоке. Необходимо отметить, что блок 231 использует данные, обозначенные на фигуре Мет, кодирования (блок 211), осуществленного в фрейме, предшествующем переходному фрейму. Например, данные включают в себя параметры LPC и питч последнего субфрейма.
-1
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Затем полученный сигнал подвергают дезакцентуации (блок 232) при помощи фильтра 1/(1-αz) для получения воспроизведенного сигнала
n=0, …, 63 в первом субфрейме текущего фрейма перехода от CELP к MDCT.
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Наконец, остается комбинировать воспроизведенные сигналы
, n=0, …, 63 и
, n=0, …, 255. Для этого осуществляют постепенное линейное микширование (плавный переход или “cross-fade” на английском языке) между двумя сигналами, в результате чего получают следующий выходной сигнал (блок 240). Например, в первом варианте выполнения этот плавный переход осуществляют на первых 5 мс следующим образом, как показано на фиг.4а:
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>1</mn><mo>−</mo><mfrac><mi>n</mi><mrow><mn>64</mn></mrow></mfrac></mrow><mo>)</mo></mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mi>n</mi><mrow><mn>64</mn></mrow></mfrac><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,63</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>64,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Следует отметить, что плавный переход между двумя сигналами в данном случае составляет 5 мс, однако он может иметь и меньший размер. Если предположить, что кодер CELP и кодер MDCT обеспечивают идеальное или почти идеальное восстановление, то можно даже обойтись без плавного перехода, действительно, 5 первых миллисекунд фрейма закодированы идеально (посредством сокращенного CELP), и следующие 15 мс тоже кодируются идеально (при помощи кодера MDCT). Теоретически отпадает необходимость в сглаживании артефактов при помощи плавного перехода. В этом случае сигнал
можно записать проще:
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
n=0, …, 63
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
n=64, …, 255
В варианте, показанном на фиг.4b, окно заменено идентичным окном для анализа и для синтеза с прямоугольной формой без наложения слева
<mrow><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,31</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mi>n</mi><mo>=</mo><mn>32,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
В данном случае не уточняются случаи при n<0 и n>255. При n<0 значение w(n) является нулевым, а при n>255 окна определены окнами анализа и синтеза MDCT, используемыми для «нормального» кодирования MDCT.
Показанный на фиг 4b плавный переход осуществляют следующим образом:
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mrow><mo>(</mo><mrow><mn>1</mn><mo>−</mo><mfrac><mrow><mi>n</mi><mo>−</mo><mn>32</mn></mrow><mrow><mn>32</mn></mrow></mfrac></mrow><mo>)</mo></mrow><mtable><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><mi>n</mi><mo>−</mo><mn>32</mn></mrow><mrow><mn>32</mn></mrow></mfrac><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,31</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>32,</mn><mo>…</mo><mn>,63</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>64,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
В варианте на фиг.4c окно заменено идентичным окном для анализа и для синтеза с формой, включающей в себя первую часть нулевого значения на 1,25 мс, затем синусоидальный фронт на 2,5 мс и плоский участок унитарного значения на 1,25 мс:
<mrow><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mi>sin</mi><mrow><mo>(</mo><mrow><mfrac><mrow><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>−</mo><mn>15.5</mn></mrow></mtd></mtr></mtable></mrow><mrow><mtable><mtr><mtd><mrow><mn>32</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mrow></mfrac><mi>π</mi></mrow><mo>)</mo></mrow></mrow></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,15</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>16,</mn><mo>…</mo><mn>,47</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>48,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
В данном случае не уточняется при n<0 и n>255. При n<0 значение w(n) является нулевым, а при n>255 окна определены окнами анализа и синтеза MDCT, используемыми для «нормального» кодирования MDCT.
Показанный на фиг 4c плавный переход осуществляют следующим образом:
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mrow><mo>(</mo><mrow><mn>1</mn><mo>−</mo><mfrac><mrow><mi>n</mi><mo>−</mo><mn>48</mn></mrow><mrow><mn>16</mn></mrow></mfrac></mrow><mo>)</mo></mrow><mtable><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><mi>n</mi><mo>−</mo><mn>48</mn></mrow><mrow><mn>16</mn></mrow></mfrac><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,37</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>48,</mn><mo>…</mo><mn>,63</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>64,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
что свидетельствует об отсутствии временного наложения в зоне, где происходит плавный переход.
В варианте, показанном на фиг.4d и 4е, предполагается, что взвешивающее окно MDCT анализа и синтеза в текущем переходном фрейме (n=0, …, 255) получают следующим образом:
<mrow><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mi>sin</mi><mrow><mo>(</mo><mrow><mfrac><mrow><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>−</mo><mn>31.5</mn></mrow></mtd></mtr></mtable></mrow><mrow><mtable><mtr><mtd><mrow><mn>64</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mrow></mfrac><mi>π</mi></mrow><mo>)</mo></mrow></mrow></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,31</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>32,</mn><mo>…</mo><mn>,63</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>64,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
Следует отметить, что в данном случае не уточняется при n<0 и n>255. При n<0 значение w(n) является нулевым, а при n>255 окна определены окнами анализа и синтеза MDCT, используемыми для «нормального» кодирования MDCT.
Плавный переход осуществляют следующим образом, предположив, что:
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><msup><mrow><mi>cos</mi></mrow><mn>2</mn></msup><mtable><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><mi>n</mi><mo>−</mo><mn>31.5</mn></mrow><mrow><mn>64</mn></mrow></mfrac><mi>π</mi></mrow><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mtext> </mtext><mtable><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,31</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>32,</mn><mo>…</mo><mn>63</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>n</mi><mo>=</mo><mn>64,</mn><mo>…</mo><mn>,255</mn></mrow></mtd></mtr></mtable></mrow>
Следует отметить, что плавный переход, показанный на фиг.4b-4d, можно также использовать в конфигурации, показанной на фиг.4a. Преимуществом этого является то, что плавный переход происходит на части, декодированный в режиме MDCT, где погрешность, связанная с наложением, является наименьшей. При структуре, показанной на фиг.4a, больше приближаются к идеальному воспроизведению.
В примере выполнения считают, что кодер работает с решением о режиме с обратной связью.
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mi>s</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>−</mo><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mi>s</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>−</mo><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
-1
SEL
На основании оригинального сигнала на 12,8 кГц, s(n), n=0, …, 255, и сигналов, восстановленных при помощи каждого из режимов, CELP и MDCT,
и
, n=0, …, 255, принимают решение (блок 254) о режиме для текущего фрейма, вычисляя (блоки 250, 252) погрешности кодирования
и
, затем применив по субфреймам из 64 отсчетов (5 мс) перцептуальное взвешивание при помощи фильтра W(z)=A(z/γ)/(1-αz), где γ=0.92, коэффициенты которого сортируют из состояний кодирования CELP (блок 211), и, наконец, вычисляя критерий соотношения сигнала с шумом по сегментам (с 5 мс временной единицы). Подробное описание работы при решении с обратной связью (блок 254) опускается. Решение блока 254 кодируется (I) и уплотняется в двоичном потоке.
SEL
CELP
MDCT
TR
MDCT
Мультиплексор 260 комбинирует кодированное решение I и различные биты, поступающие из модулей кодирования в двоичном потоке bst, в зависимости от решения модуля 254: для фрейма CELP передают биты I, для фрейма MDCT - биты I и для фрейма перехода от CELP к MDCT - биты I и I.
Следует отметить, что решение о режиме можно также принимать без обратной связи или уточнять за пределами кодера без изменения сущности изобретения.
SEL
SEL
CEL
SEL
MDCT
MDCT
TR
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mi>u</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mrow><mover><mi>g</mi><mo>^</mo></mover></mrow><mi>p</mi></msub><mi>ν</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><msub><mrow><mover><mi>g</mi><mo>^</mo></mover></mrow><mi>c</mi></msub><mi>c</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mn>1</mn><mo>/</mo><mover accent="true"><mi>A</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>C</mi><mi>E</mi><mi>L</mi><mi>P</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mover accent="true"><mi>S</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
-1
На фиг.5 показан декодер согласно варианту выполнения изобретения. Демультиплексор (блок 511) принимает двоичный поток bst и сначала извлекает индекс режима I. Этот индекс задает работу модулей декодирования и переключателя 509. Если индекс I указывает на фрейм CELP, декодер CELP 501 активируется и декодирует индексы CELP I. Сигнал
, восстановленный декодером CELP 501 посредством воспроизведения возбуждения
, возможной пост-обработки u(n) и фильтрации квантованного фильтра синтеза
, подвергают дезакцентуации при помощи фильтра передаточной функции 1/(1-αz) (блок 502) для получения декодированного сигнала CELP
. Переключатель 509 выбирает этот сигнал
в качестве выходного сигнала на 12.8 кГц
. Если индекс I указывает на фрейм «чисто» MDCT или переходный фрейм, активируется декодер MDCT 503; он декодирует индексы MDCT I. На основании переданных индексов I блок 503 воспроизводит декодированный спектр
, k=0, …, 255, затем блок 504 воспроизводит текущий фрейм для нахождения сигнала
, n=0, …, 255. В переходном фрейме происходит также декодирование индексов I модулем 505. Необходимо отметить, что блок 505 использует данные, обозначенные на фигуре Мет, декодирования (блок 501), осуществленного в фрейме, предшествующем переходному фрейму. Например, данные включают в себя параметры LPC и параметры питча последнего субфрейма.
Таким образом, декодер повторно использует, по меньшей мере, один параметр предсказательного декодирования предыдущего фрейма для декодирования первой части переходного фрейма. Он использует также только параметры, полученные для этой первой части, которые соответствуют не использованным повторно параметрам.
-1
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
pre
Выход блока 505 подвергают дезакцентуации при помощи фильтра передаточной функции 1/(1-az) (блок 506) для получения сигнала
, воспроизведенного посредством сокращенного предсказательного кодирования. Эту обработку (блоки 505-507) производят, когда предыдущий режим, обозначенный mode, то есть тип декодирования предыдущего фрейма (CELP или MDCT) является режимом типа CELP.
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><mover accent="true"><mi>x</mi><mo>^</mo></mover><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
В переходном фрейме сигналы
и
комбинируют при помощи блока 507; как правило, операцию плавного перехода, описанную выше для кодера, в котором применяют изобретение, осуществляют в первой части фрейма для получения сигнала
. В случае фрейма «чисто» MDCT, то есть если текущий и предыдущий фреймы кодированы в MDCT,
. Переключатель 509 выбирает этот сигнал
в качестве выходного сигнала на 12.8 кГц
. Затем получают восстановленный сигнал
на 16 кГц путем передискретизации с 12.8 кГц на 16 кГц (блок 510). Считается, что эту смену частоты осуществляют при помощи фильтра с конечной импульсной характеристикой путем многофазной (порядка 60) фильтрации.
Таким образом, согласно заявленному способу кодирования, отсчеты, соответствующие первому субфрейму текущего фрейма, кодируемого с преобразованием, проходят кодирование в сокращенном предсказательном кодере за счет битов, доступных при кодировании с преобразованием (случай постоянной пропускной способности), или с увеличением передаваемого потока (случай переменной пропускной способности).
В варианте выполнения изобретения, представленном на фиг.4a, зону наложения используют только для плавного перехода, который обеспечивает постепенный и непрерывный переход между восстановлением CELP и восстановлением MDCT.
Следует отметить, что в варианте этот плавный переход можно осуществлять на второй части зоны наложения, где эффект наложения проявляется меньше. В этом варианте, показанном на фиг.4a, увеличение пропускной способности не приводит к идеальному воспроизведению, так как на часть сигнала, используемого для плавного перехода, влияет временное наложение.
Этот вариант не может быть прозрачным, даже если это возмущение при низкой скорости передачи является вполне приемлемым и, как правило, практически не ощутимо на слух по сравнению с ухудшением, характерным для кодирования с низкой скоростью передачи.
В другом варианте в фрейме MDCT, следующем сразу за фреймом CELP (переходный фрейм) (случай представлен на фиг.4b), можно применить преобразование MDCT без наложения слева с прямоугольным окном, начинающимся в середине субфрейма на линии наложения.
В части, показанной на фигуре в рамке и в заштрихованном виде, можно наблюдать изменение весовых коэффициентов составляющих CELP и MDCT в плавном переходе. В течение первых 2,5 мс переходного фрейма выход идентичен декодированному сигналу сокращенного предсказательного кодирования, затем в течение следующих 2.5 мс осуществляют переход, постепенно уменьшая весовой коэффициент составляющей CELP и увеличивая весовой коэффициент составляющей MDCT в зависимости от точного определения окна MDCT. Следовательно, переход происходит с использованием декодированного сигнала MDCT. Таким образом, можно получить прозрачное кодирование с увеличением скорости передачи. Однако использование прямоугольного окна может способствовать появлению блочных эффектов в присутствии шума кодирования MDCT.
На фиг.4c представлен другой вариант, в котором повышающаяся часть окна (с временным наложением) слева укорочена (например, до 2.5 мс), и, таким образом, 5 первых миллисекунд сигнала, воспроизводимого в режиме MDCT, содержат часть (1.25 мс) без наложения справа в этом первом субфрейме в 5 мс. Таким образом, «плоский» участок (то есть постоянное значение на 1 без наложения) окна MDCT простирается влево в субфрейме, кодированном посредством сокращенного предсказательного кодирования, если сравнить с конфигурацией, показанной на фиг.4a.
В части, показанной в рамке и заштрихованной на фиг.4c, тоже можно наблюдать изменение весовых коэффициентов составляющих CELP и MDCT в плавном переходе при этом варианте. Согласно данному примеру, в течение первых 3.75 миллисекунд выход идентичен сигналу, восстановленному посредством сокращенного предсказательного декодирования. Для этой зоны составляющую MDCT кодировать не нужно, так как ее не используют. Следовательно, для этой зоны форма окна взвешивания не имеет значения. Переход происходит в течение последних 1.25 мс с постепенным уменьшением весового коэффициента CELP и с увеличением весового коэффициента MDCT. За счет этого обеспечивают идеальное восстановление с высокой скоростью передачи, то есть при отсутствии погрешности квантования, так как зона, возмущенная наложением, не касается плавного перехода. Плавный переход этих восстановленных сигналов осуществляют на части окна, где восстановленный сигнал, получаемый в результате кодирования с преобразованием первой части текущего фрейма, не содержит временного наложения. Преимуществом этого варианта по сравнению с вариантом, показанным на фиг.4b, является лучшее спектральное свойство используемого окна и уменьшение блочных эффектов, без прямоугольной части.
Следует отметить, что вариант, показанный на фиг.4b, является крайним случаем варианта, показанного на фиг.4c, где повышающаяся часть окна (с временным наложением) слева укорочена до 0. В другом варианте изобретения длина повышающейся части окна (с временным наложением) слева зависит от пропускной способности: например, она становится короче с повышением скорости передачи. Используемые в этом случае весовые коэффициенты плавного перехода можно адаптировать к выбранному окну.
На фиг.4a, 4b и 4c показаны окна MDCT с низкой задержкой (“low delay”), которые содержат выбранное число последовательных весовых коэффициентов нулевого значения в конце и в начале окна. Изобретение можно применять также для случая, когда используют классические (синусоидальные) окна взвешивания MDCT.
В приведенных выше примерах плавный переход представлен с линейными весовыми коэффициентами. Разумеется, можно также использовать другие функции изменения весовых коэффициентов, например, такие как фронт синусоидальной функции. Как правило, весовой коэффициент другой составляющей всегда выбирают таким образом, чтобы сумма двух весовых коэффициентов была всегда равна единице.
Следует также отметить, что весовой коэффициент плавного перехода составляющей MDCT можно интегрировать во взвешивающее окно синтеза MDCT переходного фрейма для всех представленных вариантов, умножая взвешивающее окно синтеза MDCT на весовой коэффициент плавного перехода, что позволяет уменьшить сложность вычисления.
В этом случае переход между составляющей сокращенного предсказательного кодирования и составляющей кодирования с преобразованием осуществляют путем сложения, с одной стороны, составляющей предсказательного кодирования, умноженной на весовой коэффициент плавного перехода, и, с другой стороны, полученной таким образом составляющей кодирования с преобразованием без дополнительного взвешивания при помощи весовых коэффициентов. Кроме того, в случае варианта, представленного на фиг.4b, интегрирование весового коэффициента плавного перехода можно произвести во взвешивающем окне анализа. Это предпочтительно можно осуществить в варианте, показанном на фиг.4b, так как зона плавного перехода полностью находится в части без наложения фрейма, и первоначальное взвешивающее окно анализа имело нулевое значение для предыдущих отсчетов зоны наложения.
Этот подход представляет еще больший интерес, если использовать весовой коэффициент синусоидального плавного перехода, так как это позволяет существенно улучшить спектральные свойства взвешивающего окна анализа по сравнению с прямоугольным окном (левая сторона) на фиг.4b или по сравнению с треугольным окном с линейными весовыми коэффициентами. Еще предпочтительнее одно и то же окно можно использовать как окно анализа и синтеза MDCT, что уменьшает необходимый объем памяти. Этот вариант показан на фиг.4d.
На этой фигуре видно, что повышающаяся часть взвешивающего окна анализа/синтеза перехода находится в зоне без наложения (после линии наложения). В данном случае эта повышающаяся часть определена как четверть синусоидального цикла, поэтому комбинированный эффект окон анализа/синтеза имплицитно дает весовые коэффициенты плавного перехода в виде синуса в квадрате. Эта повышающаяся часть служит одновременно для использования окон MDCT и для плавного перехода. Весовые коэффициенты плавного перехода для составляющей сокращенного предсказательного кодирования являются дополняющими по отношению к повышающейся части комбинированных взвешивающих окон анализа/синтеза таким образом, что сумма двух весовых коэффициентов всегда дает 1 в зоне, где происходит плавный переход. Для примера окон анализа/синтеза MDCT с повышающейся частью, определяемой как четверть синусоидального цикла, весовые коэффициенты плавного перехода для составляющей сокращенного предсказательного кодирования имеют вид косинуса в квадрате (1 минус синус в квадрате). Таким образом, весовые коэффициенты плавного перехода интегрированы одновременно во взвешивающее окно анализа и синтеза переходного фрейма. Вариант, представленный на фиг.4d, позволяет добиться идеального воспроизведения с высокой пропускной способностью, так как плавный переход происходит в зоне без временного наложения.
Изобретение применяется также для случая, когда окна MDCT являются асимметричными, и для случая, когда окна MDCT анализа и синтеза не являются идентичными, как в стандарте UIT-T G.718. Такой пример представлен на фиг.4e. В этом примере левая сторона переходного окна MDCT (на фигуре показано сплошной жирной линией) и весовые коэффициенты плавного перехода такие же, как и на фиг.4d. Разумеется, в левой части переходного окна можно также использовать окно и плавный переход, соответствующие другим уже представленным (например, на фиг.4a-4c) вариантам выполнения.
На фиг.4e для асимметричных окон MDCT видно, что в кодере правая часть переходного окна анализа идентичная правой части обычно используемого окна анализа MDCT и что в декодере правая часть переходного окна синтеза идентичная правой части обычно используемого окна анализа MDCT. Что касается левой стороны взвешивающего переходного окна MDCT, то используют левую часть одного из переходных окон, уже представленных на фиг.4a-4d (в примере на фиг.4e используют окно, показанное на фиг.4e).
Весовой коэффициент плавного перехода выбирают в зависимости от используемого окна, что было подробно представлено в ранее описанных вариантах выполнения изобретения (например, на фиг.4a-4d).
В целом, согласно изобретению, для составляющей MDCT в переходном фрейме левую половину используемого взвешивающего окна анализа MDCT выбирают таким образом, чтобы правая часть зоны, соответствующей этой половине окна, не содержала временного наложения (например, согласно одному из примеров на фиг.4a-4e), и левую половину соответствующего взвешивающего окна синтеза MDCT выбирают таким образом, чтобы после комбинированного эффекта окон анализа и синтеза эта зона без наложения имела весовой коэффициент 1, по меньшей мере, с правой стороны (без какого-либо подавления). На фиг.4a-4e показаны примеры пар окон анализа и синтеза, которые отвечают этим критериям. Согласно этим примерам, левая половина переходного взвешивающего окна MDCT идентична для анализа и для синтезу, но это не обязательно происходит во всех вариантах изобретения. Например, можно отметить, что форма окна синтеза в зоне, где весовой коэффициент составляющей MDCT в плавном переходе является нулевым, не имеет значения, так как эти отсчеты не будут использованы, ее даже не нужно вычислять. С другой стороны, участие окон анализа и синтеза в весовых коэффициентах плавного перехода можно также распределить неравномерно, в результате чего окна анализа и синтеза являются разными в левой половине переходного взвешивающего окна MDCT. Что касается правой половины переходных окон анализа и синтеза, они являются идентичными с взвешивающими окнами MDCT, обычно используемыми в зонах, кодируемых только посредством кодирования с преобразованием. Для обеспечения идеального воспроизведения при отсутствии погрешности квантования (с очень высокой скоростью передачи) плавный переход между сигналом, воспроизводимым сокращенным предсказательным декодером, и сигналом, воспроизводимым декодером с преобразованием, необходимо осуществлять в зоне без временного наложения. Комбинированный эффект окон анализа и синтеза может имплицитно включать в себя весовые коэффициенты плавного перехода составляющей, воспроизводимой декодером с преобразованием.
Для ограничения влияния на скорость передачи бит, выделенных для кодирования MDCT, предпочтительно использовать как можно меньше бит для сокращенного предсказательного кодирования с обеспечением хорошего качества. В кодеке, в котором чередуются CELP и MDCT, режим MDCT обычно выбирают в квази-стационарных сегментах, где кодирование в частотной области является более эффективным, чем во временной области. Вместе с тем, можно рассматривать также случаи, когда решение о режиме принимают в контуре без обратной связи или эти решением управляют вне кодера, без гарантии проверки гипотезы стационарности.
В момент переключения между режимами ACELP и MDCT обычно эта стационарность уже установлена, и можно предположить, что некоторые параметры, такие как спектральная огибающая, меняются очень незначительно от фрейма к фрейму. Так, квантованный фильтр синтеза 1/A(z), переданный во время предыдущего время, характеризующий спектральную огибающую сигнала, можно использовать повторно, чтобы сэкономить биты для кодирования MDCT. При этом используют последний фильтр синтеза, переданный в режиме CELP (наиболее близкий к кодируемому сигналу).
Данными, используемыми для кодирования сигнала в переходном фрейме, являются: питч (связанный с долгосрочным возбуждением), вектор возбуждения (или инновация), а также коэффициент(ы) усиления, связанный(ые) с возбуждением.
В другом варианте выполнения изобретения декодированное значение питча и/или его коэффициент усиления, связанный с последним субфреймом, можно тоже использовать повторно, так как эти параметры меняются тоже медленно в стационарных зонах. За счет этого еще больше уменьшают количество информации, передаваемое во время перехода от CELP к MDCT.
В варианте выполнения можно также квантовать эти параметры дифференцированно на небольшом количестве бит по сравнению с параметрами, декодируемыми в последнем субфрейме предыдущего фрейма CELP. В этом случае кодируют только поправку, которая характеризует медленное изменение этих параметров.
Одним из желательных свойств перехода от CELP к MDCT является то, что при асимптотически высокой скорости передачи кодирование, осуществляемое в переходном фрейме (фрейм MDCT, следующий за фреймом CELP), должно быть практически с идеальным восстановлением. Варианты, показанные ан фиг.4b и 4c, обеспечивают почти идеальное восстановление при очень высокой скорости передачи.
В целях обеспечения равномерности качества число бит, выделяемое для этих параметров сокращенного предсказательного кодирования, может быть переменным и пропорциональным общей скорости передачи.
Чтобы ограничить эффекты перехода от одного типа кодирования к другому, осуществляют постепенный переход между частью сигнала, кодируемой посредством предсказательного кодирования, и остальной частью фрейма, кодируемой с преобразованием (плавный переход, “fade-in” для составляющей кодирования с преобразованием, “fade-out” для предсказательной составляющей). Для достижения прозрачного качества этот плавный переход необходимо осуществлять на сигнале, декодируемом в MDCT без наложения.
Кроме вариантов, показанных на фиг.4b и 4c, в дополнительном варианте для обеспечения возможной прозрачности при высокой скорости передачи принцип кодирования MDCT изменяют таким образом, чтобы не использовать никакого временного наложения слева в окне MDCT переходного фрейма. Этот вариант предполагает использование измененной версии преобразования DCT внутри преобразования MDCT, так как длина наложенного сигнала является другой, учитывая, что временное наложение (с уменьшением размера блока) происходит только справа.
Следует отметить, что изобретение было описано со ссылками на фиг.4a-4d для упрощенного случая окон анализа и синтеза MDCT, идентичных в каждом фрейме (за исключением переходного фрейма), В вариантах изобретения окно MDCT может быть асимметричным, как показано на фиг.4e. Кроме того, кодирование MDCT может использовать переключение окон, по меньшей мере, между одним «длинным» окном обычно размером 20-40 мс и рядом коротких окон обычно размером 5-10 мс (“window switching” на английском языке).
Кроме того, можно также предусмотреть другие варианты в случае, когда выбор режимов CELP/ MDCT не является оптимальным, и гипотеза стационарности сигнала в переходном фрейме не проверяется, а повторное использование параметров последнего фрейма CELP (PLC, питч) может привести к ощущаемым на слух ухудшениям. Для таких случаев изобретение предусматривает передачу, по меньшей мере, одного бита для указания переходного режима, отличного от описанного выше способа, чтобы сохранить больше параметров CELP и/или субфреймов CELP, кодируемых в фрейме перехода от CELP к MDCT. Например, первый бит может указывать на то, что в массиве двоичного потока кодирован фильтр LPC или что последнюю принятую версию можно использовать в декодере, а другой бит может указать то же самое для значения питча. В случае, когда считают необходимым кодировать параметр, это можно сделать дифференцировано по отношению к значению, переданному в последнем фрейме.
Таким образом, в целом, в соответствии с описанными выше вариантами выполнения заявленный способ кодирования можно представить в виде блок-схемы, показанной на фиг.6a.
Для кодируемого сигнала s(n) на этапе Е601 убеждаются, что он соответствует случаю, когда текущий фрейм необходимо кодировать посредством кодирования с преобразованием и когда предыдущий фрейм был кодирован посредством предсказательного кодирования. Таким образом, текущий фрейм является переходным фреймом между предсказательным кодированием и кодированием с преобразованием.
На этапе Е602 для первой части текущего фрейма применяют сокращенное предсказательное кодирование. Это предсказательное кодирование сокращено относительно предсказательного кодирования, использованного для предыдущего фрейма.
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
В результате этого этапа сокращенного предсказательного кодирования получают сигнал
.
Кодирование MDCT текущего фрейма осуществляют на этапе Е603 параллельно для всего текущего фрейма.
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
В результате этого этапа кодирования с преобразованием получают сигнал
.
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Согласно описанным вариантам выполнения изобретения, способ содержит этап комбинирования с плавным переходом на этапе Е604 после воспроизведения сигналов, что позволяет осуществить плавный переход между предсказательным кодированием и кодированием с преобразованием в переходном фрейме. В результате этого этапа получают сигнал
.
Точно так же со ссылками на фиг.6b описан способ декодирования в соответствии с изобретением.
Если во время декодирования предыдущий фрейм был декодирован согласно методу декодирования предсказательного типа, а текущий фрейм следует декодировать согласно методу декодирования с преобразованием (проверка на этапе Е605), способ декодирования содержит этап декодирования посредством сокращенного предсказательного декодирования первой части текущего фрейма на этапе Е606. Он содержит также этап декодирования с преобразованием текущего фрейма на этапе Е607.
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>T</mi><mi>R</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>˜</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
<mrow><msub><mover accent="true"><mi>s</mi><mo>^</mo></mover><mrow><mi>M</mi><mi>D</mi><mi>C</mi><mi>T</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow>
Затем, согласно описанным выше вариантам выполнения, осуществляют этап Е608 для осуществления комбинирования полученных декодированных сигналов, соответственно
и
, при помощи плавного перехода на всем или на части текущего фрейма и для получения декодированного сигнала
текущего фрейма.
Наконец, изобретение было представлено для специфического случая перехода от CELP к MDCT. Разумеется, это изобретение можно также применять для случая, когда кодирование CELP заменено другим типом кодирования, таким как MICDA, ТСХ, или когда на части переходного фрейма осуществляют переходное кодирование с использованием данных кодирования фрейма, предшествующего переходному фрейму MDCT.
Со ссылками на фиг.7 описано материальное устройство, выполненное с возможностью реализации кодера или декодера согласно варианту выполнения настоящего изобретения.
Это устройство DISP содержит вход для приема цифрового сигнала SIG, который в случае кодера является входным сигналом x(n') и в случае декодера является двоичным потоком bst.
Устройство содержит также процессор PROC для цифровых сигналов, выполненный с возможностью осуществления операции кодирования/декодирования, в частности, на сигнале, поступающем от входа Е.
Этот процессор связан с одним или несколькими блоками памяти MEM, выполненными с возможностью хранения данных, необходимых для управления устройством с целью кодирования/декодирования. Например, эти блоки памяти содержат команды для осуществления описанного вше способа кодирования и, в частности, для осуществления этапов кодирования предыдущего фрейма отсчетов цифрового сигнала посредством предсказательного кодирования, кодирования текущего фрейма отсчетов цифрового сигнала посредством кодирования с преобразованием таким образом, чтобы первую часть текущего фрейма кодировать посредством сокращенного предсказательного кодирования по сравнению с предсказательным кодированием предыдущего фрейма, если устройство представляет собой кодер.
Когда устройство является декодером, эти блоки памяти содержат команды для осуществления описанного вше способа декодирования и, в частности, для осуществления этапов предсказательного декодирования предыдущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством предсказательного кодирования, декодирования текущего фрейма отсчетов цифрового сигнала, принятого и кодированного посредством кодирования с преобразованием, и дополнительно этапа декодирования посредством сокращенного предсказательного декодирования по сравнению с предсказательным декодированием первой части текущего фрейма.
Эти блоки памяти могут также содержать параметры вычисления или другие данные.
В целом, средство хранения данных, считываемое процессором, интегрированное или не интегрированное в кодер или в декодер, в случае необходимости, выполненное съемным, содержит записанную компьютерную программу, осуществляющую способ кодирования и/или способ декодирования в соответствии с изобретением. Фиг.6a и 6b могут, например, иллюстрировать алгоритм такой компьютерной программы.
<mrow><mover accent="true"><mi>x</mi><mo>^</mo></mover><mrow><mo>(</mo><mrow><mi>n</mi><mo>'</mo></mrow><mo>)</mo></mrow></mrow>
Процессор выполнен также с возможностью сохранения результатов в этих блоках памяти. Наконец, устройство содержит выход S, связанный с процессором, для выдачи выходного сигнала SIG*, который в случае кодера является сигналом в виде двоичного потока bst и в случае декодера является выходным сигналом
.