ПОДДИАПАЗОННЫЙ РЕЧЕВОЙ КОДЕКС С МНОГОКАСКАДНЫМИ ТАБЛИЦАМИ КОДИРОВАНИЯ И ИЗБЫТОЧНЫМ КОДИРОВАНИЕМ
SUBBAND VOICE CODEC WITH MULTI-STAGE CODEBOOKS AND REDUDANT CODING

Область техники, к которой относится изобретение
Описанные средства и способы относятся к аудиокодекам, в частности к поддиапазонному кодированию, таблицам кодирования и/или избыточному кодированию.
Уровень техники
С появлением цифровых беспроводных телефонных сетей стали распространенными потоковая передача аудио по Интернету и Интернет-телефония, цифровая обработка и доставка речи. Технические специалисты используют множество методов для того, чтобы эффективно обрабатывать речь при сохранении качества. Чтобы понять эти методы, важно понять, как аудиоинформация представляется и обрабатывается в компьютере.
I. Представление аудиоинформации в компьютере
Компьютер обрабатывает аудиоинформацию как последовательность чисел, представляющих аудио. Одно число может представлять аудиовыборку, которая является значением амплитуды в конкретное время. Несколько факторов влияют на качество аудио, в том числе глубина выборки и частота дискретизации.
Глубина выборки (или точность) указывает диапазон чисел, используемых для того, чтобы представлять выборку. Более вероятные значения для каждой выборки в типичном варианте предоставляют результат более высокого качества, поскольку могут представляться более незначительные вариации амплитуды. 8-битовая выборка имеет 256 возможных значений, тогда как 16-битовая выборка имеет 65536 возможных значений.
Частота дискретизации (обычно измеряемая как число выборок в секунду) также влияет на качество. Чем выше частота дискретизации, тем выше качество, поскольку больше частот звука может быть представлено. Некоторыми стандартными частотами дискретизации являются 8000, 11025, 22050, 32000, 44100, 48000 и 96000 выборок/сек (Гц). Табл.1 иллюстрирует несколько форматов аудио с различными уровнями качества наряду с соответствующими издержками на необработанную скорость передачи битов.
<b>Таблица 1</b>
<b>Скорости передачи битов для аудио различного качества</b>
<b>Глубина выборки (битов/выборка)</b>
<b>Частота дискретизации (выборок/сек)</b>
<b>Режим канала</b>
<b>Необработанная скорость передачи битов (битов/сек)</b>
8
800
моно
64000
8
11025
моно
88200
16
44100
стерео
1411200
Как показано в табл.1, издержками аудио высокого качества является высокая скорость передачи битов. Аудиоинформация высокого качества потребляет большие величины емкости хранения компьютера и пропускной способности передачи. Многим компьютерам и вычислительным сетям не хватает ресурсов, чтобы обрабатывать необработанное цифровое аудио. Сжатие (также называемое уплотнением или кодированием) снижает издержки на хранение и передачу аудиоинформации за счет преобразования информации в форму с меньшей скоростью передачи битов. Сжатие может быть без потерь (при котором качество не страдает) или с потерями (при котором качество страдает, но снижение скорости передачи битов от последующего сжатия без потерь более существенное). Разуплотнение (также называемая декодированием) извлекает восстановленную версию исходной информации из сжатой формы. Кодек - это система кодера/декодера.
II. Речевые кодеры и декодеры
Одна цель сжатия аудио заключается в том, чтобы представлять аудиосигналы в цифровой форме для обеспечения максимального качества сигнала для данного количества битов. Формулируя по-другому, эта цель состоит в том, чтобы представлять аудиосигналы с помощью наименьшего числа битов для данного уровня качества. Другие цели, такие как устойчивость к ошибкам передачи и ограничение общей задержки вследствие кодирования/передачи/декодирования, применяются в некоторых сценариях.
Различные виды аудиосигналов имеют различные характеристики. Музыка характеризуется большими диапазонами частот и амплитуд и зачастую включает в себя два или более каналов. С другой стороны, речь отличается меньшими диапазонами частот и амплитуд и зачастую представляется в одном канале. Определенные кодеки и методы обработки приспособлены для музыки и общего аудио; другие кодеки и методы обработки приспособлены для речи.
Один тип традиционного речевого кодера использует линейное предсказание, чтобы реализовать сжатие. Речевое кодирование включает в себя несколько фаз. Кодер находит и квантует коэффициенты для фильтра линейного предсказания, который используется для того, чтобы предсказывать значения выборок как линейные комбинации предыдущих значений выборок. Остаточный сигнал (представляемый как сигнал "возбуждения") указывает части исходного сигнала, не предсказанные точно посредством фильтрации. На некоторых фазах речевой кодек использует различные методы сжатия для вокализованных сегментов (отличающихся вибрацией голосовых связок), невокализованных сегментов и бесшумных сегментов, поскольку различные типы речи имеют различные характеристики. Вокализованные сегменты в типичном варианте демонстрируют шаблоны голоса с высокой повторяемостью даже в остаточной области. Для вокализованных сегментов кодер реализует дополнительное сжатие посредством сравнения текущего остаточного сигнала с предыдущими остаточными циклами и кодирования текущего остаточного сигнала в отношении информации задержки или запаздывания относительно предыдущих циклов. Кодер обрабатывает другие несоответствия между исходным сигналом и предсказанным кодированным представлением, используя специально спроектированные таблицы кодирования.
Многие речевые кодеки используют временную избыточность сигнала некоторым образом. Как упоминалось выше, один стандартный способ использует долговременное предсказание параметров основного тона, чтобы предсказывать текущий сигнал возбуждения относительно задержки или запаздывания относительно предыдущих циклов возбуждения. Использование временной избыточности позволяет существенно повысить эффективность сжатия относительно качества и частоты передачи битов, но с издержками за счет введения зависимости от памяти в кодек - декодер базируется на одной ранее декодированной части сигнала для того, чтобы корретно декодировать другую часть сигнала. Многие эффективные речевые кодеки имеют значительную зависимость от памяти.
Хотя речевые кодеки, как описано выше, имеют хорошую общую эффективность для многих вариантов применения, они имеют некоторые недостатки. В частности, некоторые недостатки обнаруживаются, когда речевые кодеки используются вместе с динамическими сетевыми ресурсами. В этих сценариях кодированная речь может теряться вследствие временной нехватки полосы пропускания и других проблем.
A. Узкополосные и широкополосные кодеки
Многие стандартные речевые кодеки разработаны для узкополосных сигналов с частотой дискретизации 8 кГц. Хотя частоты дискретизации в 8 кГц достаточно во многих случаях, более высокие частоты дискретизации могут быть желательными в других ситуациях, с тем чтобы представлять более высокие частоты.
Речевые сигналы с частотой дискретизации, по меньшей мере, 16 кГц в типичном варианте называются широкополосной речью. Хотя эти широкополосные кодеки могут быть желательными для того, чтобы представлять высокочастотные речевые шаблоны, они в типичном варианте требуют более высоких скоростей передачи битов, чем узкополосные кодеки. Эти более высокие скорости передачи битов могут не подходить в некоторых типах сетей или при некоторых сетевых режимах.
B. Неэффективная зависимость от памяти в динамических сетевых режимах
Когда кодированная речь отсутствует, например, вследствие потери, задержки, повреждения или иного искажения в канале передачи или где-либо еще, эффективность речевых кодеков может ухудшаться вследствие зависимости от памяти для потерянной информации. Потери информации для сигнала возбуждения затрудняют последующее восстановление, которое зависит от потерянного сигнала. Если предшествующие циклы потеряны, информация запаздывания может быть непригодной, поскольку она указывает на информацию, которой у декодера нет. Другим примером зависимости от памяти является интерполяция коэффициентов фильтрации (используемая для того, чтобы сглаживать переходы между различными синтезирующими фильтрами, особенно для вокализованных сигналов). Если коэффициенты фильтрации для кадра потеряны, коэффициенты фильтрации для последующих кадров могут иметь некорректные значения.
Декодеры используют различные методы, чтобы скрывать ошибки вследствие потерь пакетов и потери другой информации, но эти методы маскирования редко полностью скрывают ошибки. Например, декодер повторяет предыдущие параметры или оценивает параметры на основе корректно декодированной информации. Тем не менее, информация запаздывания может быть очень чувствительной, и методы предшествующего уровня техники не очень эффективны для маскирования.
В большинстве случаев декодеры восстанавливаются от ошибок вследствие потерянной информации. По мере того как пакеты принимаются и декодируются, параметры постепенно корректируются до достижения своих корректных значений. Однако качество с большой вероятностью ухудшается до тех пор, пока декодер не сможет восстановить свое внутреннее состояние. В большинстве наиболее эффективных речевых кодеков качество ухудшается на длительный период времени (к примеру, до секунды), вызывая сильное искажение и зачастую делая речь непонятной. Время восстановления меньше, когда возникает существенное изменение, например бесшумный кадр, поскольку это предоставляет естественную точку сброса множества параметров. Некоторые кодеки более устойчивы к потерям пакетов, поскольку они устраняют межкадровые зависимости. Тем не менее, такие кодеки требуют значительно более высоких скоростей передачи битов, чтобы реализовать такое же качество голоса, как традиционный CELP-кодек с межкадровыми зависимостями.
С учетом важности сжатия и распаковки для представления речевых сигналов в вычислительных системах неудивительно, что сжатие и распаковка речи вызвала активность в области исследований и стандартизации. Каковы бы ни были преимущества методов и средств предшествующего уровня техники, тем не менее, они не имеют преимуществ методов и средств, описанных в данном документе.
Сущность изобретения
В сущности, подробное описание направлено на различные методы и средства для аудиокодеков и, в частности, на средства и методы, связанные с поддиапазонным кодированием, таблицами кодирования аудиокодеков и/или избыточным кодированием. Описанные варианты осуществления реализуют один или более из описанных методов и средств, включающих в себя, но не только, следующее.
В одном аспекте поток битов для аудиосигнала включает в себя основную кодированную информацию для текущего кадра, который ссылается на сегмент предыдущего кадра, который должен быть использован в декодировании текущего кадра, и избыточную кодированную информацию для декодирования текущего кадра. Избыточная кодированная информация включает в себя информацию предыстории сигнала, связанного с указанным ссылкой сегментом предыдущего кадра.
В другом аспекте поток битов для аудиосигнала включает в себя основную кодированную информацию для текущего кодированного блока, который ссылается на сегмент предыдущего кодированного блока, который должен быть использован в декодировании текущего кодированного блока, и избыточную кодированную информацию для декодирования текущего кодированного блока. Избыточная кодированная информация включает в себя один или более параметров для дополнительных каскадов таблиц кодирования, которые должны быть использованы при декодировании текущего кодированного блока, если предыдущий кодированный блок недоступен.
В другом аспекте поток битов включает в себя множество кодированных аудиоблоков, и каждый кодированный блок включает в себя поле. Поле указывает то, включает ли в себя кодированный блок основную кодированную информацию, представляющую сегмент аудиосигнала, и включает ли в себя кодированный блок избыточную кодированную информацию для использования при декодировании основной кодированной информации.
В другом аспекте аудиосигнал разбивается на множество частотных поддиапазонов. Каждый поддиапазон кодируется согласно модели с кодовым линейным предсказанием. Поток битов включает в себя множество кодированных блоков, каждый из которых представляет сегмент аудиосигнала, при этом множество кодированных блоков содержат первый кодированный блок, представляющий первое число частотных поддиапазонов, и второй кодированный блок, представляющий второе число частотных поддиапазонов, причем второе число поддиапазонов отличается от первого числа поддиапазонов вследствие игнорирования информации поддиапазонов для первого кодированного блока или второго кодированного блока. Первый поддиапазон может кодироваться согласно первому режиму кодирования, а второй поддиапазон может кодироваться согласно другому второму режиму кодирования. Первый и второй режимы кодирования могут использовать различное число каскадов таблиц кодирования. Каждый поддиапазон может кодироваться отдельно. Более того, речевой кодер реального времени может обрабатывать поток битов, в том числе разложение аудиосигнала на множество частотных поддиапазонов и кодирование множества частотных поддиапазонов. Обработка потока битов может включать в себя декодирование множества частотных поддиапазонов и синтез множества частотных поддиапазонов.
В другом аспекте поток битов для аудиосигнала включает в себя параметры для первой группы каскадов таблиц кодирования для представления первого сегмента аудиосигнала, при этом первая группа каскадов таблиц кодирования включает в себя первый набор из множества каскадов фиксированных таблиц кодирования. Первый набор из множества каскадов фиксированных таблиц кодирования может включать в себя множество каскадов произвольных фиксированных таблиц кодирования. Каскады фиксированных таблиц кодирования могут включать в себя каскад импульсной таблицы кодирования и каскад произвольной таблицы кодирования. Первая группа каскадов таблиц кодирования также может включать в себя каскад адаптивной таблицы кодирования. Поток битов дополнительно может включать в себя параметры для второй группы каскадов таблиц кодирования, представляющей второй сегмент аудиосигнала, причем второй сегмент имеет число каскадов таблиц кодирования, отличное от первой группы. Число каскадов таблиц кодирования в первой группе каскадов таблиц кодирования может выбираться на основе одного или более факторов, включающих в себя одну или более характеристик первого сегмента аудиосигнала. Число каскадов таблиц кодирования в первой группе каскадов таблиц кодирования может выбираться на основе одного или более факторов, включающих в себя режимы сетевой передачи между кодером и декодером. Поток битов может включать в себя отдельный индекс таблицы кодирования и отдельное усиление для каждого из множества каскадов фиксированных таблиц кодирования. Использование отдельных усилений позволяет упрощать преобразование сигналов, а использование отдельных индексов таблиц кодирования позволяет упрощать поиск в таблице кодирования.
В другом аспекте поток битов включает в себя для каждого из множества блоков, параметризованных с помощью адаптивной таблицы кодирования, поле, указывающее то, используются или нет параметры адаптивной таблицы кодирования для блока. Блоки могут быть субкадрами множества кадров аудиосигнала. Средство обработки аудио, такое как речевой кодер реального времени, может обрабатывать поток битов, включая определение того, следует ли использовать параметры адаптивной таблицы кодирования в каждом блоке. Определение того, следует ли использовать параметры адаптивной таблицы кодирования, может включать в себя определение того, выше ли усиление адаптивной таблицы кодирования порогового значения. Кроме того, определение того, следует ли использовать параметры адаптивной таблицы кодирования, может включать в себя оценку одной или более характеристик кадра. Более того, определение того, следует ли использовать параметры адаптивной таблицы кодирования, может включать в себя оценку одной или более характеристик сетевой передачи между кодером и декодером. Поле может представлять собой однобитовый флаг на вокализованный блок. Полем может быть однобитовый флаг на субкадр речевого кадра аудиосигнала и поле может быть не включено для других типов кадров.
Различные методы и средства могут быть использованы в комбинации или независимо.
Дополнительные признаки и преимущества поясняются в последующем подробном описании различных вариантов осуществления, которое осуществляется со ссылками на прилагаемые чертежи.
Краткое описание чертежей
Фиг.1 - это блок-схема подходящего вычислительного окружения, в котором могут быть реализованы один или более описанных вариантов осуществления.
Фиг.2 - это блок-схема сетевого окружения, в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления.
Фиг.3 - это график, иллюстрирующий набор частотных характеристик структуры подполос, которая может быть использована для поддиапазонного кодирования.
Фиг.4 - это принципиальная схема речевого полосового кодера реального времени, в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления.
Фиг.5 - это блок-схема последовательности операций способа, иллюстрирующая определение параметров таблицы кодирования в одной реализации.
Фиг.6 - это блок-схема речевого полосового декодера реального времени, в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления.
Фиг.7 - это схема истории сигнала возбуждения, включающего в себя текущий кадр и повторно кодированную часть предшествующего кадра.
Фиг.8 - это блок-схема последовательности операций способа, иллюстрирующая определение параметров таблицы кодирования для дополнительного каскада произвольной таблицы кодирования в одной реализации.
Фиг.9 - это блок-схема речевого полосового декодера реального времени, использующего дополнительный каскад произвольной таблицы кодирования.
Фиг.10 - это схема форматов потока битов для кадров, включающих в себя информацию для различных методов избыточного кодирования, которые могут быть использованы в некоторых реализациях.
Фиг.11 - это схема форматов потока битов для пакетов, включающих в себя кадры, имеющие информацию избыточного кодирования, которые могут быть использованы в некоторых реализациях.
Подробное описание изобретения
Описанные варианты осуществления направлены на методы и средства обработки аудиоинформации при кодировании и декодировании. С помощью этих методов качество речи, извлекаемой из речевого кодека, такого как речевой кодек реального времени, может быть повышено. Эти усовершенствования могут вытекать из использования различных методов и средств по отдельности или в комбинации.
Данные методы и средства могут включать в себя кодирование и/или декодирование поддиапазонов с помощью методов линейного предсказания, таких как CELP.
Методы также могут включать в себя наличие нескольких каскадов фиксированных таблиц кодирования, в том числе импульсных и/или произвольных фиксированных таблиц кодирования. Число каскадов таблиц кодирования может варьироваться так, чтобы максимизировать качество для данной скорости передачи битов. Дополнительно адаптивная таблица кодирования может быть активирована или деактивирована в зависимости от таких факторов, как требуемая скорость передачи битов и признаки текущего кадра или субкадра.
Более того, кадры могут включать в себя избыточно кодированную информацию для части или всего предыдущего кадра, от которых зависит текущий кадр. Эта информация может быть использована посредством декодера, чтобы декодировать текущий кадр, если предыдущий кадр потерян, без необходимости передавать предыдущий кадр несколько раз. Эта информация может быть кодирована с такой же скоростью передачи битов, что и текущие или предыдущие кадры, или с меньшей скоростью передачи битов. Более того, эта информация может включать в себя информацию произвольной таблицы кодирования, которая аппроксимирует требуемую часть сигнала возбуждения, вместо полного повторного кодирования требуемой части сигнала возбуждения.
Хотя операции для различных методов описаны в конкретном последовательном порядке в целях представления, следует понимать, что этот способ описания заключает в себя незначительные перекомпоновки порядка операций, если конкретный порядок не является обязательным. Например, операции, описанные последовательно, в некоторых случаях могут быть перекомпонованы или выполнены параллельно. Более того, для простоты блок-схемы последовательности операций способа могут не показывать различные варианты, которыми конкретные методы могут быть использованы совместно с другими методами.
I. Вычислительное окружение
Фиг.1 иллюстрирует обобщенный пример схемы подходящей вычислительной среды (100), в которой могут быть реализованы один или более описанных вариантов осуществления. Вычислительная среда 100 не предназначена для того, чтобы накладывать какое-либо ограничение на объем использования или функциональность изобретения, поскольку настоящее изобретение может быть реализовано в различных вычислительных окружениях общего или специального назначения.
Согласно фиг.1 вычислительная среда (100) включает в себя, по меньшей мере, один блок (110) обработки и память (120). На фиг.1 эта самая базовая конфигурация (130) показана пунктирной линией. Блок (110) обработки приводит в исполнение машиноисполняемые инструкции и может быть реальным или виртуальным процессором. В многопроцессорной системе несколько блоков обработки приводят в исполнение машиноисполняемые инструкции, чтобы повысить вычислительную мощность. Памятью (120) может быть энергозависимая память (к примеру, регистры, кэш, ОЗУ), энергонезависимая память (к примеру, ПЗУ, ЭСППЗУ, флэш-память и т.д.) или какое-либо их сочетание. Память (120) сохраняет программное обеспечение (180), реализующее методы поддиапазонного кодирования, многокаскадных таблиц кодирования и/или избыточного кодирования для речевого кодера либо декодера.
Вычислительная среда (100) может иметь дополнительные признаки. На фиг.1 вычислительная среда (100) включает в себя устройство (140) хранения, одно или более устройств (150) ввода, одно или более устройств (160) вывода и одно или более соединений (170) связи. Механизм межкомпонентного соединения (не показан), такой как шина, контроллер или сеть соединяет между собой компоненты вычислительной среды (100). В типичном варианте программное обеспечение операционной системы (не показано) предоставляет операционную среду для другого программного обеспечения, приводимого в исполнение в вычислительной среде (100), и координирует действия компонентов вычислительной среды (100).
Устройство (140) хранения может быть съемным или стационарным и может включать в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, CD-RW, DVD или любой другой носитель, который может быть использован, чтобы сохранять информацию, и к которому можно осуществлять доступ в рамках вычислительной среды (100). Устройство (140) хранения сохраняет инструкции для программного обеспечения (180).
Устройством(ами) (150) ввода может быть устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство голосового ввода, устройство сканирования, сетевой адаптер или другое устройство, которое предоставляет ввод в вычислительную среду (100). Для аудио устройством(ами) (150) ввода может быть звуковая плата, микрофон или другое устройство, которое принимает входной аудиосигнал в аналоговой или цифровой форме, либо устройство считывания CD/DVD, которое предоставляет аудиовыборки вычислительной среде (100). Устройством(ами) (160) вывода может быть дисплей, принтер, динамик, пишущее устройство CD/DVD, сетевой адаптер или другое устройство, которое предоставляет вывод из вычислительной среды (100).
Соединения (170) связи обеспечивают обмен данными по среде обмена данными с другим вычислительным объектом. Среда обмена данными передает информацию, такую как машиноисполняемые инструкции, сжатую речевую информацию или другие данные в модулированном сигнале данных. Модулированный сигнал данных - это сигнал, который имеет одну или более характеристик, установленных или изменяемых таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда обмена данными включает в себя проводные или беспроводные методы, реализованные с помощью электрического, оптического, радиочастотного, инфракрасного, акустического или другого оборудования связи.
Изобретение может быть описано в общем контексте машиночитаемых носителей. Машиночитаемые носители - это любые доступные носители, к которым можно осуществлять доступ в вычислительной среде. В качестве примера, а не ограничения, в вычислительной среде (100) машиночитаемые носители включают в себя память (120), устройство (140) хранения, среду обмена данными и комбинации любых вышеозначенных элементов.
Изобретение может быть описано в общем контексте машиноисполняемых инструкций, таких как включенные в программные модули, приводимые в исполнение в вычислительном окружении для целевого реального или виртуального процессора. В общем, программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональность программных модулей может быть комбинирована или разделена между программными модулями, как требуется в различных вариантах осуществления. Машиноисполняемые инструкции для программных модулей могут быть приводимы в исполнение в локальном или распределенном вычислительной среде.
Для целей представления подробное описание использует такие термины, как "определить", "сформировать", "настроить" и "применить", чтобы описывать операции компьютера в вычислительной среде. Эти термины являются высокоуровневыми абстракциями для операций, выполняемых компьютером, и не должны путаться с действиями, выполняемыми человеком. Фактические операции компьютера, соответствующие этим терминам, различаются в зависимости от реализации.
II. Обобщенное сетевое окружение и речевой кодек реального времени
Фиг.2 - это блок-схема обобщенного сетевого окружения (200), в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления. Сеть (250) отделяет различные компоненты стороны кодера от различных компонентов стороны декодера.
Первичными функциями компонентов стороны кодера и стороны декодера является кодирование и декодирование речи соответственно. На стороне кодера входной буфер (210) принимает и сохраняет речевой входной сигнал (202). Речевой кодер (230) принимает речевой входной сигнал (202) из входного буфера (210) и кодирует его.
В частности, разделитель (212) кадров разделяет выборки речевого входного сигнала (202) на кадры. В одной реализации кадры имеют одинаковую длину в 20 мс - 160 выборок для входа в 8 кГц и 320 выборок для входа в 16 кГц. В других реализациях кадры имеют различную продолжительность, являются неоднородными и перекрывающимися и/или частота дискретизации входного сигнала (202) различная. Кадры могут быть организованы в суперкадр/кадр, кадр/субкадр или другую конфигурацию для различных каскадов кодирования и декодирования.
Классификатор (214) кадров классифицирует кадры согласно одному или более критериев, таких как энергия сигнала, частота переходов через нуль, усиление долговременного предсказания, дифференциал усиления и/или другие критерии для субкадров или целых кадров. На основе критериев классификатор (214) кадров классифицирует различные кадры на классы, такие как неозвученные (паузы), невокализованные, вокализованные и переходы (к примеру, от невокализованных к вокализованным). Дополнительно кадры могут быть классифицированы согласно типу избыточного кодирования, если применено, которое используется для кадра. Класс кадров влияет на параметры, которые должны быть вычислены для того, чтобы кодировать кадр. Помимо этого класс кадров может влиять на разрешение и устойчивость к потерям, с которыми кодированы параметры, с тем чтобы предоставлять большее разрешение и устойчивость к потерям для более важных классов и параметров. Например, неозвученные кадры в типичном варианте кодируются на очень низкой скорости, их очень просто восстанавливать посредством маскировки, если потеряны, и они могут не требовать защиты от потерь. Невокализованные кадры в типичном варианте кодируются с немного более высокой скоростью, их достаточно просто восстанавливать посредством маскировки, если потеряны, и они не защищены в значительной степени от потерь. Вокализованные и переходные кадры обычно кодируются с помощью большего числа битов в зависимости от сложности кадра, а также наличия переходов. Вокализованные и переходные кадры также трудно восстанавливать, если потеряны, и они в большей степени защищены от потерь. Альтернативно классификатор (214) кадров использует другие и/или дополнительные классы кадров.
Входной речевой сигнал может быть разделен на поддиапазонные сигналы до применения модели кодирования, такой как модель CELP-кодирования, к информации поддиапазона для кадра. Это может осуществляться с помощью одной или более групп фильтров анализа (таких как QMF-фильтры анализа) (216). Например, если должна быть использована трехдиапазонная структура, то полоса нижних частот может быть отделена посредством прохождения сигнала через фильтр нижних частот. Аналогично высокая полоса может быть отделена посредством прохождения сигнала через фильтр верхних частот. Средняя полоса может быть отделена посредством передачи сигнала через полосовой фильтр, который может включать в себя фильтр нижних частот и фильтр верхних частот последовательно. Альтернативно могут быть использованы другие типы компоновок фильтров для разделения на поддиапазоны и/или временных характеристик фильтрации (к примеру, до распределения кадров). Если только одна полоса должна быть декодирована для части сигнала, эта часть может обходить группы (216) фильтров анализа. CELP-кодирование в типичном варианте имеет более высокую эффективность кодирования, чем ADPCM и MLT для речевых сигналов.
Число полос n может быть определено посредством частоты дискретизации. Например, в одной реализации однодиапазонная структура используется для частоты дискретизации 8 кГц. Для частот дискретизации 16 кГц и 22,05 кГц может быть использована трехдиапазонная структура, как показано на фиг.3. В трехдиапазонной структуре по фиг.3 полоса (310) низших частот занимает половину полной полосы F пропускания (от 0 до 0,5 F). Другая половина полосы пропускания поделена равномерно между средней полосой (320) и верхней полосой (330). Вблизи пересечений полос частотная характеристика для полосы может постепенно снижаться от уровня пропускания до уровня заграждения, что характеризуется ослаблением сигнала на обеих сторонах по мере того, как достигается пересечение. Другие разделения полосы пропускания частот также могут быть использованы. Например, для частоты дискретизации в 32 кГц может быть использована равномерно распределенная четырехдиапазонная структура.
Полоса низших частот в типичном варианте является наиболее важной полосой для речевых сигналов, поскольку энергия сигнала в типичном варианте затухает в направлении более высоких частотных диапазонов. Соответственно полоса низших частот зачастую кодируется с помощью большего числа битов, чем другие полосы. В сравнении с однодиапазонной структурой кодирования поддиапазонная структура является более гибкой и обеспечивает лучшее управление шумом распределения/квантования в частотных диапазонах. Следовательно, считается, что воспринимаемое качество речи значительно повышается за счет использования поддиапазонной структуры.
На фиг.2 каждый поддиапазон кодируется отдельно, как проиллюстрировано посредством компонентов (232, 234) кодирования. Хотя компоненты (232, 234) диапазонного кодирования показаны отдельно, кодирование всех может осуществляться посредством одного кодера или они могут кодироваться посредством отдельных кодеров. Это диапазонное кодирование подробнее описывается ниже со ссылкой на фиг.4. Альтернативно кодек может работать как однодиапазонный кодер.
Результирующая кодированная речь предоставляется в программное обеспечение для одного или более уровней (240) организации сетей посредством мультиплексора (MUX) (236). Уровни (240) организации сетей обрабатывают кодированную речь для передачи по сети (250). Например, программное обеспечение сетевого уровня упаковывает кадры информации кодированной речи в пакеты, которые соответствуют RTP-протоколу, которые передаются по Интернету с помощью UDP, IP и различных протоколов физического уровня. Альтернативно используются другие и/или дополнительные уровни программного обеспечения или протоколов организации сетей. Сеть (250) - это глобальная вычислительная сеть с коммутацией пакетов, например Интернет. Альтернативно сеть (250) - это локальная вычислительная сеть или другой тип сети.
На стороне декодера программное обеспечение для одного или более уровней (260) организации сетей принимает и обрабатывает передаваемые данные. Протоколы сетевого, транспортного и более высоких уровней и программное обеспечение на уровне(ях) (260) организации сетей декодера обычно соответствуют протоколам на уровне(ях) (240) организации сетей кодера. Уровень(и) организации сетей предоставляют речевую кодированную информацию речи в речевой кодер (270) посредством демультиплексора (DEMUX) (276). Декодер (270) декодирует каждый из поддиапазонов отдельно, как проиллюстрировано в модулях (272, 274) декодирования. Все поддиапазоны могут декодироваться посредством отдельного декодера или могут декодироваться посредством отдельных диапазонных декодеров.
Декодированные поддиапазоны затем синтезируются в последовательности из одной или более групп синтезирующих фильтров (таких как синтезирующие QMF-фильтры) (280), которые выводят декодированную речь (292). Альтернативно используются другие типы компоновок фильтров для поддиапазонного синтеза. Если имеется только одна полоса, то декодированная полоса может обходить группы (280) фильтров.
Декодированный речевой выходной сигнал (292) также может передаваться через один или более пост-фильтров (284), чтобы повысить качество результирующего отфильтрованного речевого выходного сигнала (294). Так же каждый диапазон может отдельно проходить через один или более пост-фильтров до входа в группы (280) фильтров.
Один обобщенный речевой полосовой кодер реального времени описан ниже со ссылкой на фиг.6, но вместо него могут быть использованы другие речевые кодеры. Дополнительно некоторые или все из описанных средств и методов могут быть использованы с другими типами аудиокодеров и декодеров, например музыкальными кодерами и декодерами, либо аудиокодерами и декодерами общего назначения.
Помимо этих первичных функций кодирования и декодирования компоненты также могут совместно использовать информацию (показанную пунктирными линиями на фиг.2), чтобы контролировать скорость, качество и/или устойчивость к помехам кодированной речи. Контроллер (220) скорости учитывает множество факторов, таких как сложность текущего ввода во входной буфер (210), заполненность выходных буферов в кодере (230) или в другом месте, требуемая скорость вывода, текущая полоса пропускания сети, режимы перегруженности/шума сети и/или скорость потерь декодера. Декодер (270) отправляет обратно информацию скорости потерь декодера в контроллер (220) скорости. Уровни (240, 260) организации сетей собирают или оценивают информацию о текущей пропускной способности сети и режимах перегруженности/шума, которая отправляется обратно в контроллер (220) скорости. Альтернативно контроллер (220) скорости учитывает другие и/или дополнительные факторы.
Контроллер (220) скорости направляет речевой кодер (230), чтобы изменять скорость, качество и/или устойчивость к ошибкам, с которыми кодируется речь. Кодер (230) может изменять скорость и качество посредством корректировки коэффициентов квантования для параметров или изменения разрешения кодов по энтропии, представляющих параметров. Дополнительно кодер может изменять устойчивость к потерям посредством корректировки скорости или типа избыточного кодирования. Таким образом, кодер (230) может изменять распределение битов между первичными функциями кодирования и функциями устойчивости к потерям в зависимости от сетевых режимов.
Контроллер (220) скорости может определять режимы кодирования для каждого поддиапазона каждого кадра на основе нескольких факторов. Эти факторы могут включать в себя характеристики сигнала каждого поддиапазона, предысторию потока битов и целевую скорость передачи битов. Например, как описано выше, в общем, меньшее число битов требуется для более простых кадров, таких как невокализованные и неозвученные кадры, и большее число битов требуется для более сложных кадров, таких как переходные кадры. Дополнительно меньшее число битов может требоваться для некоторых полос, например полос верхних частот. Более того, если средняя скорость передачи битов в буфере предыстории потока битов меньше целевой скорости передачи битов, более высокая скорость передачи битов может быть использована для текущего кадра. Если средняя скорость передачи битов меньше целевой скорости передачи битов, то меньшая скорость передачи битов может быть выбрана для текущего кадра, чтобы снизить среднюю скорость передачи битов. Дополнительно один или более диапазонов могут быть опущены из одного или более кадров. Например, кадры средних и верхних частот могут быть опущены для невокализованных кадров или они могут быть опущены для всех кадров в течение определенного периода времени, чтобы снизить скорость передачи кадров на это время.
Фиг.4 - это блок-схема обобщенного речевого диапазонного кодера реального времени (400), в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления. Диапазонный кодер (400), в общем, соответствует одному из компонентов (232, 234) диапазонного кодирования на фиг.2.
Диапазонный кодер (400) принимает диапазонный входной сигнал (402) из группы фильтров (или других фильтров), если сигнал (к примеру, текущий кадр) разделен на несколько диапазонов. Если текущий кадр не разделен на несколько диапазонов, то диапазонный входной сигнал (402) включает в себя выборки, которые представляют всю полосу пропускания. Диапазонный кодер формирует кодированный диапазонный выходной сигнал (492).
Если сигнал разделен на несколько диапазонов, то компонент (420) понижающей дискретизации может выполнять понижающую дискретизацию для каждого диапазона. В качестве примера если частота дискретизации задана равной 16 кГц и каждый кадр имеет длительность 12 мс, то каждый кадр включает в себя 320 выборок. Если понижающая дискретизация не выполнена и кадр разбит на трехдиапазонную структуру, показанную на фиг.3, то в три раза больше выборок (т.е. 320 выборок на диапазоны или всего 960 выборок) должно быть кодировано и декодировано для каждого кадра. Тем не менее, для каждого диапазона может быть выполнена понижающая дискретизация. Например, для полосы (310) нижних частот может быть выполнена понижающая дискретизация с 320 выборок до 160 выборок, и для каждой из средней полосы (320) и верхней полосы (330) может быть выполнена понижающая дискретизация с 320 выборок до 80 выборок, при этом полосы (310, 320, 330) занимают половину, четверть и четверть частотного диапазона соответственно. Степень понижающей дискретизации (420) в этой реализации варьируется относительно частотного диапазона полос (310, 320, 330). Тем не менее, допускаются другие реализации. На более поздних фазах меньшее число битов в типичном варианте используется для более высоких полос, поскольку энергия сигнала в типичном варианте падает в направлении более высоких частотных диапазонов. Соответственно это предоставляет всего 320 выборок, которые должны быть кодированы и декодированы для кадра.
Считается, что даже при этой понижающей дискретизации каждой полосы поддиапазонный кодек может формировать выходной сигнал с более высоким качеством голоса, чем однодиапазонный кодек, поскольку он является более гибким. Например, он может быть более гибким при управлении шумом квантования на основе диапазона вместо использования одного подхода для всего частотного спектра. Каждый из поддиапазонов может кодироваться с различными свойствами (такими как различное число и/или типы каскадов таблиц кодирования, как описано ниже). Эти свойства могут быть определены посредством управления скоростью, описанного выше, на основе нескольких факторов, в том числе характеристик сигнала каждого поддиапазона, предыстории буфера потока битов и целевой скорости передачи битов. Как описано выше, в типичном варианте меньшее число битов требуется для "простых" кадров, таких как невокализованные и неозвученные кадры, и большее число битов требуется для "сложных" кадров, таких как переходные кадры. Если средняя скорость передачи битов в буфере предыстории потока битов меньше целевой скорости передачи битов, более высокая скорость передачи битов может быть использована для текущего кадра. В противном случае более низкая скорость передачи битов выбирается для того, чтобы снизить среднюю скорость передачи битов. В поддиапазонном кодеке каждая полоса может характеризоваться таким образом и кодироваться соответственно вместо охарактеризовывания всего частотного спектра одинаковым образом. Дополнительно управление скоростью позволяет снизить скорость передачи битов за счет исключения одной или более из более высокочастотных полос для одного или более кадров.
Компонент (430) LP-анализа вычисляет коэффициенты (432) линейного предсказания. В одной реализации LP-фильтр использует 10 коэффициентов для входного сигнала в 8 кГц и 16 коэффициентов для входного сигнала в 16 кГц, а компонент (430) LP-анализа вычисляет один набор коэффициентов линейного предсказания на кадр для каждой полосы. Альтернативно компонент (430) LP-анализа вычисляет два набора коэффициентов на кадр для каждой полосы, по одному на каждое из двух окон, центрированных в различных позициях, либо вычисляет различное число коэффициентов на полосу и/или на кадр.
Компонент (435) LPC-обработки принимает и обрабатывает коэффициенты (432) линейного предсказания. В типичном варианте компонент (435) LPC-обработки преобразует LPC-значения к различному представлению для более эффективного квантования и кодирования. Например, компонент (435) LPC-обработки преобразует LPC-значения к представлению пары спектральных линий (LSP), и LSP-значения квантуются (к примеру, посредством векторного квантования) и кодируются. LSP-значения могут быть внутренне кодированы или предсказаны из других LSP-значений. Допускаются различные представления, методы квантования и методы кодирования для LPC-значений. LPC-значения предоставляются в некоторой форме как часть кодированного диапазонного выходного сигнала (492) для пакетирования и передачи (наряду со всеми параметрами квантования и другой информацией, требуемой для восстановления). Для последующего применения в кодере (400) компонент (435) LPC-обработки восстанавливает LPC-значения. Компонент (435) LPC-обработки может выполнять интерполяцию для LPC-значений (например, эквивалентно в LSP-представлении или другом представлении), чтобы сглаживать переходы между различными наборами LPC-коэффициентов или между LPC-коэффициентами, используемыми для различных субкадров из кадров.
Синтезирующий (или "кратковременного предсказания") фильтр (440) принимает восстановленные LPC-значения (438) и включает их в фильтр. Синтезирующий фильтр (440) принимает сигнал возбуждения и формирует аппроксимацию исходного сигнала. Для данного кадра синтезирующий фильтр (440) может буферизовать ряд восстановленных выборок (к примеру, 10 для фильтра с десятью отводами) из предыдущего кадра для начала предсказания.
Компоненты (450, 455) перцепционного взвешивания применяют перцепционное взвешивание к исходному сигналу и моделированному выводу синтезирующего фильтра (440), так чтобы выборочно ослабить формантную структуру речевого сигнала, чтобы сделать акустические системы менее чувствительными к ошибкам квантования. Компоненты (450, 455) перцепционного взвешивания используют психоакустический феномен, такой как маскировка. В одной реализации компоненты (450, 455) перцепционного взвешивания применяют весовые коэффициенты на основе исходных LPC-значений (432), принятых от компонента (430) LP-анализа. Альтернативно компоненты (450, 455) перцепционного взвешивания применяют другие и/или дополнительные весовые коэффициенты.
После компонентов (450, 455) перцепционного взвешивания кодер (400) вычисляет разность между перцепционно взвешенным исходным сигналом и перцепционно взвешенным выводом синтезирующего фильтра (440), чтобы сформировать разностный (434) сигнал. Альтернативно кодер (400) использует другой метод для того, чтобы вычислить речевые параметры.
Компонент (460) параметризации возбуждения стремится отыскать оптимальную комбинацию индексов адаптивной таблицы кодирования, индексов фиксированной таблицы кодирования и индексов таблицы кодирования усиления в отношении минимизации разности между перцепционно взвешенным исходным сигналом и синтезированным сигналом (в отношении взвешенной среднеквадратической ошибки или других критериев). Многие параметры вычисляются на субкадр, но чаще параметры могут быть на суперкадр, кадр или субкадр. Как описано выше, параметры для различных полос кадра или субкадра могут различаться. Табл.2 иллюстрирует доступные типы параметров для различных классов кадров в одной реализации.
<b>Таблица 2</b>
<b>Параметры для различных классов кадров</b>
<b>Класс кадров</b>
<b>Параметр(ы)</b>
Бесшумные
Информация класса; LSP; усиление (на кадр, для сформированного шума)
Невокализованные
Информация класса; LSP; параметры импульсной, произвольной таблицы кодирования и таблицы кодирования усиления
Вокализованные
Информация класса; LSP; параметры адаптивной, импульсной, произвольной таблицы кодирования и таблицы кодирования усиления (на субкадр)
Переходные
На фиг.4 компонент (460) параметризации возбуждения подразделяет кадр на субкадры и вычисляет индексы таблицы кодирования и усиления для каждого субкадра при необходимости. Например, число и тип каскадов таблиц кодирования, которые должны быть использованы, и разрешения индексов таблицы кодирования первоначально могут быть определены посредством режима кодирования, при этом режим может определяться посредством компонента управления скоростью, описанного выше. Конкретный режим также может определять параметры кодирования и декодирования, отличные от числа и типа каскадов таблиц кодирования, например разрешение индексов таблицы кодирования. Параметры каждого каскада таблицы кодирования определяются посредством оптимизации параметров, чтобы минимизировать ошибку между целевым сигналом и вкладом каскада таблицы кодирования в синтезированном сигнале. (При использовании в данном документе термин "оптимизировать" означает нахождение подходящего решения в рамках применимых ограничений, таких как снижение искажения, время поиска параметров, сложность поиска параметров, скорость передачи битов параметров и т.д., в отличие от выполнения полного поиска в пространстве параметров. Аналогично термин "минимизировать" следует понимать в отношении нахождения подходящего решения в рамках применимых ограничений.) Например, оптимизация может выполняться с помощью модифицированного метода среднеквадратической ошибки. Целевой сигнал для каждого каскада - это разность между остаточным сигналом и суммой вкладов предыдущих каскадов таблиц кодирования, если имеются, в синтезированном сигнале. Альтернативно могут быть использованы другие методики оптимизации.
Фиг.5 иллюстрирует метод определения параметров таблицы кодирования согласно одной реализации. Компонент (460) параметризации возбуждения выполняет данный метод, возможно вместе с другими компонентами, такими как контроллер скорости. Альтернативно этот метод выполняется другим компонентом в кодере.
Согласно фиг.5 для каждого субкадра в вокализованном или переходном кадре компонент (460) параметризации возбуждения определяет (510), может ли адаптивная таблица кодирования быть использована для текущего субкадра. (Например, управление скоростью может предписывать, что адаптивная таблица кодирования не должна быть использована для конкретного кадра). Если адаптивная таблица кодирования не должна быть использована, то переключатель адаптивной таблицы кодирования должен указывать то, что адаптивные таблицы кодирования не должны быть использованы (535). Например, это может осуществляться посредством задания однобитового флага на уровне кадров, показывающего, что адаптивные таблицы не используются в кадре, посредством указания конкретного режима кодирования на уровне кадров либо посредством задания однобитового флага для каждого субкадра, показывающего, что адаптивные таблицы не используются в субкадре.
Например, компонент управления скоростью может исключить адаптивную таблицу кодирования для кадра, тем самым устраняя наиболее существенную зависимость от памяти между кадрами. Для речевых кадров, в частности, типичный сигнал возбуждения характеризуется посредством периодического шаблона. Адаптивная таблица кодирования включает в себя индекс, который представляет запаздывание, указывающее позицию сегмента возбуждения в буфере предыстории. Сегмент предыдущего возбуждения масштабируется так, чтобы быть вкладом адаптивной таблицы кодирования в сигнал возбуждения. В декодере информация адаптивной таблицы кодирования в типичном варианте имеет достаточно большое значение при восстановлении сигнала возбуждения. Если предыдущий кадр потерян и индекс адаптивной таблицы кодирования указывает назад на сегмент предыдущего кадра, то индекс адаптивной таблицы кодирования в типичном варианте не подходит, поскольку он указывает на несуществующую информацию предыстории. Даже если применяются методы маскирования для восстановления этой потерянной информации, последующее восстановление также основано на неидеально восстановленном сигнале. Это обуславливает повторное появление ошибки в последующих кадрах, поскольку информация запаздывания в типичном варианте является чувствительной.
Соответственно потеря пакетов, которая основана на следующей таблице кодирования, может приводить к длительному ухудшению, которое исчезает только после того, как множество параметров декодировано, либо когда обнаружен кадр без адаптивной таблицы кодирования. Эта проблема может быть смягчена посредством регулярной вставки так называемых опорных кадров в поток пакетов, которые не имеют зависимости от памяти между кадрами. Таким образом, ошибки будут распространяться только до следующего опорного кадра. Соответственно предусмотрен компромисс между качеством речевого сигнала и лучшей характеристикой относительно потери пакетов, поскольку эффективность кодирования адаптивной таблицы кодирования обычно выше, чем эффективность кодирования фиксированных таблиц кодирования. Компонент управления скоростью может определить, когда выгодно запретить адаптивные таблицы кодирования для конкретного кадра. Переключатель адаптивной таблицы кодирования может быть использован для того, чтобы не допустить использования адаптивных таблиц кодирования для конкретного кадра, тем самым устраняя то, что в типичном варианте является наиболее существенной зависимостью от предыдущих кадров (память LPC-интерполяции и синтезирующего фильтра также может базироваться на предыдущих кадрах в некоторой степени). Таким образом, переключатель адаптивной таблицы кодирования может быть использован посредством компонента управления скоростью для того, чтобы создавать квазиопорный кадр динамически на основе таких факторов, как частота ошибок пакетов (т.е. когда частота ошибок пакетов высокая, большее число опорных кадров может быть вставлено, чтобы обеспечивать возможность более быстрого восстановления исходного состояния памяти).
Согласно фиг.5 если может быть использована адаптивная таблица кодирования, то компонент (460) определяет параметры адаптивной таблицы кодирования. Эти параметры включают в себя индекс или значение основного тона, которое указывает требуемый сегмент истории сигнала возбуждения, а также усиление для применения к требуемому сегменту. На фиг.4 и 5 компонент (460) выполняет поиск основного тона с замкнутым контуром (520). Этот поиск начинается с основного тона, определенного посредством необязательного компонента (425) поиска основного тона с разомкнутым контуром на фиг.4. Компонент (425) поиска основного тона с разомкнутым контуром анализирует взвешенный сигнал, сформированный компонентом (450) взвешивания, чтобы оценить основной тон. Начиная с этого оцененного основного тона, поиск (520) основного тона с замкнутым контуром оптимизирует значение основного тона, чтобы уменьшить ошибку между целевым сигналом и взвешенным синтезированным сигналом, сформированным из указанного сегмента истории сигнала возбуждения. Значение усиления адаптивной таблицы кодирования также оптимизируется (525). Значение усиления адаптивной таблицы кодирования показывает множитель для применения к предсказанным значениям основного тона (значениям из указанного сегмента истории сигнала возбуждения), чтобы скорректировать масштаб значений. Усиление, умноженное на предсказанные значения основного тона, - это вклад адаптивной таблицы кодирования в сигнал возбуждения для текущего кадра или субкадра. Оптимизация (525) усиления формирует значение усиления и значение индекса, которые минимизируют ошибку между целевым сигналом и взвешенным синтезированным сигналом из вклада адаптивной таблицы кодирования.
После того как значения основного тона и усиления определены, определяется (530), является ли вклад адаптивной таблицы кодирования достаточно существенным для надлежащего числа битов, используемых для параметров адаптивной таблицы кодирования. Если усиление адаптивной таблицы кодирования меньше порога, адаптивная таблица кодирования деактивируется, чтобы сэкономить биты для фиксированной таблицы кодирования, описанной ниже. В одной реализации используется пороговое значение 0,3, хотя другие значения альтернативно могут быть использованы в качестве порогового значения. В качестве примера если текущий режим кодирования использует адаптивную таблицу кодирования плюс импульсную таблицу кодирования с пятью импульсами, то может быть использована таблица кодирования с семью импульсами, когда адаптивная таблица кодирования деактивирована, и общее число битов по-прежнему будет таким же или меньшим. Как описано выше, однобитовый флаг для каждого субкадра может быть использован для указания переключения адаптивной таблицы кодирования для субкадра. Таким образом, если адаптивная таблица кодирования не используется, переключение задается для указания, что адаптивная таблица кодирования не используется в субкадре (535). Аналогично если адаптивная таблица кодирования используется, переключение задается таким образом, чтобы указывать то, что адаптивная таблица кодирования используется в субкадре, и параметры адаптивной таблицы кодирования сообщаются (540) в потоке битов. Хотя фиг.5 иллюстрирует передачу сообщения после определения, сигналы пакетируются до тех пор, пока данный метод не будет выполнен для кадра или суперкадра.
Компонент (460) параметризации возбуждения также определяет то (550), используется ли импульсная таблица кодирования. В одной реализации использование или неиспользование импульсной таблицы кодирования указывается как часть общего режима кодирования для текущего кадра, или оно может быть указано либо определено другими способами. Импульсная таблица кодирования - это тип фиксированной таблицы кодирования, которая задает один или более импульсов, которые должны быть добавлены к сигналу возбуждения. Параметры индексной таблицы кодирования включают в себя пары индексов и знаков (усиления могут быть положительными или отрицательными). Каждая пара указывает импульс, который должен быть включен в сигнал возбуждения, причем индекс указывает позицию импульса, а знак указывает полярность импульса. Число импульсов, включенных в импульсную таблицу кодирования и используемых для добавления в сигнал возбуждения, может варьироваться в зависимости от режима кодирования. Дополнительно число импульсов может зависеть от того, используется или нет адаптивная таблица кодирования.
Если импульсная таблица кодирования используется, то параметры импульсной таблицы кодирования оптимизируются (555) таким образом, чтобы минимизировать ошибку между вкладом указанных импульсов и целевым сигналом. Если адаптивная таблица кодирования не используется, то целевым сигналом является взвешенный исходный сигнал. Если адаптивная таблица кодирования используется, то целевым сигналом является разность между взвешенным исходным сигналом и вкладом адаптивной таблицы кодирования во взвешенный синтезированный сигнал. В некоторой точке (не показана) параметры импульсной таблицы кодирования затем сообщаются в потоке битов.
Компонент (460) параметризации параметров также определяет (565) то, должны ли быть использованы какие-либо каскады произвольной фиксированной таблицы кодирования. Число (если имеются) каскадов произвольной таблицы кодирования указывается как часть общего режима кодирования для текущего кадра, хотя это может указываться другими способами. Произвольная таблица кодирования - это тип фиксированной таблицы кодирования, которая использует заранее заданную модель сигналов для значений, которые она кодировала. Параметры таблицы кодирования могут включать в себя начальную точку для указанного сегмента модели сигналов и знак, который может быть положительным или отрицательным. Длина или диапазон указанного сегмента в типичном варианте является фиксированным и, следовательно, в типичном варианте не сообщается, но альтернативно длина или размер указанного сигнала сообщается. Усиление умножается на значения в указанном сигнале, чтобы сформировать вклад произвольной таблицы кодирования в сигнал возбуждения.
Если используется, по меньшей мере, один каскад произвольной таблицы кодирования, то параметры каскада таблицы кодирования для этого каскада таблицы кодирования оптимизируются (570), чтобы минимизировать ошибку между вкладом каскада произвольной таблицы кодирования и целевым сигналом. Целевой сигнал - это разность между взвешенным исходным сигналом и суммой вклада во взвешенный синтезированный сигнал адаптивной таблицы кодирования (если имеется), импульсной таблицы кодирования (если имеется) и ранее определенных каскадов произвольной таблицы кодирования (если имеется). В некоторой точке (не показана) параметры произвольной таблицы кодирования затем сообщаются в потоке битов.
Компонент (460) далее определяет (580) то, должны ли быть использованы какие-либо каскады произвольных таблиц кодирования. Если да, то параметры следующего каскада произвольной таблицы кодирования оптимизируются (570) и сообщаются так, как описано выше. Это продолжается до тех пор, пока все параметры для каскадов произвольной таблицы кодирования не будут определены. Все каскады произвольных таблиц кодирования могут использовать одну модель сигналов, хотя они, вероятно, указывают различные сегменты из модели и имеют различные значения усиления. Альтернативно различные модели сигналов могут быть использованы для различных каскадов произвольной таблицы кодирования.
Каждое усиление возбуждения может быть квантовано независимо или два, или более усилений могут быть квантованы вместе, как определено посредством контроллера скорости и/или других компонентов.
Хотя конкретный порядок изложен в данном документе для оптимизации различных параметров таблицы кодирования, могут быть использованы другой порядок и методы оптимизации. Таким образом, хотя фиг.5 иллюстрирует последовательное вычисление различных параметров таблицы кодирования, альтернативно два или более различных параметров таблицы кодирования оптимизируются совместно (к примеру, посредством совместного варьирования параметров и оценки результатов согласно определенной методике нелинейной оптимизации). Дополнительно другие конфигурации таблиц кодирования или другие параметры сигнала возбуждения могут быть использованы.
Сигнал возбуждения в этой реализации является суммой всех вкладов адаптивной таблицы кодирования, импульсной таблицы кодирования и каскада(ов) произвольной таблицы кодирования. Альтернативно компонент (460) может вычислять другие и/или дополнительные параметры сигнала возбуждения.
Согласно фиг.4 параметры таблицы кодирования для сигнала возбуждения сообщаются или иным образом предоставляются в локальный декодер (465) (заключенный в пунктирные линии на фиг.4), а также в диапазонный выходной сигнал (492). Таким образом, для каждой полосы выходной сигнал (492) кодера включает в себя выходной сигнал из компонента (435) LPC-обработки, описанного выше, а также выходной сигнал из компонента (460) параметризации возбуждения.
Скорость передачи битов выходного сигнала (492) частично зависит от параметров, используемых посредством таблиц кодирования, и кодер (400) может управлять скоростью передачи битов и/или качеством посредством переключения между различными наборами индексов таблицы кодирования, используя вложенные коды или используя другие методы. Различные комбинации типов и каскадов таблиц кодирования могут предоставлять различные режимы кодирования для различных кадров, полос и/или субкадров. Например, невокализованный кадр может использовать только один каскад произвольной таблицы кодирования. Адаптивная таблица кодирования или импульсная таблица кодирования может быть использована для вокализованного кадра с низкой скоростью. Кадр с высокой скоростью может быть кодирован с помощью адаптивной таблицы кодирования, импульсной таблицы кодирования и одного или более каскадов произвольной таблицы кодирования. В одном кадре комбинирование всех режимов кодирования всех поддиапазонов может называться набором режимов. Может быть предусмотрено несколько заранее заданных наборов режимов для каждой частоты дискретизации, при этом различные режимы соответствуют различным скоростям передачи битов. Модуль управления скоростью может определять или оказывать влияние на набор режимов для каждого кадра.
Диапазон различных скоростей передачи битов может быть достаточно большим для описанных реализаций и может формировать существенные улучшения в результирующем качестве. В стандартных кодерах число битов, которые используются для импульсной таблицы кодирования, также может варьироваться, но слишком много битов может приводить просто к импульсам, которые являются чрезмерно сжатыми. Аналогично когда используется только одна таблица кодирования, добавление большего числа битов может предоставлять возможность использования более крупной модели сигналов. Тем не менее, это может существенно повышать сложность поиска оптимальных сегментов модели. В отличие от этого дополнительные типы таблиц кодирования и дополнительные каскады произвольных таблиц кодирования могут добавляться без существенного увеличения сложности отдельных поисков в таблицах кодирования (в сравнении с поиском в одной комбинированной таблице кодирования). Более того, множество каскадов произвольных таблиц кодирования и множество типов фиксированных таблиц кодирования обеспечивают возможность использования множества коэффициентов усиления, что обеспечивает большую гибкость сопоставления формы сигнала.
Согласно фиг.4 выходной сигнал компонента (460) параметризации возбуждения принимается посредством компонентов (470, 472, 474, 476) реконструкции таблиц кодирования и компонентов (480, 482, 484, 486) применения усиления, соответствующих таблицам кодирования, используемым компонентом (460) параметризации. Каскады (470, 472, 474, 476) таблиц кодирования и соответствующие компоненты (480, 482, 484, 486) применения усиления восстанавливают вклады таблиц кодирования. Эти вклады суммируются, чтобы сформировать сигнал (490) возбуждения, который принимается посредством синтезирующего фильтра (440), где он используется совместно с "предсказанными" выборками, из которых осуществляется последующее линейное предсказание. Задержанные части сигнала возбуждения также используются в качестве сигнала предыстории возбуждения посредством компонента (470) реконструкции адаптивных таблиц кодирования, чтобы восстанавливать последующие параметры адаптивной таблицы кодирования (к примеру, вклад основного тона), и посредством компонента (460) параметризации при вычислении последующих параметров адаптивной таблицы кодирования (к примеру, значений индекса основного тона и усиления основного тона).
Согласно фиг.2 диапазонный выходной сигнал для каждой полосы принимается посредством MUX (236) наряду с другими параметрами. Эти другие параметры могут включать в себя помимо другой информации информацию (222) класса кадров из классификатора (214) кадров и режимов кодирования кадров. MUX (236) составляет пакеты прикладного уровня, чтобы передавать их в другое программное обеспечение, или MUX (236) помещает данные в рабочую часть пакетов, которые следуют такому протоколу, как RTP. MUX может буферизовать параметры, с тем чтобы обеспечить выборочное повторение параметров для прямого исправления ошибок в последующих пакетах. В одной реализации MUX (236) упаковывает в один пакет первичную кодированную речевую информацию для одного кадра наряду с информацией прямого исправления ошибок для всех или части одного или более предыдущих кадров.
MUX (236) предоставляет обратную связь, такую как текущая заполненность буфера, для целей управления скоростью. Обобщая, различные компоненты кодера (230) (в том числе классификатор (214) кадров и MUX (236)) могут предоставлять информацию в контроллер (220) скорости, такой как показанный на фиг.2.
DEMUX (276) потока битов по фиг.2 принимает кодированную речевую информацию в качестве входного сигнала и синтаксически анализирует ее, чтобы идентифицировать и обработать параметры. Параметры могут включать в себя класс кадров, определенное представление LPC-параметров и параметры таблиц кодирования. Класс кадров может указывать то, какие другие параметры представлены для данного кадра. DEMUX (276) использует протоколы, используемые кодером (230), и извлекает параметры, которые кодер (230) упаковывает в пакеты. Для пакетов, принимаемых посредством динамической сети с коммутацией пакетов, DEMUX (276) включает в себя буфер флуктуаций, чтобы сглаживать краткосрочные колебания частоты пакетов за данный период времени. В некоторых случаях декодер (270) регулирует задержку буфера и управляет тем, когда пакеты считываются из буфера, чтобы интегрировать задержку, управление качеством, маскирование отсутствующих кадров и т.д. в декодирование. В других случаях компонент прикладного уровня управляет буфером флуктуаций, и буфер флуктуаций заполняется на переменной скорости и очищается посредством декодера (270) на постоянной или относительно постоянной скорости.
DEMUX (276) может принимать несколько версий параметров для данного сегмента, в том числе первичную кодированную версию и одну или более вторичных версий после исправления ошибок. Когда исправление ошибок завершается неудачно, декодер (270) использует методы маскирования, такие как повторение параметров и оценка на основе информации, которая корректно принята.
Фиг.6 - это блок-схема обобщенного речевого диапазонного декодера (600) реального времени, в сочетании с которым могут быть реализованы один или более описанных вариантов осуществления. Диапазонный декодер (600), в общем, соответствует одному из компонентов (272, 274) диапазонного декодирования на фиг.2.
Диапазонный декодер (600) принимает кодированную речевую информацию (692) для полосы (которой может быть полная полоса или одна из нескольких поддиапазонов) в качестве входного сигнала и формирует восстановленный выходной сигнал (602) после декодирования. Компоненты декодера (600) имеют соответствующие компоненты в кодере (400), но в целом декодер (600) проще, поскольку в нем отсутствуют компоненты перцепционного взвешивания, контур обработки возбуждения и управление скоростью.
Компонент (635) LPC-обработки принимает информацию, представляющую LPC-значения, в форме предоставляемой посредством диапазонного кодера (400) (а также все параметры квантования и другую информацию, необходимую для реконструкции). Компонент (635) LPC-обработки восстанавливает LPC-значения (638) с помощью инверсии преобразования, квантования, кодирования и т.д., ранее примененных к LPC-значениям. Компонент (635) LPC-обработки также может выполнять интерполяцию LPC-значений (в LPC-представлении или другом представлении, таком как LSP), чтобы сглаживать переходы между различными наборами LPC-коэффициентов.
Каскады (670, 672, 674, 676) таблиц кодирования и компоненты (680, 682, 684, 686) применения усиления декодируют параметры любой из соответствующих каскадов таблиц кодирования, используемых для сигнала вычисления, и вычисляют вклад каждого каскада таблицы кодирования, который используется. Конфигурация и операции каскадов (670, 672, 674, 676) таблиц кодирования и компонентов (680, 682, 684, 686) усиления соответствуют конфигурации и операциям каскадов (470, 472, 474, 476) таблиц кодирования и компонентов (480, 482, 484, 486) усиления в кодере (400). Вклады используемых каскадов таблиц кодирования суммируются, и результирующий сигнал (690) возбуждения предоставляется в синтезирующий фильтр (640). Задержанные значения сигнала (690) возбуждения также используются в качестве предыстории возбуждения для адаптивной таблицы (670) кодирования при вычислении вклада адаптивной таблицы кодирования для последующих частей сигналов возбуждения.
Синтезирующий фильтр (640) принимает восстановленные LPC-значения (638) и включает их в фильтр. Синтезирующий фильтр (640) сохраняет ранее восстановленные выборки для обработки. Сигнал (690) возбуждения передается через синтезирующий фильтр, чтобы сформировать аппроксимацию исходного речевого сигнала. Согласно фиг.2, как описано выше, если имеется несколько поддиапазонов, поддиапазонный выходной сигнал для каждого поддиапазона синтезируется в группах (280) фильтров, чтобы сформировать речевой выходной сигнал (292).
Отношения, показанные на фиг.2-6, указывают общие потоки информации; другие отношения не показаны для простоты. В зависимости от реализации и требуемого типа сжатия компоненты могут добавляться, опускаться, разделяться на несколько компонентов, комбинироваться с другими компонентами и/или заменяться аналогичными компонентами. Например, в окружении (200), показанном на фиг.2, контроллер (220) скорости может быть комбинирован с речевым кодером (230). Возможные добавляемые компоненты включают в себя приложение кодирования (или воспроизведения) мультимедиа, которое управляет речевым кодером (или декодером), а также другими кодерами (или декодерами) и собирает информацию режима сети и кодера, и выполняет функции адаптивного исправления ошибок. В альтернативных вариантах осуществления различные комбинации и конфигурации компонентов обрабатывают речевую информацию с помощью методов, описанных в данном документе.
III. Методы избыточного кодирования
Одно возможное применение речевых кодеков предназначено для сетей речи-по-IP и других сетей с коммутацией пакетов. Эти сети имеют определенные преимущества над существующими инфраструктурами с коммутацией каналов. Тем не менее, в сетях "речь-по-IP" пакеты зачастую задерживаются или отбрасываются вследствие перегруженности сети.
Многие стандартные речевые кодеки имеют высокую межкадровую зависимость. Таким образом, для этих кодеков один потерянный кадр может вызывать серьезное ухудшение качества голоса в течение множества последующих кадров.
В других кодеках каждый кадр может декодироваться независимо. Эти кодеки являются устойчивыми к потерям пакетов. Тем не менее, эффективность кодирования в отношении качества и скорости передачи битов падает значительно в результате отклонения межкадровой зависимости. Таким образом, эти кодеки в типичном варианте требуют больших скоростей передачи битов, чтобы достигать качества голоса, аналогичного традиционным CELP-кодерам.
В некоторых вариантах осуществления методы избыточного кодирования, поясняемые ниже, могут способствовать достижению высокой эффективности восстановления потерь пакетов без существенного увеличения скорости передачи битов. Эти методы могут быть использованы совместно в рамках одного кодека либо они могут быть использованы отдельно.
В реализации кодера, описанной выше в связи с фиг.2 и 4, информация адаптивной таблицы кодирования в типичном варианте является основным источником зависимости от других кадров. Как описано выше, индекс адаптивной таблицы кодирования указывает позицию сегмента сигнала возбуждения в буфере предыстории. Сегмент предыдущего сигнала возбуждения масштабируется (согласно значению усиления) так, чтобы быть вкладом адаптивной таблицы кодирования в сигнал возбуждения текущего кадра (субкадра). Если предыдущий пакет, содержащий информацию, используемую для восстановления кодированного предыдущего сигнала возбуждения, потерян, то эта информация задержки текущего кадра (или субкадра) не используется, поскольку она указывает на несуществующую информацию предыстории. Поскольку информация задержки является чувствительной, это обычно приводит к большему ухудшению качества результирующего речевого вывода, ослабеваемому только после того, как декодировано множество пакетов.
Нижеследующие методы разработаны для устранения, по меньшей мере, в некоторой степени зависимости текущего сигнала возбуждения от восстановленной информации из предыдущих кадров, которые недоступны, поскольку они задержаны или потеряны.
Кодер, такой как кодер (230), описанный выше со ссылкой на фиг.2, может переключаться между следующими методами кодирования на покадровой основе или какой-либо другой основе. Соответствующий декодер, такой как декодер (270), описанный выше со ссылкой на фиг.2, переключается между следующими методами синтаксического разбора/декодирования на покадровой основе или какой-либо другой основе. Альтернативно другой кодер, декодер или средство обработки аудио осуществляет один или более из следующих методов.
A. Первичное повторное кодирование/декодирование предыстории адаптивной таблицы кодирования
При первичном повторном кодировании/декодировании предыстории адаптивной таблицы кодирования буфер предыстории возбуждения не используется для того, чтобы декодировать сигнал возбуждения текущего кадра, даже если буфер предыстории возбуждения доступен в декодере (принятый пакет предыдущего кадра, декодированный предыдущий кадр и т.д.). Вместо этого в декодере информация основного тона анализируется для текущего кадра, чтобы определить то, какая часть предыстории возбуждения требуется. Необходимая часть предыстории возбуждения повторно кодируется и отправляется вместе с кодированной информацией (к примеру, параметрами фильтрации, индексами таблицы кодирования и усилениями) для текущего кадра. Вклад адаптивной таблицы кодирования текущего кадра ссылается на повторно кодированный сигнал возбуждения, который передается с текущим кадром. Таким образом, гарантируется, что релевантная история возбуждения доступна в декодере для каждого кадра. Это избыточное кодирование необязательно, если текущий кадр не использует адаптивную таблицу кодирования, например невокализованный кадр.
Повторное кодирование указанной ссылкой части предыстории возбуждения может быть выполнено наряду с кодированием текущего кадра и может осуществляться таким же образом, что и кодирование сигнала возбуждения для текущего кадра, которое описано выше.
В некоторых реализациях кодирование сигнала возбуждения выполняется на основе субкадра, и сегмент повторно кодированного сигнала возбуждения идет от начала текущего кадра, который включает в себя текущий субкадр, обратно к границе субкадра за пределами самой дальней зависимости таблицы кодирования для текущего кадра. Повторно кодированный сигнал возбуждения таким образом доступен для ссылки с помощью информации основного тона для нескольких субкадров в кадре. Альтернативно кодирование сигнала возбуждения выполняется на какой-либо другой основе, к примеру покадрово.
Пример проиллюстрирован на фиг.7, который показывает предысторию (710) возбуждения. Границы (720) кадра и границы (730) субкадра показаны посредством больших и меньших пунктирных линий соответственно. Субкадры текущего кадра (740) кодируются с помощью адаптивной таблицы кодирования. Самая дальняя точка зависимости для любого индекса запаздывания адаптивной таблицы кодирования субкадра текущего кадра показана посредством линии (750). Следовательно, повторно кодированная предыстория (760) идет от начала текущего кадра обратно к границе следующего субкадра за пределами самой дальней точки (750). Самая дальняя точка зависимости может быть оценена с помощью результатов поиска (425) основного тона с разомкнутым контуром, описанного выше. Тем не менее, поскольку этот поиск не является точным, адаптивная таблица кодирования может зависеть от определенной части сигнала возбуждения, которая находится за пределами оцененной самой дальней точки, если последующий поиск основного тона не ограничен. Соответственно повторно кодированная предыстория может включать в себя дополнительные выборки за пределами оцененной самой дальней точки зависимости, чтобы предоставить дополнительный запас для нахождения совпадающей информации основного тона. В одной реализации, по меньшей мере, 10 дополнительных выборок за пределами оцененной самой дальней точки зависимости включаются в повторно кодированную предысторию. Разумеется, более 10 выборок может быть включено, чтобы повысить вероятность того, что повторно кодированная предыстория продолжается для включения в себя циклов основного тона, совпадающих с циклами в текущем субкадре.
Альтернативно только сегмент(ы) предыдущего сигнала возбуждения, фактически указанные ссылкой в субкадре(ах) текущего кадра, повторно кодируются. Например, сегмент предыдущего сигнала возбуждения, имеющего соответствующую продолжительность, повторно кодируется для использования при декодировании одного текущего сегмента этой продолжительности.
Первичное повторное кодирование/декодирование предыстории адаптивной таблицы кодирования устраняет зависимость от предыстории возбуждения предыдущих кадров. В то же время оно позволяет использовать адаптивные таблицы кодирования и не требует повторного кодирования всего предыдущего кадра(ов) (или даже всей предыстории возбуждения предыдущего кадра(ов)). Тем не менее, скорость передачи битов, требуемая для повторного кодирования памяти адаптивной таблицы кодирования, достаточно высокая в сравнении с методами, описанными ниже, особенно когда повторно кодированная история используется для первичного кодирования/декодирования с тем же уровнем качества, что и кодирование/декодирование с межкадровой зависимостью.
В качестве побочного результата первичного повторного кодирования/декодирования истории адаптивной таблицы кодирования кодированный сигнал возбуждения может быть использован для того, чтобы восстановить, по меньшей мере, часть сигнала возбуждения для предыдущего потерянного кадра. Например, повторно кодированный сигнал возбуждения восстанавливается в ходе декодирования субкадров текущего кадра, и повторно кодированный сигнал возбуждения вводится в синтезирующий LPC-фильтр, составленный с помощью фактических или оцененных коэффициентов фильтрации.
Результирующий восстановленный выходной сигнал может быть использован как часть вывода предыдущего кадра. Этот метод также способствует оцениванию первоначального состояния памяти синтезирующего фильтра для текущего кадра. С помощью повторно кодированной истории возбуждения и оцененного памяти синтезирующего фильтра вывод текущего кадра формируется таким же образом, как и при обычном кодировании.
B. Вторичное повторное кодирование/декодирование предыстории адаптивной таблицы кодирования
При вторичном повторном кодировании/декодировании предыстории адаптивной таблицы кодирования первичное кодирование адаптивной таблицы кодирования текущего кадра не изменяется. Аналогично первичное декодирование текущего кадра не изменяется, оно использует предысторию возбуждения предыдущего кадра, если предыдущий кадр принимается.
Для использования в том случае, если предыстория предыдущего возбуждения не восстановлена, буфер предыстории возбуждения повторно кодируется практически таким же образом, что и метод первичного повторного кодирования/декодирования предыстории адаптивной таблицы кодирования, описанной выше. Тем не менее, в сравнении с первичным повторным кодированием/декодированием меньшее число битов используется для повторного кодирования, поскольку на качество речи не влияет повторно кодированный сигнал, когда нет потерянных пакетов. Число битов, используемых для повторно кодирования предыстории возбуждения, может быть уменьшено посредством изменения различных параметров, например использования меньшего числа каскадов фиксированных таблиц кодирования или использования меньшего числа импульсов в импульсной таблице кодирования.
Когда предыдущий кадр потерян, повторно кодированная предыстория возбуждения используется в декодере для того, чтобы сформировать сигнал возбуждения адаптивной таблицы кодирования для текущего кадра. Повторно кодированная предыстория возбуждения также может быть использована для восстановления, по меньшей мере, части сигнала возбуждения для предыдущего потерянного кадра, как в методе первичного повторного кодирования/декодирования предыстории адаптивной таблицы кодирования.
Кроме того, результирующий восстановленный выходной сигнал может быть использован как часть вывода предыдущего кадра. Этот метод также способствует оцениванию первоначального состояния памяти синтезирующего фильтра для текущего кадра. С помощью повторно кодированной предыстории возбуждения и оцененной памяти синтезирующего фильтра вывод текущего кадра формируется таким же образом, как и при обычном кодировании.
C. Каскад дополнительной таблицы кодирования
Как и в методе вторичного повторного кодирования/декодирования предыстории адаптивной таблицы кодирования, в методе каскада дополнительной таблицы кодирования основное кодирование сигнала возбуждения такое же, как и при обычном кодировании, описанном выше со ссылкой на фиг.2-5. Тем не менее, параметры для каскада дополнительной таблицы кодирования также определяются.
В этом методе кодирования, проиллюстрированном на фиг.8, предполагается (810), чтобы буфер предыстории предыдущих возбуждений имел только нули в начале текущего кадра, а следовательно, нет вклада от буфера предыстории предыдущих возбуждений. Помимо основной кодированной информации для текущего кадра один или более каскадов дополнительной таблицы кодирования используется для каждого субкадра или другого сегмента, который использует адаптивную таблицу кодирования. Например, каскад дополнительной таблицы кодирования использует произвольную фиксированную таблицу кодирования, такую как описанные со ссылкой на фиг.4.
При этом методе текущий кадр кодируется обычно, чтобы сформировать основную кодированную информацию (которая может включать в себя параметры основной таблицы кодирования для каскадов основных таблиц кодирования), которая должна быть использована посредством декодера, если предыдущий кадр доступен. На стороне кодера избыточные параметры для одного или более каскадов дополнительной таблицы кодирования определяются в замкнутом контуре, при условии отсутствия информации возбуждения из предыдущего кадра. В первой реализации определение осуществляется без использования каких-либо параметров основной таблицы кодирования. Альтернативно во второй реализации определение использует, по меньшей мере, некоторые параметры основной таблицы кодирования для текущего кадра. Эти параметры основной таблицы кодирования могут быть использованы наряду с параметрами каскада(ов) дополнительной таблицы кодирования, чтобы декодировать текущий кадр, если предыдущий кадр отсутствует, как описано ниже. В общем, эта вторая реализация позволяет достичь аналогичного с первой реализацией качества при меньшем числе битов, используемых для каскада(ов) дополнительной таблицы кодирования.
Согласно фиг.8 усиление каскада дополнительной таблицы кодирования и усиление последнего имеющегося импульса или произвольной таблицы кодирования совместно оптимизируются в поиске кодера с замкнутым контуром, чтобы минимизировать ошибку кодирования. Большинство параметров, которые формируются при обычном кодировании, сохраняются и используются при этой оптимизации. В ходе оптимизации определяется (820), используются ли какие-либо каскады произвольной или импульсной таблицы кодирования при обычном кодировании. Если да, то скорректированное усиление последнего используемого каскада произвольной или импульсной таблицы кодирования (такого как каскад n произвольной таблицы кодирования на фиг.4) оптимизируется (830) так, чтобы минимизировать ошибку между вкладом этого каскада таблицы кодирования и целевым сигналом. Целевой сигнал для этой оптимизации - это разность между остаточным сигналом и суммой вкладов всех предыдущих каскадов произвольной таблицы кодирования (т.е. всеми предыдущими каскадами таблицы кодирования, но вклад адаптивной таблицы кодирования от сегментов предыдущих кадров равен нулю).
Параметры индекса и усиления каскада дополнительной произвольной таблицы кодирования аналогичным образом оптимизируются (840), чтобы минимизировать ошибку между вкладом этой таблицы кодирования и целевым сигналом. Целевой сигнал для каскада дополнительной произвольной таблицы кодирования - это разность между остаточным сигналом и суммой вкладов адаптивной таблицы кодирования, импульсной таблицы кодирования (если имеется) и всех обычных произвольных таблиц кодирования (причем последняя существующая обычная произвольная или импульсная таблица кодирования имеет скорректированное усиление). Скорректированное усиление последней существующей обычной произвольной или импульсной таблицы кодирования и усиление каскада дополнительной произвольной таблицы кодирования может быть оптимизировано по отдельности или совместно.
В режиме обычного декодирования декодер не использует каскад дополнительной произвольной таблицы кодирования и декодирует сигнал согласно вышеприведенному описанию (например, как показано на фиг.6).
Фиг.9A иллюстрирует поддиапазонный декодер, который может использовать каскад дополнительной таблицы кодирования, когда индекс адаптивной таблицы кодирования указывает на сегмент предыдущего кадра, который потерян. Инфраструктура, в общем, такая же, как инфраструктура декодирования, описанная выше и проиллюстрированная на фиг.6, и функции многих компонентов и сигналов в поддиапазонном декодере (900) по фиг.9 такие же, как и соответствующие компоненты и сигналы по фиг.6. Например, кодированная поддиапазонная информация (992) принимается, и компонент (935) LPC-обработки восстанавливает коэффициенты (938) линейного предсказания с помощью этой информации и предоставляет коэффициенты в синтезирующий фильтр (940). Тем не менее, когда предыдущий кадр отсутствует, компонент (996) сброса предписывает компоненту (994) нулевой предыстории задать предысторию возбуждения равной нулю для отсутствующего кадра и передает эту предысторию в адаптивную таблицу (970) кодирования. Усиление (980) применяется к вкладу адаптивной таблицы кодирования. Адаптивная таблица (970) кодирования таким образом имеет нулевой вклад, когда ее индекс указывает на буфер предыстории для отсутствующего кадра, но может иметь некоторый ненулевой вклад, когда ее индекс указывает на сегмент внутри текущего кадра. Каскады (972, 974, 976) фиксированных таблиц кодирования применяют свои обычные индексы, принимаемые с помощью поддиапазонной информации (992). Аналогично компоненты (982, 984) усиления фиксированной таблицы кодирования, за исключением компонента (986) усиления последней обычной таблицы кодирования, применяют свои обычные усиления для того, чтобы сформировать соответствующие вклады в сигнал (990) возбуждения.
Если каскад (988) дополнительной произвольной таблицы кодирования доступен и предыдущий кадр отсутствует, то компонент (996) сброса предписывает переключателю (998) передать вклад каскада (976) последней обычной таблицы кодирования со скорректированным усилением (987), которое должно быть суммировано с другими вкладами таблиц кодирования, вместо передачи вклада каскада (976) последней обычной таблицы кодирования с обычным усилением (986), которое должно быть суммировано. Скорректированное усиление оптимизировано для случая, когда предыстория возбуждения равна нулю для предыдущего кадра. Дополнительно каскад (978) дополнительной таблицы кодирования применяет свой индекс, чтобы указать в соответствующей таблице кодирования сегмент сигнала модели произвольной таблицы кодирования, и компонент (988) усиления произвольной таблицы кодирования применяет усиление для каскада дополнительной произвольной таблицы кодирования к этому сегменту. Переключатель (998) передает результирующий вклад каскада дополнительной таблицы кодирования, который должен быть суммирован с вкладами каскадов (970, 972, 974, 976) предыдущих таблиц кодирования, чтобы сформировать сигнал (990) возбуждения. Соответственно избыточная информация для каскада дополнительной произвольной таблицы кодирования (такая как индекс и усиление дополнительного каскада) и скорректированное усиление каскада последней основной произвольной таблицы кодирования (используемое вместо обычного усиления для каскада последней основной произвольной таблицы кодирования) используются для того, чтобы быстро сбросить текущий кадр в известное состояние. Альтернативно обычное усиление используется для каскада последней основной произвольной таблицы кодирования, и/или некоторые другие параметры используются для того, чтобы передать произвольную таблицу кодирования дополнительного каскада.
Методы каскада дополнительной таблицы кодирования требуют настолько небольшого числа битов, что издержки скорости передачи битов за ее использование в типичном варианте несущественны. С другой стороны, она может значительно уменьшить ухудшение качества вследствие потери кадров, когда присутствуют межкадровые зависимости.
Фиг.9B иллюстрирует поддиапазонный декодер, аналогичный проиллюстрированному на фиг.9A, но без каскадов обычной произвольной таблицы кодирования. Таким образом, в этой реализации скорректированное усиление (987) оптимизировано для импульсной таблицы кодирования (972), когда остаточная предыстория для предыдущего отсутствующего кадра равна нулю. Следовательно, когда кадр отсутствует для адаптивной таблицы кодирования (970) (когда остаточная предыстория предыдущего отсутствующего кадра равна нулю), импульсная таблица кодирования (972) (со скорректированным усилением) и каскад (978) дополнительной произвольной таблицы кодирования суммируются, чтобы сформировать сигнал (990) возбуждения.
Таблица кодирования дополнительного каскада, которая оптимизирована для случае, когда остаточная предыстория для отсутствующего кадра равна нулю, может быть использована с множеством различных реализаций и комбинаций таблиц кодирования и/или других представлений остаточных сигналов.
D. Компромиссы между методами избыточного кодирования
Каждый их трех методов избыточного кодирования, описанных выше, имеет свои преимущества и недостатки в сравнении с другими. Табл.3 иллюстрирует некоторые обобщенные выводы в отношении того, что считается определенными компромиссами между этими тремя методами избыточного кодирования. Издержки скорости передачи битов обычно ссылаются на количество битов, которое требуется для того, чтобы реализовать метод. Например, при условии, что та же скорость битов используется, как при обычном кодировании/декодировании, большие издержки скорости передачи битов, как правило, соответствуют меньшему качеству в ходе обычного декодирования, поскольку больше битов используется для избыточного кодирования, и таким образом меньше битов может быть использовано для обычной кодированной информации. Эффективность снижения зависимости от памяти относится к эффективности метода в повышении качества результирующего речевого вывода, когда один или более предыдущих кадров потеряно. Пригодность восстановления предыдущего кадра(ов) ссылается на возможность использовать избыточно кодированную информацию для того, чтобы восстановить один или более предыдущих кадров, когда предыдущие кадры потеряны. Заключения в таблице обобщены и могут не применяться в конкретных реализациях.
<b>Таблица 3</b>
<b>Компромиссы между методами избыточного кодирования</b>
<b>Кодирование предыстории первичной ACB</b>
<b>Кодирование предыстории вторичной ACB</b>
<b>Каскад дополнительной таблицы кодирования</b>
<b>Издержки скорости передачи битов</b>
Высокие
Средние
Низкие
<b>Эффективность уменьшения зависимости от памяти</b>
Наилучшая
Хорошая
Очень хорошая
<b>Полезность для восстановления предыдущего потерянного кадра(ов)</b>
Хорошая
Хорошая
Нет
Кодер может выбирать любую из схем избыточного кодирования оперативно в ходе кодирования. Избыточное кодирование может вообще не использоваться для некоторых классов кадров (к примеру, использоваться для вокализованных кадров, не использоваться для неозвученных или невокализованных кадров), и если оно используется, оно может быть использовано для каждого кадра, на периодической основе, например каждые 10 кадров, или на какой-либо другой основе. Это может контролироваться таким компонентом, как компонент управления скоростью, с учетом таких факторов, как вышеуказанные компромиссы, доступной полосы пропускания канала, и обратной связи декодера о состоянии потери пакетов.
E. Формат потока битов избыточного кодирования
Информация избыточного кодирования может отправляться во множестве различных форматов в потоке битов. Далее приводится реализация формата для избыточно кодированной информации, описанной выше и сообщающей о своем наличии в декодер. В этой реализации каждый кадр в потоке битов начинается с двухбитового поля, называемого типом кадра. Тип кадров используется для того, чтобы идентифицировать режим избыточного кодирования, который следует, а также может быть использован для других целей при кодировании и декодировании. Табл.4 дает значения режима избыточного кодирования поля типа кадров.
<b>Таблица 4</b>
<b>Описание битов типа кадров</b>
<b>Биты типа кадров</b>
<b>Режим избыточного кодирования</b>
00
Нет (обычный кадр)
01
Каскад дополнительной таблицы кодирования
10
Кодирование предыстории первичной ACB
11
Кодирование предыстории вторичной ACB
Фиг.10 иллюстрирует четыре различные комбинации этих кодов в формате кадра потока битов, сообщающие о наличии обычного кадра и/или соответствующих типов избыточного кодирования. Для обычного кадра (1010), включающего в себя основную кодированную информацию о кадре без каких-либо битов избыточного кодирования, после границы (1015) байта в начале кадра следует код типа кадра 00. После кода типа кадра следует основная кодированная информация для обычного кадра.
Для кадра (1020) с избыточной кодированной информацией предыстории адаптивной таблицы кодирования, после границы (1025) байта в начале кадра следует тип кадра 10, который сообщает о наличии информации предыстории адаптивной таблицы кодирования для кадра. После кода типа кадра следует кодированный блок для основной кодированной информации и информации предыстории адаптивной таблицы кодирования.
Когда вторичная избыточная кодированная информация предыстории включена для кадра (1030), после границы (1035) байта в начале кадра следует кодированный блок, включающий в себя код типа кадра 00 (код для обычного кадра), после которого следует основная кодированная информация для обычного кадра. Тем не менее, после границы (1045) кадра в конце основной кодированной информации другой кодированный блок включает в себя код типа кадра 11, который указывает, что необязательная вторичная информация (1040) предыстории (вместо основной кодированной информации для кадра) следует. Поскольку вторичная информация (1040) предыстории используется только в том случае, если предыдущий кадр потерян, формирователю пакетов или другому компоненту может быть предоставлена возможность отбрасывания этой информации. Это может быть выполнено по различным причинам, например, когда общая скорость передачи битов должна быть снижена, частота потери пакетов низкая или предыдущий кадр включен в пакет с текущим кадром. Либо демультиплексору или другому компоненту может быть предоставлена возможность пропуска вторичной информации предыстории, когда обычный кадр (1030) успешно принят.
Когда вторичная избыточная кодированная информация каскада дополнительной таблицы кодирования включена для кадра (1050), после границы (1055) байта в начале кодированного блока следует код типа кадра 00 (код для обычного кадра), после которого следует основная кодированная информация для обычного кадра. Тем не менее, после границы (1065) кадра в конце основной кодированной информации другой кодированный блок включает в себя код типа кадра 01, показывающий необязательную информацию (1060) каскада дополнительной таблицы кодирования, который идет следом. Как в случае вторичной информации предыстории, информация (1060) каскада дополнительной таблицы кодирования используется только в том случае, если предыдущий кадр потерян. Соответственно, как в случае вторичной информации предыстории, формирователю пакетов или другому компоненту может быть предоставлена возможность отбрасывания информации каскада дополнительной таблицы кодирования, либо демультиплексору или другому компоненту может быть предоставлена возможность пропуска информации каскада дополнительной таблицы кодирования.
Приложение (к примеру, приложение, обрабатывающее пакетирование транспортного уровня) может принять решение, чтобы комбинировать несколько кадров, чтобы сформировать более крупный пакет, чтобы уменьшить число дополнительных битов, требуемых для заголовков пакета. В рамках пакета приложение может определить границы кадра посредством сканирования потока битов.
Фиг.11 иллюстрирует возможный поток битов одного пакета (1100), имеющего четыре кадра (1110, 1120, 1130, 1140). Можно допустить, что все кадры в пакете должны быть приняты, если какие-либо из них приняты (т.е. нет частичного повреждения данных), и что запаздывание адаптивной таблицы кодирования или основной тон в типичном варианте меньше длины кадра. В этом примере любая необязательная информация избыточного кодирования для кадра 2 (1120), кадра 3 (1130) и кадра 4 (1140) в типичном варианте не должна быть использована, поскольку предыдущий кадр должен всегда присутствовать, если присутствует текущий кадр. Соответственно необязательная информация избыточного кодирования для всех, кроме первого кадра в пакете (1100), может быть удалена. Это приводит к сжатому пакету (1150), в котором кадр 1 (1160) включает в себя необязательную информацию каскада дополнительной таблицы кодирования, но вся необязательная информация избыточного кодирования удалена из оставшихся кадров (1170, 1180, 1190).
Если кодер использует метод первичного избыточного кодирования предыстории, то приложение не удаляет никаких этих битов при упаковке кадров в один пакет, поскольку первичная информация избыточного кодирования истории используется независимо от того, потерян или нет предыдущий кадр. Тем не менее, приложение может предписывать кодеру кодировать такой кадр как обычный кадр, если он знает, что кадр находится в многокадровом пакете и что он не будет первым кадром в этом пакете.
Хотя фиг.10 и 11 и прилагаемое описание показывают согласованные по байтам границы между кадрами и типами информации, альтернативно границы не выравнены по байтам. Более того, фиг.10 и 11 и прилагаемое описание показывают примерные коды типов кадров и комбинации типов кадров. Альтернативно кодер и декодер используют другие и/или дополнительные типы кадров или комбинации типов кадров.
На основе описания и иллюстрирования принципов настоящего изобретения со ссылкой на поясненные варианты осуществления должно быть ясно, что поясненные варианты осуществления могут быть модифицированы по структуре и в деталях без отступления от этих принципов. Следует понимать, что программы, процессы или способы, описанные в данном документе, не связаны или ограничены каким-либо конкретным типом вычислительной среды, если не указано иное. Различные типы общих или специализированных вычислительных сред могут использоваться или выполнять операции в соответствии с идеями, описанными в данном документе. Элементы описанных вариантов осуществления, показанные в программном обеспечении, могут быть использованы в аппаратных средствах и наоборот.