Кодирование звука с малой задержкой, содержащее чередующиеся предсказательное кодирование и кодирование с преобразованием
Иллюстрации
Показать всеИзобретение относится к средствам кодирования цифрового звукового сигнала. Технический результат заключается в сокращении количества бит, необходимого для передачи закодированного сигнала без изменения качества кодирования. Кодируют предыдущий фрейм отсчетов цифрового сигнала посредством предсказательного кодирования. Кодируют текущий фрейм отсчетов цифрового сигнала посредством кодирования с преобразованием. Способ осуществляют таким образом, что первую часть текущего фрейма дополнительно кодируют посредством предсказательного кодирования, сокращенного относительно предсказательного кодирования предыдущего фрейма посредством повторного использования по меньшей мере одного параметра предсказательного кодирования предыдущего фрейма и кодирования только не используемых повторно параметров указанной первой части текущего фрейма. Объектом изобретения является также способ декодирования, соответствующий описанному способу кодирования. Его объектом являются также кодер и декодер, в которых соответственно применяют описанные способы кодирования и декодирования. 6 н. и 11 з.п. ф-лы, 13 ил.
Реферат
Настоящее изобретение относится к области кодирования цифровых сигналов.
Предпочтительно изобретение находит свое применение в кодировании звуков с чередованием речи и музыки.
Для эффективного кодирования речевых звуков рекомендованы методы типа CELP (“Code Excited Linear Prediction”). Для эффективного кодирования музыкальных звуков более предпочтительными являются методы кодирования с преобразованием.
Кодеры типа CELP являются предсказательными кодерами. Они предназначены для моделирования производства речи на основании различных элементов: краткосрочное линейное предсказание для моделирования голосового канала, долгосрочное предсказание для моделирования вибрации голосовых связок в звонком периоде и возбуждение, производное от стационарного словаря (белый шум, алгебраическое возбуждение), для характеристики «инновации», которая не была моделирована.
В наиболее распространенных кодерах с преобразованием (например, кодер MPEG ААС или ITU-T G.722.1 Annexe С) используют преобразования с критической дискретизацией, чтобы уплотнить сигнал в области преобразования. «Преобразованием с критической дискретизацией» называют преобразование, при котором число коэффициентов в области преобразования равно числу анализируемых временных отсчетов.
Решение для эффективного кодирования сигнала, содержащего эти два типа контента, состоит в выборе наилучшего метода в течение времени. В частности, это решение было рекомендовано организацией по стандартизации 3GPP (“3rd 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, не относятся к разговорным, а соответствуют сервисам передачи и запоминания без строгих требований по алгоритмической задержке.
Первоначальная версия кодека 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, 126th 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” на английском языке) называют решение, осуществляемое с параллельным выполнением различных режимов кодирования и с последующим выбором режима, который дает наилучший результат в соответствии с заранее определенным критерием. В случае решения без обратной связи решение принимают априори в зависимости от имеющихся в наличии данных и наблюдений, но не проверяют, является это решение оптимальным или нет.
В кодеке 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, 126th 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” на английском языке).
Сначала сигнал s(n) предварительно выделяют (блок 210) по 1-αz-1 при α=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).
Осуществляют конверсию коэффициентов LPC в спектральные коэффициенты ISP (“Immittance spectral pairs” на английском языке), а также квантование (которое дает квантованный фильтр A ^ ( z ) ).
Наконец, для каждого субфрейма вычисляют фильтр LPC путем интерполяции по субфрейму между фильтром текущего фрейма и фильтром предыдущего фрейма. На этом этапе интерполяции предполагается, что прошлый фрейм был закодирован в режиме CELP, в противном случае предполагают, что состояния кодера CELP были обновлены.
b) Перцептуальное взвешивание сигнала: предварительно выделенный сигнал взвешивают при помощи фильтра, определенного по W(z)=A(z/γ)/(1-αz-1), где α=0,68 и γ=0,92.
c) Вычисление питча в контуре без обратной связи с поиском максимума функции автокорреляции взвешенного сигнала (в случае необходимости, подвергнутого субдискретизации для уменьшения сложности).
d) Поиск «адаптивного возбуждения» с обратной связью путем анализа-синтеза среди значений вблизи питча, полученного в контуре без обратной связи для каждого из субфреймов текущего фрейма. Также осуществляют или не осуществляют фильтрование адаптивного возбуждения по нижним частотам. Чтобы указать на применение или не применение фильтра, выдают один бит. Этот поиск дает составляющую, обозначенную v(n). Питч и связанный с фильтром питча бит кодируют в двоичном потоке.
e) Поиск инновации или фиксированного возбуждения, обозначенного c(n), с обратной связью тоже путем анализа-синтеза. Это возбуждение состоит из нулей и знаковых импульсов, при этом положения и знаки этих импульсов кодируют в двоичном потоке.
f) В двоичном потоке кодируют одновременно весовые коэффициенты адаптивного возбуждения и алгебраического возбуждения, соответственно g ^ p , g ^ c .
В этом примере реализации кодер CELP делит каждый фрейм длиной 20 мс на 4 субфрейма по 5 мс, и квантованный фильтр LPC соответствует последнему (четвертому) субфрейму.
Восстановленный сигнал s ^ C E L P ( n ) получают при помощи локального декодера, включенного в блок 211, путем воспроизведения возбуждения u ( n ) = g ^ p ν ( n ) + g ^ c c ( n ) , возможно пост-обработки u(n) и фильтрации при помощи квантованного фильтра синтеза 1 / A ^ ( z ) (как описано в разделе 5.10 нормы 3GPP TS 26.190). Наконец, этот сигнал подвергают дезакцентуации (блок 212) при помощи фильтра передаточной функции 1/(1-αz-1) для получения декодированного сигнала CELP s ^ C E L P ( n ) .
Разумеется, не выходя за рамки изобретения, кроме описанного выше варианта выполнения, можно применять и другие версии кодирования 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 блок 211 выдает индексы CELP, кодированные ICELP, для уплотнения в двоичном потоке.
В режиме кодирования MDCT, представленном на фиг.2, текущий фрейм s(n), n=0, …, 255, сначала преобразуют (блок 220) согласно предпочтительному варианту выполнения для получения следующих преобразованных коэффициентов:
S ( k ) = 2 M ∑ n = M z 2 M − M z − 1 w ( n ) . s ( n − M z ) . cos ( π M ( n + M 2 + 1 2 ) ( k + 1 2 ) ) , k=0, …, M-1
где М=256 является длиной фрейма, и Mz=96 является числом нулей слева и справа в окне w(n). В предпочтительном варианте выполнения окно w(n) выбирают как симметричное окно «низкой выдержки» в виде:
w s h i f t ( m ) = { 0 0 ≤ m < M 2 − L o v 2 sin ( π m − ( M 2 − L o v 2 ) + 1 2 2 L o v ) M 2 − L o v 2 ≤ m < M 2 + L o v 2 1 M 2 + L o v 2 ≤ m < 3 M 2 + L o v 2 sin ( π ( m − 3 M 2 + 3 L o v 2 ) + 1 2 2 L o v ) 3 M 2 − L o v 2 ≤ m < 3 M 2 + L o v 2 0 3 M 2 + L o v 2 ≤ m < 2 M
Это окно низкой выдержки wshift(m), m=0, …, 511, при M=256 и Lov=64, применяют для текущего фрейма, соответствующего индексам n=0, …, 255, принимая w(n)=wshift(n+96), что предполагает перекрытие 64 отсчетов (5 мс).
Это окно показано на фиг.3a. Можно отметить, что окно имеет 2(M-Mz)=320 не нулевых отсчетов, то есть 25 мс при 12,8 кГц. На фиг.3b показано, как окно w(n) применяют для каждого временного фрейма в 20 мс, принимая w(n)=wshift(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).
Кодирование коэффициентов S(k), k=0, …, 255, осуществляет блок 221, который в предпочтительном варианте выполнения исходит из кодирования “TDAC” (от “Time Domain Aliasing Cancellation” на английском языке) по стандарту UIT.T G.729.1. В данном случае Btot обозначает общее количество бит в каждом фрейме при кодировании MDCT. Дискретный спектр S(k) делят на подполосы, затем спектральную огибающую, соответствующую r.m.s (от “root mean square” на английском языке, то есть корень квадратный от среднего значения энергии) на подполосу, квантуют в логарифмической области по шагу в 3 дБ и кодируют посредством энтропийного кодирования. Количество бит, используемое при этом кодировании огибающей, обозначено Benv; оно является переменным по причине энтропийного кодирования.
В отличие от кодирования “TDAC” из стандарта G.729.1 для кодирования уровней введения шума резервируют заранее определенное число бит, обозначаемое Binj (функция Btot), чтобы «заполнить» шумом коэффициенты, кодированные на нулевое значение, и замаскировать артефакты «музыкального шума», которые иначе будут ощущаться на слух. Затем подполосы спектра S(k) кодируют посредством сферического векторного квантования с оставшимся количеством Btot-Benv-Binj бит. Это квантование, а также адаптивное распределение бит по подполосам детально не описаны, так как эти подробности выходят з