МАСШТАБИРУЕМОЕ КОДИРОВАНИЕ РЕЧИ И АУДИО С ИСПОЛЬЗОВАНИЕМ КОМБИНАТОРНОГО КОДИРОВАНИЯ MDCT-СПЕКТРА
SCALED CODING OF SPEECH AND AUDIO USING COMBINATORIAL CODING OF MDCT-SPECTRUM

Настоящая заявка на патент испрашивает приоритет согласно предварительной заявке США №60/981814, озаглавленной "Low-Complexity Technique for Encoding/Decoding of Quantized MDCT Spectrum in Scalable Speech+Audio Codecs", поданной 22 октября 2007 года, переуступленной правопреемнику настоящей заявки и явно включенной в состав данного документа посредством ссылки.
Область техники, к которой относится изобретение
Последующее описание в общем относится к кодерам и декодерам и в частности к эффективному способу кодирования спектра модифицированного дискретного косинусного преобразования (MDCT) как части масштабируемого речевого и аудиокодека.
Уровень техники
Одна цель кодирования аудио состоит в том, чтобы сжимать аудиосигнал в требуемый ограниченный объем информации при сохранении максимально возможного исходного качества звука. В процессе кодирования аудиосигнал во временной области преобразуется в частотную область.
Технологии перцепционного кодирования аудио, такие как MPEG Layer-3 (MP3), MPEG-2 и MPEG-4, используют свойства маскирования сигналов человеческого уха, чтобы уменьшать объем данных. За счет этого шум квантования распределяется по полосам частот таким образом, что он маскируется посредством доминирующего полного сигнала, т.е. он остается неслышимым. Значительное уменьшение емкости для хранения возможно при небольших или отсутствии воспринимаемых потерь качества звучания. Технологии перцепционного кодирования аудио зачастую являются масштабируемыми и формируют многослойный поток битов, имеющий основной или базовый слой и, по меньшей мере, один улучшающий слой. Это обеспечивает масштабируемость скорости передачи битов, т.е. декодирование при различных уровнях качества звучания на стороне декодера или уменьшение скорости передачи битов в сети посредством формирования или согласования трафика.
Линейное прогнозирование с возбуждением по коду (CELP) является классом алгоритмов, включающих в себя алгебраическое CELP (ACELP), ослабленное CELP (RCELP), с низкой задержкой (LD-CELP) и линейное прогнозирование с возбуждением по векторной сумме (VSELP), которые широко используются для кодирования речи. Один принцип в основе CELP называется анализом через синтез (AbS) и означает, что кодирование (анализ) выполняется посредством перцепционной оптимизации декодированного (синтез) сигнала в замкнутом контуре. В теории лучший поток CELP должен формироваться посредством опробования всех возможных наборов двоичных знаков и выбора того из них, который формирует оптимально звучащий декодированный сигнал. Очевидно, что это невозможно на практике по двум причинам: его очень сложно реализовать и критерий выбора "оптимального звучания" подразумевает слушателя-человека. Чтобы достигать кодирования в реальном времени с использованием ограниченных вычислительных ресурсов, поиск CELP подразделяется на меньшие, более управляемые, последовательные поиски с использованием перцепционной весовой функции. Как правило, кодирование включает в себя: (a) вычисление и/или квантование (обычно как пар спектральных линий) коэффициентов кодирования с линейным прогнозированием для входного аудиосигнала, (b) использование таблиц кодирования, чтобы выполнять поиск наилучшего совпадения, чтобы формировать кодированный сигнал, (c) формирование сигнала ошибки, который является разностью между кодированным сигналом и действительным входным сигналом, и (d) дополнительное кодирование такого сигнала ошибки (обычно в MDCT-спектре) в одном или более слоев, чтобы повышать качество восстановленного или синтезированного сигнала.
Множество различных технологий доступно для того, чтобы реализовывать речевые и аудиокодеки на основе алгоритмов CELP. В некоторых из этих технологий формируется сигнал ошибки, который затем преобразуется (обычно с помощью DCT, MDCT или аналогичного преобразования) и кодируется, чтобы дополнительно повышать качество кодированного сигнала. Тем не менее, вследствие ограничений по обработке и полосе пропускания многих мобильных устройств и сетей желательна эффективная реализация такого кодирования MDCT-спектра, чтобы уменьшать размер хранимой или передаваемой информации.
Раскрытие изобретения
Далее представлено упрощенное раскрытие сущности одного или более вариантов осуществления изобретения, для того чтобы предоставить базовое понимание некоторых вариантов осуществления. Эта сущность не является всесторонним обзором всех рассматриваемых вариантов осуществления, и она не имеет намерением ни то, чтобы определять ключевые или важнейшие элементы всех вариантов осуществления, ни то, чтобы обрисовывать область применения каких-либо или всех вариантов осуществления. Ее единственная цель - представлять некоторые понятия одного или более вариантов осуществления в упрощенной форме в качестве вступления в более подробное описание, которое представлено далее.
Предоставляется эффективная технология для кодирования/декодирования спектра MDCT (или аналогичного основанного на преобразовании) в алгоритмах масштабируемого сжатия аудио и речи. Эта технология использует свойство разреженности перцепционно квантованного MDCT-спектра при задании структуры кода, который включает в себя элемент, описывающий позиции ненулевых спектральных линий в кодированной полосе частот, и использует технологии комбинаторного перечисления, чтобы вычислять этот элемент.
В одном примере предоставляется способ для кодирования MDCT-спектра в масштабируемом речевом и аудиокодеке. Такое кодирование спектра преобразования может выполняться посредством аппаратных средств кодера, программного обеспечения для кодирования и/или комбинации означенного и может быть осуществлено в процессоре, схеме обработки и/или машиночитаемом носителе. Остаточный сигнал получается из слоя кодирования на основе линейного прогнозирования с возбуждением по коду (CELP), при этом остаточный сигнал - это разность между исходным аудиосигналом и восстановленной версией исходного аудиосигнала. Восстановленная версия исходного аудиосигнала может получаться посредством следующего: (a) синтезирование кодированной версии исходного аудиосигнала из слоя кодирования на основе CELP, чтобы получать синтезированный сигнал, (b) повторный ввод предыскажений в синтезированный сигнал и/или (c) повышающая дискретизация сигнала после повторного ввода предыскажений, чтобы получать восстановленную версию исходного аудиосигнала.
Остаточный сигнал преобразуется в слое преобразования типа дискретного косинусного преобразования (DCT), чтобы получать соответствующий спектр преобразования, имеющий множество спектральных линий. Слой преобразования DCT-типа может быть слоем модифицированного дискретного косинусного преобразования (MDCT), и спектр преобразования - это MDCT-спектр.
Спектральные линии спектра преобразования кодируются с использованием технологии комбинаторного позиционного кодирования. Кодирование спектральных линий спектра преобразования может включать в себя кодирование позиций выбранного поднабора спектральных линий на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. В некоторых реализациях набор спектральных линий может отбрасываться, чтобы сократить число спектральных линий, перед кодированием. В другом примере технология комбинаторного позиционного кодирования может включать в себя формирование лексикографического индекса для выбранного поднабора спектральных линий, при этом каждый лексикографический индекс представляет одну из множества возможных двоичных строк, представляющих позиции выбранного поднабора спектральных линий. Лексикографический индекс может представлять спектральные линии в двоичной строке в меньшем числе битов, чем длина двоичной строки.
В другом примере технология комбинаторного позиционного кодирования может включать в себя формирование индекса, представляющего позиции спектральных линий в рамках двоичной строки, причем позиции спектральных линий кодируются на основе комбинаторной формулы:
j
где n - длина двоичной строки, k - число выбранных спектральных линий, которые должны быть кодированы, и w представляет отдельные биты двоичной строки.
В некоторых реализациях множество спектральных линий может быть разбито на множество подполос и последовательные подполосы могут группироваться в области. Основной импульс, выбираемый из множества спектральных линий для каждой из подполос в области, может быть кодирован, при этом выбранный поднабор спектральных линий в области исключает основной импульс для каждой из подполос. Дополнительно, позиции выбранного поднабора спектральных линий в рамках области могут быть кодированы на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. Выбранный поднабор спектральных линий в области может исключать основной импульс для каждой из подполос. Кодирование спектральных линий спектра преобразования может включать в себя формирование матрицы на основе позиций выбранного поднабора спектральных линий из всех возможных двоичных строк длины, равной всем позициям в области. Области могут перекрываться, и каждая область может включать в себя множество последовательных подполос.
В другом примере предоставляется способ для декодирования спектра преобразования в масштабируемом речевом и аудиокодеке. Такое декодирование спектра преобразования может выполняться посредством аппаратных средств декодера, программного обеспечения для декодирования и/или комбинации означенного и может быть осуществлено в процессоре, схеме обработки и/или машиночитаемом носителе. Индекс, представляющий множество спектральных линий спектра преобразования остаточного сигнала, получается, при этом остаточный сигнал - это разность между исходным аудиосигналом и восстановленной версией исходного аудиосигнала из слоя кодирования на основе линейного прогнозирования с возбуждением по коду (CELP). Индекс может представлять ненулевые спектральные линии в двоичной строке в меньшем числе битов, чем длина двоичной строки. В одном примере полученный индекс может представлять позиции спектральных линий в рамках двоичной строки, причем позиции спектральных линий кодируются на основе комбинаторной формулы:
j
где n - длина двоичной строки, k - число выбранных спектральных линий, которые должны быть кодированы и w представляет отдельные биты двоичной строки.
Индекс декодируется посредством выполнения в обратном порядке технологии комбинаторного позиционного кодирования, используемой для того, чтобы кодировать множество спектральных линий спектра преобразования. Версия остаточного сигнала синтезируется с использованием декодированного множества спектральных линий спектра преобразования в слое обратного преобразования типа обратного дискретного косинусного преобразования (IDCT). Синтезирование версии остаточного сигнала может включать в себя применение обратного преобразования DCT-типа к спектральным линиям спектра преобразования, чтобы формировать версию остаточного сигнала во временной области. Декодирование спектральных линий спектра преобразования может включать в себя декодирование позиций выбранного поднабора спектральных линий на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. Слой обратного преобразования DCT-типа может быть слоем обратного модифицированного дискретного косинусного преобразования (IMDCT), и спектр преобразования - это MDCT-спектр.
Дополнительно, может приниматься CELP-кодированный сигнал, кодирующий исходный аудиосигнал. CELP-кодированный сигнал может быть декодирован, чтобы сформировать декодированный сигнал. Декодированный сигнал может быть комбинирован с синтезированной версией остаточного сигнала, чтобы получать восстановленную версию (с более высокой точностью воспроизведения) исходного аудиосигнала.
Краткое описание чертежей
Различные признаки, характер и преимущества могут стать очевидными из нижеизложенного подробного описания при рассмотрении вместе с чертежами, на которых аналогичные ссылки с номером идентифицируются соответствующим образом по всему документу.
Фиг.1 является блок-схемой, иллюстрирующей систему связи, в которой могут реализовываться один или более признаков кодирования.
Фиг.2 является блок-схемой, иллюстрирующей передающее устройство, которое может быть выполнено с возможностью осуществлять эффективное кодирование аудио согласно одному примеру.
Фиг.3 является блок-схемой, иллюстрирующей приемное устройство, которое может быть выполнено с возможностью осуществлять эффективное декодирование аудио согласно одному примеру.
Фиг.4 является блок-схемой масштабируемого кодера согласно одному примеру.
Фиг.5 является блок-схемой, иллюстрирующей процесс кодирования MDCT-спектра, который может реализовываться посредством кодера.
Фиг.6 является схемой, иллюстрирующей один пример того, как кадр может выбираться и разделяться на области и подполосы, чтобы упрощать кодирование MDCT-спектра.
Фиг.7 иллюстрирует общий подход для кодирования аудиокадра эффективным способом.
Фиг.8 является блок-схемой, иллюстрирующей кодер, который может эффективно кодировать импульсы в MDCT-аудиокадре.
Фиг.9 является блок-схемой последовательности операций, иллюстрирующей способ для получения вектора формы для кадра.
Фиг.10 является блок-схемой, иллюстрирующей способ для кодирования спектра преобразования в масштабируемом речевом и аудиокодеке.
Фиг.11 является блок-схемой, иллюстрирующей пример видеодекодера.
Фиг.12 является блок-схемой, иллюстрирующей способ для кодирования спектра преобразования в масштабируемом речевом и аудиокодеке.
Фиг.13 является блок-схемой, иллюстрирующей способ для декодирования спектра преобразования в масштабируемом речевом и аудиокодеке.
Осуществление изобретения
Далее описываются различные варианты осуществления со ссылками на чертежи, на которых одинаковые номера ссылок используются для того, чтобы ссылаться на одинаковые элементы. В последующем описании с целью пояснения многие конкретные детали изложены для того, чтобы предоставлять полное понимание одного или более вариантов осуществления. Тем не менее, может быть очевидным, что эти варианты осуществления могут применяться на практике без данных конкретных деталей. В других случаях распространенные структуры и устройства показаны в форме блок-схем для того, чтобы упрощать описание одного или более вариантов осуществления.
Обзор
В масштабируемом кодеке для кодирования/декодирования аудиосигналов, в котором несколько слоев кодирования используются для того, чтобы итеративно кодировать аудиосигнал, модифицированное дискретное косинусное преобразование может использоваться в одном или более слоев кодирования, где остатки аудиосигнала преобразуются (к примеру, в MDCT-домен) для кодирования. В MDCT-домене кадр спектральных линий может быть разделен на подполосы и задаются области перекрывающихся подполос. Для каждой подполосы в области может выбираться основной импульс (т.е. самая сильная спектральная линия или группа спектральных линий в подполосе). Позиция основных импульсов может быть кодирована посредством использования целого числа, чтобы представлять ее позицию в рамках каждой из подполос. Амплитуда/величина каждого из основных импульсов может быть отдельно кодирована. Дополнительно, выбирается множество (к примеру, четыре) субимпульсов (к примеру, оставшиеся спектральные линии) в области, исключая уже выбранные основные импульсы. Выбранные субимпульсы кодируются на основе их полной позиции в рамках области. Позиции этих субимпульсов могут кодироваться с использованием технологии комбинаторного позиционного кодирования, чтобы формировать лексикографические индексы, которые могут представляться в меньшем числе битов, чем по всей длине области. Посредством представления основных импульсов и субимпульсов таким образом они могут быть кодированы с использованием относительно небольшого числа битов для хранения и/или передачи.
Система связи
Фиг.1 является блок-схемой, иллюстрирующей систему связи, в которой могут реализовываться один или более признаков кодирования. Кодер 102 принимает поступающий входной аудиосигнал 104 и формирует и кодированный аудиосигнал 106. Кодированный аудиосигнал 106 может быть передан по каналу передачи (к примеру, беспроводному или проводному) в декодер 108. Декодер 108 пытается восстанавливать входной аудиосигнал 104 на основе кодированного аудиосигнала 106, чтобы формировать восстановленный выходной аудиосигнал 110. В целях иллюстрации, кодер 102 может работать в передающем устройстве, тогда как устройство декодера может работать в приемном устройстве. Тем не менее, должно быть очевидным, что все такие устройства могут включать в себя как кодер, так и декодер.
Фиг.2 является блок-схемой, иллюстрирующей передающее устройство 202, которое может быть выполнено с возможностью осуществлять эффективное кодирование аудио согласно одному примеру. Входной аудиосигнал 204 захватывается посредством микрофона 206, усиливается посредством усилителя 208 и преобразуется посредством аналого-цифрового преобразователя 210 в цифровой сигнал, который отправляется в модуль 212 кодирования речи. Модуль 212 кодирования речи выполнен с возможностью осуществлять многослойное (масштабированное) кодирование входного сигнала, где, по меньшей мере, один такой слой заключает в себе кодирование остатка (сигнала ошибки) в MDCT-спектре. Модуль 212 кодирования речи может выполнять кодирование, как поясняется в связи с фиг.4, 5, 6, 7, 8, 9 и 10. Выходные сигналы из модуля 212 кодирования речи могут отправляться в модуль 214 кодирования тракта передачи, где канальное декодирование выполняется и результирующие выходные сигналы отправляются в схему 216 модуляции и модулируются, чтобы отправляться через цифроаналоговый преобразователь 218 и RF-усилитель 220 в антенну 222 для передачи кодированного аудиосигнала 224.
Фиг.3 является блок-схемой, иллюстрирующей приемное устройство 302, которое может быть выполнено с возможностью осуществлять эффективное декодирование аудио согласно одному примеру. Кодированный аудиосигнал 304 принимается посредством антенны 306 и усиливается посредством RF-усилителя 308 и отправляется через аналого-цифровой преобразователь 310 в схему 312 демодуляции так, что демодулированные сигналы предоставляются в модуль 314 декодирования тракта передачи. Выходной сигнал из модуля 314 декодирования тракта передачи отправляется в модуль 316 декодирования речи, выполненный с возможностью осуществлять многослойное (масштабированное) декодирование входного сигнала, где, по меньшей мере, один такой слой заключает в себе декодирование остатка (сигнала ошибки) в IMDCT-спектре. Модуль 316 декодирования речи может выполнять декодирование сигналов, как поясняется в связи с фиг.11, 12 и 13. Выходные сигналы из модуля 316 декодирования речи отправляются в цифроаналоговый преобразователь 318. Аналоговый речевой сигнал из цифроаналогового преобразователя 318 отправляется через усилитель 320 на динамик 322, чтобы предоставлять восстановленный выходной аудиосигнал 324.
Архитектура масштабируемого аудиокодека
Кодер 102 (фиг.1), декодер 108 (фиг.1), модуль 212 кодирования речи/аудио (фиг.2) и/или модуль 316 декодирования речи/аудио (фиг.3) могут реализовываться как масштабируемый аудиокодек. Такой масштабируемый аудиокодек может реализовываться, чтобы предоставлять высокопроизводительное широкополосное кодирование речи для подверженных ошибкам каналов передачи данных, с высоким качеством доставляемых кодированных узкополосных речевых сигналов или широкополосных аудио/музыкальных сигналов. Один подход к масштабируемому аудиокодеку состоит в том, чтобы предоставлять итерационные слои кодирования, где сигнал ошибки (остаток) из одного слоя кодируется в последующем слое, чтобы дополнительно улучшать аудиосигнал, кодированный в предыдущих слоях. Например, линейное прогнозирование с возбуждением по таблице кодирования (CELP) основано на принципе кодирования с линейным прогнозированием, в котором таблица кодирования различных сигналов возбуждения поддерживается в кодере и декодере. Кодер находит самый подходящий сигнал возбуждения и отправляет его соответствующий индекс (из фиксированной, алгебраической и/или адаптивной таблицы кодирования) в декодер, который затем использует его, чтобы воспроизводить сигнал (на основе таблицы кодирования). Кодер выполняет анализ через синтез посредством кодирования и последующего декодирования аудиосигнала, чтобы формировать восстановленный или синтезированный аудиосигнал. Кодер затем находит параметры, которые минимизируют энергию сигнала ошибки, т.е. разность между исходным аудиосигналом и восстановленным или синтезированным аудиосигналом. Выходная скорость передачи битов может регулироваться посредством использования большего или меньшего числа слоев кодирования, чтобы удовлетворять требованиям канала и требуемому качеству звучания. Такой масштабируемый аудиокодек может включать в себя несколько слоев, где потоки битов верхнего слоя могут быть отброшены без влияния на декодирование нижних слоев.
Примеры существующих масштабируемых кодеков, которые используют такую многослойную архитектуру, включают в себя ITU-T Recommendation ITU-T и выходящий стандарт ITU-T под кодовым названием G.EV-VBR. Например, кодек со встроенной переменной скоростью передачи битов (EV-VBR) может реализовываться как несколько слоев от L1 (базовый слой) до LX (где X - номер наивысшего расширяющего слоя). Такой кодек может принимать как широкополосные (WB) сигналы, дискретизированные при 16 кГц, так и узкополосные (NB) сигналы, дискретизированные при 8 кГц. Аналогично, вывод кодека может быть широкополосным или узкополосным.
Пример структуры слоев для кодека (к примеру, EV-VBR-кодека) показан в таблице 1, содержащей пять слоев: от L1 (базовый слой) до L5 (наивысший расширяющий слой). Более низкие два слоя (L1 и L2) могут быть основаны на алгоритме линейного прогнозирования с возбуждением по коду (CELP). Базовый слой L1 может извлекаться из алгоритма кодирования речи на основе широкополосного кодека с переменным многоскоростным кодированием (VMR-WB) и может содержать несколько режимов кодирования, оптимизированных для различных входных сигналов. Таким образом, базовый слой L1 может классифицировать входные сигналы, чтобы лучше моделировать аудиосигнал. Ошибка кодирования (остаток) из базового слоя L1 кодируется посредством улучшающего или расширяющего слоя L2 на основе адаптивной таблицы кодирования и фиксированной алгебраической таблицы кодирования. Сигнал ошибки (остаток) из слоя L2 дополнительно может кодироваться посредством верхних слоев (L3-L5) в области преобразования с использованием модифицированного дискретного косинусного преобразования (MDCT). Вспомогательная информация может отправляться в слое L3, чтобы улучшать маскирование стирания кадров (FEC).
Таблица 1
Слой
Скорость передачи битов, кбит/сек
Технология
Частота дискретизации, кГц
L1
8
Базовый слой CELP (классификация)
12,8
L2
+4
Слой алгебраической таблицы кодирования (улучшающий)
12,8
L3
+4
FEC
MDCT
12,8
16
L4
+8
MDCT
16
L5
+8
MDCT
16
Кодек базового слоя L1, по существу, является кодеком на основе CELP и может быть совместимым с одним из ряда известных узкополосных или широкополосных вокодеров, таких как кодек с адаптивным многоскоростным кодированием (AMR), широкополосный AMR-кодек (AMR-WB), широкополосный кодек с переменным многоскоростным кодированием (VMR-WB), усовершенствованный кодек с переменной скоростью (EVRC) или широкополосный EVR-кодек (EVRC-WB).
Слой 2 в масштабируемом кодеке может использовать таблицы кодирования, чтобы дополнительно минимизировать ошибку кодирования с перцепционным взвешиванием (остаток) из базового слоя L1. Чтобы улучшить маскирование стирания кадров (FEC) кодека, вспомогательная информация может вычисляться и передаваться в последующем слое L3. Независимо от режима кодирования базового слоя вспомогательная информация может включать в себя классификацию сигналов.
Допускается, что для широкополосного вывода взвешенный сигнал ошибки после кодирования слоя L2 кодируется с использованием кодирования с преобразованием на основе добавления с перекрытием на основе модифицированного дискретного косинусного преобразования (MDCT) или аналогичного типа преобразования. Таким образом, для кодированных слоев L3, L4 и/или L5 сигнал может быть кодирован в MDCT-спектре. Следовательно, предоставляется эффективный способ кодирования сигнала в MDCT-спектре.
Пример кодера
HP
HP
12,8
12,8
2
2
2
2
Фиг.4 является блок-схемой масштабируемого кодера 402 согласно одному примеру. На стадии предварительной обработки до кодирования входной сигнал 404 фильтруется по верхним частотам 406, чтобы подавлять нежелательные низкочастотные компоненты, чтобы формировать фильтрованный входной сигнал S(n). Например, фильтр 406 верхних частот может иметь отсечку в 25 Гц для широкополосного входного сигнала и 100 Гц для узкополосного входного сигнала. Фильтрованный входной сигнал S(n) затем повторно дискретизируется посредством модуля 408 повторной дискретизации, чтобы формировать повторно дискретизированный входной сигнал S(n). Например, исходный входной сигнал 404 может дискретизироваться при 16 кГц и повторно дискретизируется до 12,8 кГц, что может быть внутренней частотой, используемой для кодирования слоя L1 и/или L2. Модуль 410 ввода предыскажений затем применяет фильтр верхних частот первого порядка, чтобы вводить предыскажения в верхние частоты (и ослаблять низкие частоты) повторно дискретизированного входного сигнала S(n). Результирующий сигнал затем передается в модуль 412 кодера/декодера, который может выполнять кодирование слоя L1 и/или L2 на базе алгоритма на основе линейного прогнозирования с возбуждением по коду (CELP), где речевой сигнал моделируется посредством сигнала возбуждения, проходящего через синтезирующий фильтр с линейным прогнозированием (LP), представляющего спектральную огибающую. Энергия сигнала может вычисляться для каждой перцепционной критической полосы частот и использоваться как часть кодирования слоев L1 и L2. Дополнительно, кодированный модуль 412 кодера/декодера также может синтезировать (восстанавливать) версию входного сигнала. Таким образом, после того как модуль 412 кодера/декодера кодирует входной сигнал, он декодирует его и модуль 416 коррекции предыскажений и модуль 418 повторной дискретизации воссоздают версию  входного сигнала 404. Остаточный сигнал x2(n) формируется посредством подсчета разности 420 между исходным сигналом SHP(n) и воссозданным сигналом  (т.е. x2(n)=SHP(n)--). Остаточный сигнал x2(n) затем перцепционно взвешивается посредством модуля 424 взвешивания и преобразуется посредством MDCT-модуля 428 в MDCT-спектр или домен, чтобы формировать остаточный сигнал X(k). Остаточный сигнал X(k) затем предоставляется в комбинаторный кодер 432 спектра, который кодирует остаточный сигнал X(k), чтобы формировать кодированные параметры для слоев L3, L4 и/или L5. В одном примере комбинаторный кодер 432 спектра формирует индекс, представляющий ненулевые спектральные линии (импульсы) в остаточном сигнале X(k). Например, индекс может представлять одну из множества возможных двоичных строк, представляющих позиции ненулевых спектральных линий. Вследствие комбинаторной технологии индекс может представлять ненулевые спектральные линии в двоичной строке в меньшем числе битов, чем длина двоичной строки.
Параметры из слоев L1-L5 затем могут выступать в качестве выходного потока битов 436 и далее могут использоваться для того, чтобы восстанавливать или синтезировать версию исходного входного сигнала 404 в декодере.
Слой 1 - кодирование классификации:
Базовый слой L1 может реализовываться в модуле 412 кодера/декодера и может использовать классификацию сигналов и четыре различных режима кодирования, чтобы повышать производительность кодирования. В одном примере эти четыре различных класса сигналов, которые могут рассматриваться для различного кодирования каждого кадра, могут включать в себя: (1) невокализованное кодирование (UC) для невокализованных речевых кадров, (2) вокализованное кодирование (VC), оптимизированное для квазипериодических сегментов с гладким изменением основного тона, (3) переходный режим (TC) для кадров после вокализованных вступлений, выполненный с возможностью минимизировать распространение ошибки в случае стираний кадров, и (4) общее кодирование (GC) для других кадров. При невокализованном кодировании (UC) адаптивная таблица кодирования не используется и возбуждение выбирается из гауссовой таблицы кодирования. Квазипериодические сегменты кодируются с помощью режима вокализованного кодирования (VC). Выбор вокализованного кодирования обусловливается посредством гладкого изменения основного тона. Режим вокализованного кодирования может использовать технологию ACELP. В кадре после переходного кодирования (TC) адаптивная таблица кодирования в субкадре, содержащем гортанный импульс первого периода основного тона, заменяется фиксированной таблицей кодирования.
В базовом слое L1 сигнал может моделироваться с использованием парадигмы на основе CELP посредством сигнала возбуждения, проходящего через синтезирующий фильтр с линейным прогнозированием (LP), представляющего спектральную огибающую. LP-фильтр может квантоваться в домене спектральных частот иммитанса (ISF) с использованием подхода "страховочной сетки" и многостадийного векторного квантования (MSVQ) для режимов общего и вокализованного кодирования. Анализ основного тона с разомкнутым контуром (OL) выполняется посредством алгоритма отслеживания основного тона, чтобы обеспечивать гладкий контур основного тона. Тем не менее, чтобы повышать устойчивость оценки основного тона, два параллельных контура изменения основного тона могут сравниваться и выбирается дорожка, которая дает в результате более плавный контур.
Два набора параметров LPC оцениваются и кодируются в расчете на каждый кадр в большинстве режимов с использованием окна анализа в 20 мс, один для конца кадра и один для середины кадра. ISF середины кадра кодируются с помощью интерполяционного раздельного VQ с обнаружением коэффициента линейной интерполяции для каждой ISF-подгруппы, так что разность между оцененными и интерполированными квантованными ISF минимизируется. В одном примере, чтобы квантовать ISF-представление LP-коэффициентов, поиск может осуществляться в двух наборах таблиц кодирования (соответствующих слабому и сильному прогнозированию), могут искаться параллельно, чтобы находить прогнозирующий параметр и запись таблицы кодирования, которые минимизируют искажение оцененной спектральной огибающей. Основная причина для этого подхода "страховочной сетки" состоит в том, чтобы уменьшать распространение ошибки, когда стирания кадров совпадают с сегментами, где спектральная огибающая быстро изменяется. Чтобы предоставлять дополнительную устойчивость к ошибкам, слабый прогнозирующий параметр иногда задается равным нулю, что приводит к квантованию без прогнозирования. Тракт без прогнозирования может всегда выбираться, когда его искажение квантования достаточно близко к искажению с прогнозированием или когда его искажение квантования является достаточно небольшим, чтобы предоставлять прозрачное кодирование. Помимо этого в сильно прогнозирующем поиске таблицы кодирования субоптимальный кодовый вектор выбирается, если это не влияет на производительность чистого канала, но ожидаемо понижает распространение ошибки при наличии стираний кадров. ISF UC- и TC-кадров дополнительно систематически квантуются без прогнозирования. Для UC-кадров достаточно битов доступно для того, чтобы предоставлять возможность очень хорошего спектрального квантования даже без прогнозирования. TC-кадры считаются слишком чувствительными к стираниям кадров для прогнозирования, которое должно использоваться несмотря на потенциальное уменьшение производительности чистого канала.
Для узкополосных (NB) сигналов оценка основного тона выполняется с использованием возбуждения L2, сформированного с неквантованными оптимальными усилениями. Этот подход удаляет эффекты квантования усиления и улучшает оценку запаздывания основного тона в слоях. Для широкополосных (WB) сигналов используется стандартная оценка основного тона (возбуждение L1 с квантованными усилениями).
Слой 2 - улучшающее кодирование:
В слое L2 модуль 412 кодера/декодера может кодировать ошибку квантования из базового слоя L1 снова с использованием алгебраических таблиц кодирования. В слое L2 кодер дополнительно модифицирует адаптивную таблицу кодирования так, чтобы включать в себя не только предыдущую долю L1, но также и предыдущую долю L2. Адаптивное запаздывание основного тона является одинаковым в L1 и L2, чтобы поддерживать временную синхронизацию между слоями. Усиления адаптивных и алгебраических таблиц кодирования, соответствующие L1 и L2, затем повторно оптимизируются, чтобы минимизировать ошибку кодирования с перцепционным взвешиванием. Обновленные усиления L1 и усиления L2 прогнозным образом векторно квантуются относительно усилений, уже квантованных в L1. Слои CELP (L1 и L2) могут работать на внутренней (к примеру, 12,8 кГц) частоте дискретизации. Вывод из слоя L2 тем самым включает в себя синтезированный сигнал, кодированный в полосе частот на 0-6,4 кГц. Для широкополосного вывода расширение полосы пропускания AMR-WB может использоваться для того, чтобы формировать пропущенную полосу пропускания на 6,4-7 кГц.
Слой 3 - маскирование стирания кадров:
Чтобы повышать производительность в условиях стирания кадров (FEC), модуль 414 маскирования ошибок по кадрам может получать вспомогательную информацию из модуля 412 кодера/декодера и использовать ее для того, чтобы формировать параметры слоя L3. Вспомогательная информация может включать в себя информацию класса для всех режимов кодирования. Информация спектральной огибающей предыдущего кадра также может быть передана для переходного кодирования базового слоя. Для других режимов кодирования базового слоя также могут отправляться информация фазы и синхронная по основному тону энергия синтезированного сигнала.
Слои 3, 4, 5 - кодирование с преобразованием:
2
Остаточный сигнал X(k), вытекающий из CELP-кодирования второй стадии в слое L2, может квантоваться в слоях L3, L4 и L5 с использованием MDCT или аналогичного преобразования со структурой добавления с перекрытием. Таким образом, сигнал остатка или "ошибки" из предыдущего слоя используется посредством последующего слоя, чтобы формировать его параметры (которые направлены на то, чтобы эффективно представлять такую ошибку для передачи в декодер).
MDCT-коэффициенты могут квантоваться посредством использования нескольких технологий. В некоторых случаях MDCT-коэффициенты квантуются с использованием масштабируемого алгебраического векторного квантования. MDCT может вычисляться каждые 20 миллисекунд (мс), и его спектральные коэффициенты квантуются в 8-мерных блоках. Применяется модуль очистки звука (фильтр ограничения шума MDCT-домена), извлекаемый из спектра исходного сигнала. Глобальные усиления передаются в слое L3. Дополнительно, несколько битов используются для высокочастотной компенсации. Оставшиеся биты слоя L3 используются для квантования MDCT-коэффициентов. Биты слоев L4 и L5 используются так, что производительность максимизируется независимо в слоях L5 и слоях L4.
В некоторых реализациях MDCT-коэффициенты могут квантоваться по-другому для речевого и музыкального доминирующего аудиосодержимого. Различение между речевым и музыкальным содержимым основано на оценке эффективности CELP-модели посредством сравнения MDCT-компонентов взвешенного синтеза L2 с соответствующими компонентами входного сигнала. Для речевого доминирующего содержимого масштабируемое алгебраическое векторное квантование (AVQ) используется в L3 и L4 со спектральными коэффициентами, квантованными в 8-мерных блоках. Глобальное усиление передается в L3, и несколько битов используются для высокочастотной компенсации. Оставшиеся биты L3 и L4 используются для квантования MDCT-коэффициентов. Способ квантования - многоскоростное решетчатое VQ (MRLVQ). Новый алгоритм на основе многоуровневых перестановок использован для того, чтобы уменьшать сложность и затраты по запоминающему устройству процедуры индексации. Вычисление ранга выполняется в несколько этапов. Во-первых, входной вектор разлагается на вектор знака и вектор абсолютных значений. Во-вторых, вектор абсолютных значений дополнительно разлагается на несколько уровней. Вектор наивысшего уровня - это исходный вектор абсолютных значений. Каждый вектор нижнего уровня получается посредством удаления самого частого элемента из вектора верхнего уровня. Параметр позиции каждого вектора нижнего уровня, связанного с вектором верхнего уровня, индексируется на основе функции перестановок и комбинирования. Наконец, индекс всех нижних уровней и знак компонуются в выходной индекс.
Для музыкального доминирующего содержимого избирательное по полосе частот векторное квантование усиления формы (VQ усиления формы) может использоваться в слое L3 и дополнительный векторный квантователь позиции импульса может применяться к слою L4. В слое L3 выбор полосы частот может выполняться посредством вычисления сначала энергии MDCT-коэффициентов. Затем MDCT-коэффициенты в выбранной полосе частот квантуются с использованием многоимпульсной таблицы кодирования. Векторный квантователь используется для того, чтобы квантовать подполосные усиления для MDCT-коэффициентов. Для слоя L4 вся полоса пропускания может кодироваться с использованием технологии позиционирования импульсов. Когда речевая модель формирует нежелательный шум вследствие несовпадения в модели аудиоисточника, определенные частоты вывода слоя L2 могут быть ослаблены, чтобы давать возможность более активного кодирования MDCT-коэффициентов. Это осуществляется способом с замкнутым контуром посредством минимизации квадратической ошибки между MDCT входного сигнала и MDCT кодированного аудиосигнала через слой L4. Величина применяемого ослабления может составлять вплоть до 6 дБ, что может передаваться посредством использования 2 или меньшего числа битов. Слой L5 может использовать дополнительную технологию позиционного кодирования импульсов.
Кодирование MDCT-спектра
Поскольку слои L3, L4 и L5 выполняют кодирование в MDCT-спектре (к примеру, MDCT-коэффициенты, представляющие остаток для предыдущего слоя), желательно для такого кодирования MDCT-спектра быть эффективным. Следовательно, предоставляется эффективный способ кодирования MDCT-спектра.
Входными данными в этот процесс является либо готовый MDCT-спектр сигнала ошибки (остатка) после базы CELP (слои L1 и/или L2), либо остаточный MDCT-спектр после предыдущего слоя. Таким образом, в слое L3 готовый MDCT-спектр принимается и частично кодируется. Затем в слое L4 остаточный MDCT-спектр кодированного сигнала в слое L3 кодируется. Этот процесс может повторяться для слоя L5 и других последующих слоев.
Фиг.5 является блок-схемой, иллюстрирующей примерный процесс кодирования MDCT-спектра, который может реализовываться в верхних слоях кодера. Кодер 502 получает MDCT-спектр остаточного сигнала 504 из предыдущих слоев. Такой остаточный сигнал 504 может быть разностью между исходным сигналом и восстановленной версией исходного сигнала (к примеру, восстановленной из кодированной версии исходного сигнала). MDCT-коэффициенты остаточного сигнала могут квантоваться, чтобы формировать спектральные линии для данного аудиокадра.
В одном примере модуль 508 выбора подполосы/области может разделять остаточный сигнал 504 на множество (к примеру, 17) однородных подполос. Например, при условии аудиокадра с трехсот двадцатью (320) спектральными линиями первые и последние двадцать четыре (24) точки (спектральные линии) могут отбрасываться и оставшиеся двести семьдесят две (272) спектральных линии могут быть разделены на семнадцать (17) подполос по шестнадцать (16) спектральных линий каждая. Следует понимать, что в различных реализациях различное число подполос может использоваться, число первых и последних точек, которые могут отбрасываться, может варьироваться, и/или число спектральных линий, которые могут быть разбиваться в расчете на подполосу или кадр, также может варьироваться.
Фиг.6 является схемой, иллюстрирующей один пример того, как аудиокадр 602 может выбираться и разделяться на области и подполосы, чтобы упрощать кодирование MDCT-спектра. Согласно этому примеру множеству областей (к примеру, 8) может быть задано, состоящих из множества (к примеру, 5) последовательных или смежных подполос 604 (к примеру, область может покрывать 5 подполос×16 спектральных линий/подполоса=80 спектральных линий). Множество областей 606 может быть выполнено с возможностью перекрываться с каждой соседней областью и покрывать полную полосу пропускания (к примеру, 7 кГц). Информация об области может быть сформирована для кодирования.
Как только область выбрана, MDCT-спектр в области квантуется посредством квантователя формы 510 и квантователя усиления 512 с использованием квантования усиления формы, в котором последовательно квантуется форма (синонимично с определением местоположения и знаком) и усиление целевого вектора. Формирование может содержать формирование определения местоположения, знака спектральных линий, соответствующих основному импульсу и множеству субимпульсов в расчете на подполосу наряду с величиной для основных импульсов и субимпульсов. В примере, проиллюстрированном на фиг.6, восемьдесят (80) спектральных линий в рамках области 606 могут представляться посредством вектора формы, состоящего из 5 основных импульсов (один основной импульс для каждой из 5 последовательных подполос 604a, 604b, 604c, 604d и 604e) и 4 дополнительных субимпульсов в расчете на каждую область. Таким образом, для каждой подполосы 604 выбирается основной импульс (т.е. самый сильный импульс в рамках этих 16 спектральных линий в этой подполосе). Дополнительно, для каждой области 606 выбираются дополнительные 4 субимпульса (т.е. следующие самые сильные импульсы спектральной линии в рамках этих 80 спектральных линий). Как проиллюстрировано на фиг.6, в одном примере комбинация позиций и знаков основных импульсов и субимпульсов может быть кодирована с помощью 50 битов, где:
- 20 битов для индексов для 5 основных импульсов (один основной импульс в расчете на подполосу);
- 5 битов для знаков 5 основных импульсов;
- 21 бит для индексов 4 субимпульсов в любом месте в рамках области в 80 спектральных линий;
- 4 бита для знаков 4 субимпульсов.
Каждый основной импульс может представляться посредством его позиции в рамках подполосы в 16 спектральных линий с использованием 4 битов (к примеру, число 0-16, представленное посредством 4 битов). Следовательно, для пяти (5) основных импульсов в области это отнимает всего 20 битов. Знак каждого основного импульса и/или субимпульса может представляться посредством одного бита (к примеру, 0 или 1 для положительного или отрицательного). Позиция каждого из четырех (4) выбранных субимпульсов в рамках области может кодироваться с использованием технологии комбинаторного позиционного кодирования (с использованием биномиальных коэффициентов для того, чтобы представлять позицию каждого выбранного субимпульса), чтобы формировать лексикографические индексы, так что общее число битов, используемых для того, чтобы представлять позицию этих четырех субимпульсов в рамках области, меньше длины области.
quant
Следует отметить, что дополнительные биты могут быть использованы для кодирования амплитуды и/или величины основных импульсов и/или субимпульсов. В некоторых реализациях амплитуда/величина импульса может быть кодирована с использованием двух битов (т.е. 00 - нет импульса, 01 - субимпульс и/или 10 - основной импульс). После квантования формы квантование усиления выполняется для вычисленных подполосных усилений. Поскольку область содержит 5 подполос, 5 усилений получаются для области, которая может быть вектором, квантованным с помощью 10 битов. Векторное квантование использует переключаемую схему прогнозирования. Следует отметить, что выходной остаточный сигнал 516 может получаться (посредством вычитания 514 квантованного остаточного сигнала S из исходного входного остаточного сигнала 504), который может использоваться в качестве входных данных для следующего слоя кодирования.
Фиг.7 иллюстрирует общий подход для кодирования аудиокадра эффективным способом. Область 702 из N спектральных линий могут быть задана из множества последовательных или смежных подполос, где каждая подполоса 704 имеет L спектральных линий. Область 702 и/или подполосы 704 могут быть предназначены для остаточного сигнала аудиокадра.
A
B
i
A
3
B
24
C
41
D
59
E
79
Для каждой подполосы основной импульс выбирается 706. Например, самый сильный импульс в рамках L спектральных линий подполосы выбирается как основной импульс для этой подполосы. Самый сильный импульс может выбираться как импульс, который имеет наибольшую амплитуду или величину в подполосе. Например, первый основной импульс P выбирается для подполосы A 704a, второй основной импульс P выбирается для подполосы B 704b и т.д. для каждой из подполос 704. Следует отметить, что, поскольку область 702 имеет N спектральных линий, позиция каждой спектральной линии в рамках области 702 может обозначаться посредством c (для 1≤i≤N). В одном примере первый основной импульс P может находиться в позиции c, второй основной импульс P может находиться в позиции c, третий основной импульс P может находиться в позиции c, четвертый основной импульс P может находиться в позиции c, пятый основной импульс P может находиться в позиции c. Эти основные импульсы могут быть кодированы посредством использования целого числа, чтобы представлять их позицию в рамках соответствующей подполосы. Следовательно, для спектральных линий L=16 позиция каждого основного импульса может быть представлена посредством использования четырех (4) битов.
1
N-p
Строка w формируется из оставшихся спектральных линий или импульсов в области 708. Чтобы формировать строку, выбранные основные импульсы удаляются из строки w и оставшиеся импульсы w, …, w остаются в строке (где p - число основных импульсов в области). Следует отметить, что строка может представляться посредством нулей "0" и "1", где "0" представляет, что импульс отсутствует в конкретной позиции, а "1" представляет, что импульс присутствует в конкретной позиции.
1
20
2
29
3
51
4
69
20
29
51
69
Множество субимпульсов выбирается из строки w на основе мощности импульса 710. Например, четыре (4) субимпульса S1, S2, S3 и S4 могут выбираться на основе их интенсивности (амплитуда/величина) (т.е. самые сильные 4 импульса, остающиеся в строке w, выбираются). В одном примере первый субимпульс S может находиться позиции w, второй субимпульс S может находиться позиции w, третий субимпульс S может находиться позиции w и четвертый импульс S может находиться позиции w. Позиция каждого из выбранных субимпульсов затем кодируется с использованием лексикографического индекса 712 на основе биномиальных коэффициентов так, что лексикографический индекс i(w) основан на комбинации выбранных позиций субимпульса, i(w)=w+w+w+w.
Фиг.8 является блок-схемой, иллюстрирующей кодер, который может эффективно кодировать импульсы в MDCT-аудиокадре. Кодер 802 может включать в себя формирователь 802 подполос, который делит принимаемый аудиокадр MDCT-спектра 801 на несколько полос частот, имеющих множество спектральных линий. Формирователь 806 областей затем формирует множество перекрывающихся областей, где каждая область состоит из множества смежных подполос. Модуль 808 выбора основного импульса затем выбирает основной импульс из каждой из подполос в области. Основной импульс может быть импульсом (одной или более спектральных линий или точек), имеющим наибольшую амплитуду/величину в рамках подполосы. Выбранный основной импульс для каждой подполосы в области затем кодируется посредством кодера 810 знака, кодера 812 позиции, кодера 814 усиления и кодера 816 амплитуды, чтобы формировать соответствующие кодированные биты для каждого основного импульса. Аналогично, модуль 809 выбора субимпульсов затем выбирает множество (к примеру, четыре) субимпульсов из всей области (т.е. безотносительно того, какой подполосе субимпульсы принадлежат). Субимпульсы могут выбираться из оставшихся импульсов в области (т.е. исключая уже выбранные основные импульсы), имеющих наибольшую амплитуду/величину в рамках подполосы. Выбранные субимпульсы для области затем кодируются посредством кодера 818 знака, кодера 820 позиции, кодера 822 усиления и кодера 822 амплитуды, чтобы формировать соответствующие кодированные биты для субимпульса. Кодер 820 позиции может быть выполнен с возможностью осуществлять технологию комбинаторного позиционного кодирования, чтобы формировать лексикографический индекс, который уменьшает полный размер битов, которые используются для того, чтобы кодировать позицию субимпульсов. В частности, если только несколько из импульсов во всей области должны быть кодированы, более эффективно представлять несколько субимпульсов как лексикографический индекс, чем представлять полную длину области.
Фиг.9 является блок-схемой последовательности операций, иллюстрирующей способ для получения вектора формы для кадра. Как указано ранее, вектор формы состоит из 5 основных и 4 субимпульсов (спектральных линий), причем эти определения местоположения (в рамках области в 80 линий) и знаки должны передаваться посредством использования наименьшего возможного числа битов.
Для этого примера делаются несколько допущений по характеристикам основных и субимпульсов. Во-первых, допускается, что величина основных импульсов выше величины субимпульсов, и это отношение может быть предварительно установленной константой (к примеру, 0,8). Это означает, что предложенная технология квантования может назначать один из трех возможных уровней (величин) восстановления MDCT-спектру в каждой подполосе: нуль (0), уровень субимпульса (к примеру, 0,8) и уровень основного импульса (к примеру, 1). Во-вторых, допускается, что каждая 16-точечная (с 16 спектральными линиями) подполоса имеет ровно один основной импульс (с выделенным усилением, которое также передается один раз в расчете на подполосу). Следовательно, основной импульс присутствует для каждой подполосы в области. В-третьих, оставшиеся четыре (4) (или менее) субимпульса могут быть введены в любой подполосе в области в 80 линий, но они не должны смещать ни один из выбранных основных импульсов. Субимпульс может представлять максимальное число битов, используемое для того, чтобы представлять спектральные линии в подполосе. Например, четыре (4) субимпульса в подполосе могут представлять 16 спектральных линий в любой подполосе, таким образом, максимальное число битов, используемое для того, чтобы представлять 16 спектральных линий в подполосе, составляет 4.
На основе вышеприведенного описания способ кодирования для импульсов может извлекаться следующим образом. Кадр (имеющий множество спектральных линий) делится на множество подполос 902. Множество перекрывающихся областей может быть задано, где каждая область включает в себя множество последовательных/смежных подполос 904. Основной импульс выбирается в каждой подполосе в области на основе амплитуды/величины импульса 906. Индекс позиции кодируется для каждого выбранного основного импульса 908. В одном примере, поскольку основной импульс может попадать в любое место в рамках подполосы, имеющей 16 спектральных линий, его позиция может представляться посредством 4 битов (к примеру, целочисленное значение в 0…15). Аналогично, знак, амплитуда и/или усиление могут быть кодированы для каждого из основных импульсов 910. Знак может представляться посредством 1 бита (1 или 0). Поскольку каждый индекс для основного импульса занимает 4 бита, 20 битов могут использоваться для того, чтобы представлять пять индексов основного импульса (к примеру, 5 подполос), и 5 битов для знаков основных импульсов, в дополнение к битам, используемым для кодирования усиления и амплитуды для каждого основного импульса.
Для кодирования субимпульсов двоичная строка создается из выбранного множества субимпульсов из оставшихся импульсов в области, где выбранные основные импульсы удалены 912. "Выбранное множество субимпульсов" может быть числом k импульсов, имеющих наибольшую величину/амплитуду из оставшихся импульсов. Кроме того, для области, имеющей 80 спектральных линий, если все 5 основных импульсов удалены, это оставляет 80-5=75 позиций для рассматриваемых субимпульсов. Следовательно, может быть создана 75-битовая двоичная строка w, состоящая из следующего:
- 0: указывает отсутствие субимпульса,
- 1: указывает наличие выбранного субимпульса в позиции.
Лексикографический индекс затем вычисляется этой двоичной строки w для набора всех возможных двоичных строк с множеством k ненулевых битов 914. Знак, амплитуда и/или усиление также могут быть кодированы для каждого из выбранных субимпульсов 916.
Формирование лексикографического индекса
Лексикографический индекс, представляющий выбранные субимпульсы, может быть сформирован с использованием технологии комбинаторного позиционного кодирования на основе биномиальных коэффициентов. Например, двоичная строка w может вычисляться для набора всех возможных  двоичных строк длины n с k ненулевыми битами (каждый ненулевой бит в строке w указывает позицию импульса, который должен кодироваться). В одном примере следующая комбинаторная формула может использоваться для того, чтобы формировать индекс, который кодирует позицию всех k импульсов в рамках двоичной строки w:
j
где n - длина двоичной строки (к примеру, n=75), k - число выбранных субимпульсов (к примеру, k=4), w представляет отдельные биты двоичной строки w, и допускается, что =0 для всех k>n. Для примера, где k=4 и n=75, полный диапазон значений, занимаемых посредством индексов всех возможных векторов субимпульса, следовательно, следующий:
2
Следовательно, это может представляться как log1285826≈20,294... битов. Использование ближайшего целого числа должно приводить к использованию 21 бита. Следует отметить, что это меньше 75 битов для двоичной строки или битов, остающихся в 80-битовой области.
Пример формирования лексикографического индекса из строки
Согласно одному примеру лексикографический индекс для двоичной строки, представляющей позиции выбранных субимпульсов, может вычисляться на основе биномиальных коэффициентов, которые в одной возможной реализации могут предварительно вычисляться и сохраняться в треугольной матрице (треугольник Паскаля) следующим образом:
Следовательно, биномиальный коэффициент может вычисляться для двоичной строки w, представляющей множество субимпульсов (к примеру, двоичное значение "1") в различных позициях двоичной строки w.
С использованием этой матрицы биномиальных коэффициентов вычисление лексикографического индекса (i) может реализовываться следующим образом:
Примерный способ кодирования
Фиг.10 является блок-схемой, иллюстрирующей способ для кодирования спектра преобразования в масштабируемом речевом и аудиокодеке. Остаточный сигнал получается из слоя кодирования на основе линейного прогнозирования с возбуждением по коду (CELP), при этом остаточный сигнал - это разность между исходным аудиосигналом и восстановленной версией исходного аудиосигнала 1002. Восстановленная версия исходного аудиосигнала может получаться посредством следующего: (a) синтезирование кодированной версии исходного аудиосигнала из слоя кодирования на основе CELP, чтобы получать синтезированный сигнал, (b) повторный ввод предыскажений в синтезированный сигнал и/или (c) повышающая дискретизация сигнала после повторного ввода предыскажений, чтобы получать восстановленную версию исходного аудиосигнала.
Остаточный сигнал преобразуется в слое преобразования типа дискретного косинусного преобразования (DCT), чтобы получать соответствующий спектр преобразования, имеющий множество спектральных линий 1004. Слой преобразования DCT-типа может быть слоем модифицированного дискретного косинусного преобразования (MDCT), и спектр преобразования - это MDCT-спектр.
Спектральные линии спектра преобразования кодируются с использованием технологии комбинаторного позиционного кодирования 1006. Кодирование спектральных линий спектра преобразования может включать в себя кодирование позиций выбранного поднабора спектральных линий на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. В некоторых реализациях набор спектральных линий может отбрасываться, чтобы сократить число спектральных линий, перед кодированием. В другом примере технология комбинаторного позиционного кодирования может включать в себя формирование лексикографического индекса для выбранного поднабора спектральных линий, при этом каждый лексикографический индекс представляет одну из множества возможных двоичных строк, представляющих позиции выбранного поднабора спектральных линий. Лексикографический индекс может представлять спектральные линии в двоичной строке в меньшем числе битов, чем длина двоичной строки.
В другом примере технология комбинаторного позиционного кодирования может включать в себя формирование индекса, представляющего позиции спектральных линий в рамках двоичной строки, причем позиции спектральных линий кодируются на основе комбинаторной формулы:
j
где n - длина двоичной строки, k - число выбранных спектральных линий, которые должны быть кодированы, и w представляет отдельные биты двоичной строки.
В одном примере множество спектральных линий может быть разбито на множество подполос и последовательные подполосы могут группироваться в области. Основной импульс, выбираемый из множества спектральных линий для каждой из подполос в области, может быть кодирован, при этом выбранный поднабор спектральных линий в области исключает основной импульс для каждой из подполос. Дополнительно, позиции выбранного поднабора спектральных линий в рамках области могут быть кодированы на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. Выбранный поднабор спектральных линий в области может исключать основной импульс для каждой из подполос. Кодирование спектральных линий спектра преобразования может включать в себя формирование матрицы на основе позиций выбранного поднабора спектральных линий из всех возможных двоичных строк длины, равной всем позициям в области. Области могут перекрываться, и каждая область может включать в себя множество последовательных подполос.
Процесс декодирования лексикографического индекса, чтобы синтезировать кодированные импульсы, является просто инверсией операций, описанных для кодирования.
Декодирование MDCT-спектра
Фиг.11 является блок-схемой, иллюстрирующей пример видеодекодера. В каждом аудиокадре (к примеру, 20-миллисекундном кадре) декодер 1102 может принимать входной поток битов 1104, содержащий информацию одного или более слоев. Принимаемые слои могут колебаться от слоя 1 до слоя 5, что может соответствовать скоростям передачи битов от 8 кбит/с до 32 кбит/с. Это означает, что работа декодера обусловливается посредством числа битов (слоев), принимаемых в каждом кадре. В этом примере допускается, что выходной сигнал 1132 является WB и что все слои корректно приняты в декодере 1102. Базовый слой (слой 1) и улучшающий слой ACELP (слой 2) сначала декодируются посредством модуля 1106 декодера, и выполняется синтез сигналов. В синтезированном сигнале затем корректируются предыскажения посредством модуля 1108 коррекции предыскажений, и он повторно дискретизируется до 16 кГц посредством модуля 1110 повторной дискретизации, чтобы формировать сигнал. Модуль постобработки дополнительно обрабатывает сигнал , чтобы формировать синтезированный сигнал слоя 1 или слоя 2.
Верхние слои (слои 3, 4, 5) затем декодируются посредством модуля 1116 комбинаторного декодера спектра, чтобы получать сигнал MDCT-спектра . Сигнал MDCT-спектра  обратно преобразуется посредством модуля 1120 обратного MDCT, и результирующий сигнал  добавляется к перцепционно взвешенному синтезированному сигналу  слоев 1 и 2. Временное ограничение шума затем применяется посредством формирующего модуля 1122. Взвешенный синтезированный сигнал  предыдущего кадра, перекрывающегося с текущим кадром, затем добавляется к синтезу. Обратное перцепционное взвешивание 1124 затем применяется, чтобы восстанавливать синтезированный WB-сигнал. Наконец, постфильтр 1126 основного тона применяется для восстановленного сигнала, после чего следует фильтр 1128 верхних частот. Постфильтр 1126 использует дополнительную задержку декодера, вводимую посредством синтеза на основе добавления с перекрытием MDCT (слои 3, 4, 5). Он комбинирует оптимальным способом два сигнала постфильтра основного тона. Сигнал является высококачественным сигналом постфильтра основного тона  вывода декодера слоя 1 или слоя 2, который формируется посредством использования дополнительной задержки декодера. Другой сигнал - это сигнал постфильтра основного тона с низкой задержкой для синтезирующего сигнала верхних слоев (слоев 3, 4, 5). Фильтрованный синтезированный сигнал  затем выводится посредством порогового шумоподавителя 1130.
Фиг.12 является блок-схемой, иллюстрирующей декодер, который может эффективно декодировать импульсы аудиокадра MDCT-спектра. Принимается множество кодированных входных битов, включающих в себя знак, позицию, амплитуду и/или усиление для основных и/или субимпульсов в MDCT-спектре для аудиокадра. Биты для одного или более основных импульсов декодируются посредством декодера основных импульсов, который может включать в себя декодер 1210 знака, декодер 1212 позиции, декодер 1214 усиления и/или декодер 1216 амплитуды. Синтезатор 1208 основных импульсов затем восстанавливает один или более основных импульсов с использованием декодированной информации. Аналогично, биты для одного или более субимпульсов могут быть декодированы в декодере субимпульсов, который включает в себя декодер 1218 знака, декодер 1220 позиции, декодер 1222 усиления и/или декодер 1224 амплитуды. Следует отметить, что позиция субимпульсов может быть кодирована с использованием лексикографического индекса на основе технологии комбинаторного позиционного кодирования. Следовательно, декодер 1220 позиции может быть комбинаторным декодером спектра. Синтезатор 1209 субимпульсов затем восстанавливает один или более субимпульсов с использованием декодированной информации. Повторный формирователь 1206 областей затем восстанавливает множество перекрывающихся областей на основе субимпульсов, причем каждая область состоит из множества смежных подполос. Повторный формирователь субимпульсов 1204 затем восстанавливает подполосы с использованием основных импульсов и/или субимпульсов, что приводит к восстановленному MDCT-спектру для аудиокадра 1201.
Пример формирования строки из лексикографического индекса
Чтобы декодировать принимаемый лексикографический индекс, представляющий позицию субимпульсов, обратный процесс может выполняться для того, чтобы получать последовательность или двоичную строку на основе данного лексикографического индекса. Один пример такого обратного процесса может реализовываться следующим образом:
В случае длинной последовательности (к примеру, где n=75) только с несколькими наборами битов (к примеру, где k=4) эта процедура дополнительно может модифицироваться, чтобы делать их более практичными. Например, вместо выполнения поиска в последовательности битов индексы ненулевых битов могут передаваться для кодирования, так что функция index() становится равной:
Следует отметить, что используются только первые 4 столбца биномиальной матрицы. Следовательно, только 75·4=300 слов запоминающего устройства используются для того, чтобы сохранять ее.
В одном примере процесс декодирования может быть выполнен посредством следующего алгоритма:
Это развернутый цикл с n итерациями только с поисками и сравнениями, используемыми на каждом этапе.
Примерный способ кодирования
Фиг.13 является блок-схемой, иллюстрирующей способ для декодирования спектра преобразования в масштабируемом речевом и аудиокодеке. Индекс, представляющий множество спектральных линий спектра преобразования остаточного сигнала, получается, при этом остаточный сигнал - это разность между исходным аудиосигналом и восстановленной версией исходного аудиосигнала из слоя кодирования на основе линейного прогнозирования с возбуждением по коду (CELP) 1302. Индекс может представлять ненулевые спектральные линии в двоичной строке в меньшем числе битов, чем длина двоичной строки. В одном примере полученный индекс может представлять позиции спектральных линий в рамках двоичной строки, причем позиции спектральных линий кодируются на основе комбинаторной формулы:
j
где n - длина двоичной строки, k - число выбранных спектральных линий, которые должны быть кодированы, и w представляет отдельные биты двоичной строки.
Индекс декодируется посредством выполнения в обратном порядке технологии комбинаторного позиционного кодирования, используемой для того, чтобы кодировать множество спектральных линий спектра преобразования 1304. Версия остаточного сигнала синтезируется c использованием декодированного множества спектральных линий спектра преобразования в слое обратного преобразования типа обратного дискретного косинусного преобразования (IDCT) 1306. Синтезирование версии остаточного сигнала может включать в себя применение обратного преобразования DCT-типа к спектральным линиям спектра преобразования, чтобы формировать версию остаточного сигнала во временной области. Декодирование спектральных линий спектра преобразования может включать в себя декодирование позиций выбранного поднабора спектральных линий на основе представления позиций спектральных линий с использованием технологии комбинаторного позиционного кодирования для позиций ненулевых спектральных линий. Слой обратного преобразования DCT-типа может быть слоем обратного модифицированного дискретного косинусного преобразования (IMDCT), и спектр преобразования - это MDCT-спектр.
Дополнительно, CELP-кодированный сигнал, кодирующий исходный аудиосигнал, может приниматься 1308. CELP-кодированный сигнал может быть декодирован, чтобы формировать декодированный сигнал 1310. Декодированный сигнал может быть комбинирован с синтезированной версией остаточного сигнала, чтобы получать восстановленную версию (с более высокой точностью воспроизведения) исходного аудиосигнала 1312.
Различные иллюстративные логические блоки, модули и схемы и этапы алгоритма, описанные в данном документе, могут реализовываться или выполняться как электронные аппаратные средства, программное обеспечение или комбинации означенного. Чтобы понятно иллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы описаны выше в общем на основе функциональности. Реализована эта функциональность в качестве аппаратных средств или программного обеспечения, зависит от конкретного варианта применения и проектных ограничений, накладываемых на систему в целом. Следует отметить, что конфигурации могут описываться как процесс, который иллюстрируется как блок-схема последовательности операций способа, блок-схема, структурная схема или блок-схема. Хотя блок-схема последовательности операций способа может описывать операции как последовательный процесс, многие операции могут выполняться параллельно или одновременно. Помимо этого порядок операций может быть переопределен. Процесс завершается, когда его операции закончены. Процесс может соответствовать способу, функции, процедуре, подпрограмме, подпрограмме и т.д. Когда процесс соответствует функции, ее завершение соответствует возврату функции в вызывающую функцию или основную функцию.
При реализации в аппаратных средствах различные примеры могут использовать процессор общего назначения, процессор цифровых сигналов (DSP), специализированную интегральную схему (ASIC), сигнал программируемой пользователем вентильной матрицы (FPGA) или другое программируемое логическое устройство, дискретный логический вентиль или транзисторную логику, дискретные аппаратные компоненты либо любую комбинацию вышеозначенного, предназначенную для того, чтобы выполнять функции, описанные в данном документе. Процессором общего назначения может быть микропроцессор, но в альтернативном варианте процессором может быть любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован как комбинация вычислительных устройств, к примеру, комбинация DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров вместе с ядром DSP либо любая другая аналогичная конфигурация.
При реализации в программном обеспечении различные примеры могут использовать микропрограммное обеспечение, промежуточное программное обеспечение или микрокод. Программный код или сегменты кода для того, чтобы выполнять требуемые задачи, могут сохраняться в машиночитаемом носителе, таком как носитель хранения данных или другое устройство(а) хранения. Процессор может выполнять требуемые задачи. Сегмент кода может представлять процедуру, функцию, подпрограмму, программу, стандартную процедуру, вложенную процедуру, модуль, комплект программного обеспечения, класс или любое сочетание инструкций, структур данных или операторов программы. Сегмент кода может быть связан с другим сегментом кода или аппаратной схемой посредством передачи и/или приема информации, данных, аргументов, параметров или содержимого памяти. Информация, аргументы, параметры, данные и т.д. могут быть переданы, переадресованы или пересланы посредством любого надлежащего средства, в том числе совместного использования памяти, передачи сообщений, эстафетной передачи данных, передачи по сети и т.д.
При использовании в данной заявке термины "компонент", "модуль", "система" и т.п. имеют намерение ссылаться на связанный с компьютером объект, будь то аппаратные средства, микропрограммное обеспечение, комбинация аппаратных средств и программного обеспечения, программное обеспечение или программное обеспечение в ходе исполнения. Например, компонент может быть, но не только, процессом, запущенным на процессоре, процессором, объектом, исполняемым файлом, потоком исполнения, программой и/или компьютером. В качестве иллюстрации, и приложение, запущенное на вычислительном устройстве, и вычислительное устройство может быть компонентом. Один или более компонентов могут постоянно размещаться внутри процесса и/или потока исполнения, и компонент может быть локализован на компьютере и/или распределен между двумя и более компьютерами. Кроме того, эти компоненты могут выполняться с различных машиночитаемых носителей, сохраняющих различные структуры данных. Компоненты могут обмениваться данными посредством локальных и/или удаленных процессов, например, в соответствии с сигналом, имеющим один или более пакетов данных (к примеру, данных из одного компонента, взаимодействующего с другим компонентом в локальной системе, распределенной системе и/или по сети, например, по Интернету с другими системами посредством сигнала).
В одном или более примеров в данном документе, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. Если реализованы в программном обеспечении, функции могут быть сохранены или переданы как одна или более инструкций или код на машиночитаемом носителе. Машиночитаемые носители включают в себя как компьютерные носители хранения данных, так и среду связи, включающую в себя любую передающую среду, которая упрощает перемещение компьютерной программы из одного места в другое. Носителями хранения могут быть любые доступные носители, к которым можно осуществлять доступ посредством компьютера. В качестве примера, но не ограничения, эти машиночитаемые носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения либо любой другой носитель, который может быть использован для того, чтобы переносить или сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Также любое подключение корректно называть машиночитаемым носителем. Например, если программное обеспечение передается из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включены в определение носителя. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей. Программное обеспечение может содержать одну инструкцию или множество инструкций и может быть распределено по нескольким различным сегментам кода, по различным программам и по нескольким носителям хранения данных. Примерный носитель хранения данных может быть соединен с процессором так, что процессор может считывать информацию и записывать информацию на носитель хранения данных. В альтернативном варианте, носитель хранения данных может быть встроен в процессор.
Способы, раскрытые в данном документе, содержат один или более этапов или действий для осуществления описанного способа. Этапы и/или действия способа могут меняться друг с другом без отступления от объема формулы изобретения. Другими словами, если конкретный порядок этапов или действий не требуется для надлежащей работы варианта осуществления, который описывается, порядок и/или применение конкретных этапов и/или действий может модифицироваться без отступления от объема формулы изобретения.
Один или более из компонентов, этапов и/или функций, проиллюстрированных на фиг.1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 и/или 13, могут быть перегруппированы и/или комбинированы в один компонент, этап или функцию или осуществлен в нескольких компонентах, этапах или функциях. Дополнительные элементы, компоненты, этапы и/или функции также могут добавляться. Устройство, устройства и/или компоненты, проиллюстрированные на фиг.1, 2, 3, 4, 5, 8, 11 и 12, могут быть выполнены с возможностью или приспособлены осуществлять один или более из способов, признаков или этапов, описанных на фиг.6-7 и 10-13. Алгоритмы, описанные в данном документе, могут эффективно реализовываться в программном обеспечении и/или встроенных аппаратных средствах.
Следует отметить, что предшествующие конфигурации являются просто примерами и не должны рассматриваться как ограничивающие формулу изобретения. Описание конфигураций имеет намерение быть иллюстративным и не ограничивать объем формулы изобретения. По сути, настоящие технологии могут быть легко применены к другим типам устройств, и множество альтернатив, модификаций и вариаций должно быть очевидным специалистам в данной области техники.