СПОСОБ И УСТРОЙСТВО ДЛЯ РАСПРЕДЕЛЕНИЯ БИТОВОГО БЮДЖЕТА МЕЖДУ ПОДКАДРАМИ В CELP-КОДЕКЕ
METHOD AND DEVICE FOR DISTRIBUTING THE BIT BUDGET BETWEEN SUBFRAMES IN THE CELP CODEC

ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее раскрытие относится к технологии для цифрового кодирования звукового сигнала, например, речевого или аудио сигнала, ввиду передачи или запоминания, и синтезирования этого звукового сигнала. Кодер преобразует звуковой сигнал с цифровой битовый поток с использованием битового бюджета. Декодер или синтезатор затем производит действия над передаваемым или запоминаемым битовым потоком и преобразует его обратно в звуковой сигнал. Кодер и декодер/синтезатор обычно известны как кодек.
[0002] Более конкретно, но не исключительно, настоящее раскрытие относится к способу и устройству для эффективного распределения битового бюджета в кодеке.
УРОВЕНЬ ТЕХНИКИ
[0003] Одной из наилучших технологий для кодирования звука на низких битовых скоростях передачи данных является кодирование с линейным предсказанием с кодовым возбуждением (Code-Excited Linear Prediction - CELP). В CELP-кодировании, звуковой сигнал дискретизируется, и дискретизированный звуковой сигнал обрабатывается в последовательных блоках L образцов, обычно называемых кадрами, где L является заданным числом, обычно соответствующим 20 мс. Главный принцип, лежащий в основе CELP, называется «Анализ посредством синтеза», где возможные выходные данные декодера синтезируются во время процесса кодирования и затем сравниваются с исходным звуковым сигналом. Этот поиск минимизирует среднеквадратическую погрешность между входным звуковым сигналом и синтезированным звуковым сигналом в перцепционно взвешенной области.
[0004] В CELP-кодировании, звуковой сигнал обычно синтезируют посредством фильтрации возбуждения посредством полюсного цифрового фильтра 1/A(z), часто называемого фильтром синтеза. Фильтр A(z) оценивается посредством Линейного предсказания (Linear Prediction - LP) и представляет кратковременные корреляции между образцами звуковых сигналов. Коэффициенты LP-фильтра обычно вычисляются один раз за кадр. В CELP-кодеках, кадр дополнительно делят на несколько (обычно от двух (2) до пяти (5)) подкадров для кодирования возбуждения, которое обычно состоит из двух частей, отыскиваемых последовательно. Их соответствующие коэффициенты усиления могут быть затем совместно квантованы. В нижеследующем описании, число подкадров обозначается N, и индекс конкретного подкадра обозначается n, где n=0,…, N-1.
[0005] Первая часть возбуждения обычно выбирается из адаптивной кодовой книги. Часть возбуждения адаптивной кодовой книги использует квазипериодичность (или долговременные корреляции) произнесенного речевого сигнала при поиске в прошлом возбуждении сегмента, больше всего похожего на сегмент, кодируемый в настоящий момент. Часть возбуждения адаптивной кодовой книги описывается индексом адаптивной кодовой книги, т.е. параметром задержки, соответствующим периоду основного тона, и соответствующим коэффициентом усиления адаптивной кодовой книги, которые оба отправляются декодеру или запоминаются для реконструкции того же возбуждения, что и в кодере.
[0006] Вторая часть возбуждения обычно является инновационным сигналом, выбираемым из инновационной кодовой книги. Инновационный сигнал моделирует эволюцию (разницу) между предыдущим речевым сегментом и кодируемым в настоящий момент сегментом. Вторая часть возбуждения описывается индексом кодового вектора, выбираемого из инновационной кодовой книги, и коэффициентом усиления инновационной кодовой книги (который также называется индексом фиксированной кодовой книги и коэффициентом усиления фиксированной кодовой книги).
[0007] Для улучшения эффективности кодирования, современные кодеки, такие как, например, G.718, описанный в Ссылке [1], и EVS, описанный в Ссылке [2], основаны на классификации входного звукового сигнала. На основе характеристик сигналов, основное CELP-кодирование расширяется на несколько разных режимов кодирования. Таким образом, классификация должна быть передана декодеру или храниться в виде информации о сигнализации. Другой информацией о сигнализации, которая обычно является эффективной для передачи, является, например, информация о ширине полосы звуковых частот.
[0008] Таким образом, в CELP-кодеке, части так называемого «основного модуля» CELP могут включать в себя:
- коэффициенты LP-фильтра;
- адаптивную кодовую книгу;
- инновационную (фиксированную) кодовую книгу; и
- коэффициенты усиления адаптивной и инновационной кодовых книг.
[0009] Наиболее современные CELP-кодеки основаны на принципе постоянной битовой скорости передачи данных (constant bit rate - CBR). В CBR-кодеках битовый бюджет для кодирования данного кадра является постоянным во время кодирования независимо от контента звукового сигнала или характеристик сети. Для получения наилучшего возможного качества при данной постоянной битовой скорости передачи данных, битовый бюджет тщательно распределяют среди разных частей кодирования. На практике, битовый бюджет для каждой части кодирования при данной битовой скорости передачи данных обычно фиксируют и запоминают в ROM-таблицах кодека. Однако, когда число битовых скоростей передачи данных, поддерживаемых кодеком, увеличивается, длина ROM-таблиц пропорционально увеличивается, и поиск в этих таблицах становится менее эффективным.
[0010] Проблема больших ROM-таблиц является даже более существенной в сложных кодеках, где битовый бюджет, распределяемый для основного модуля CELP, может флуктуировать даже при постоянной битовой скорости передачи данных кодека. Например, в сложном многомодульном кодеке, где битовый бюджет при постоянной битовой скорости передачи данных распределяется между разными модулями на основе, например, числа входных звуковых каналов, обратной связи с сетью, ширины полосы звуковых частот, входных характеристик сигнала, и т.д., общий битовый бюджет кодека распределяется среди основного модуля CELP и других разных модулей. Примеры таких других разных модулей могут содержать, но не ограничены этим, увеличение ширины полосы частот (bandwidth extension - BWE), стереомодуль, модуль сокрытия ошибок кадров (frame error concealment - FEC) и т.д., которые в совокупности называются в настоящем описании «дополнительными модулями кодека». Обычно предпочтительно сохранять распределяемый битовый бюджет для каждого дополнительного модуля переменным на основе характеристик сигнала или обратной связи с сетью. Также, дополнительные модули кодека могут адаптивно включаться и выключаться. Эта переменность обычно не вызывает проблем для кодирования дополнительных модулей, поскольку число параметров в этих модулях обычно является малым. Однако флуктуации битового бюджета, распределяемого для дополнительных модулей кодека, приводят к флуктуациям битового бюджета, распределяемого для относительно сложного основного модуля CELP.
[0011] На практике, битовый бюджет, распределяемый для основного модуля CELP при данной битовой скорости передачи данных, обычно получают посредством уменьшения общего битового бюджета кодека на битовый бюджет, распределяемый для всех активных дополнительных модулей кодека, который может включать в себя битовый бюджет сигнализации кодека. Таким образом, битовый бюджет, распределяемый для основного модуля CELP, может флуктуировать между относительно большим минимальным и максимальным диапазоном битовых скоростей передачи данных с гранулярностью до 1 бита (т.е. 0,05 Кбит/с при длительности кадра, составляющей 20 мс).
[0012] Выделение элементов ROM-таблиц для всех возможных битовых скоростей передачи данных основного модуля CELP очевидно является неэффективным. Таким образом, существует потребность в более эффективном и гибком распределении битового бюджета среди разных модулей с мелкой гранулярностью битовой скорости передачи данных на основе ограниченного числа промежуточных битовых скоростей передачи данных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0013] Согласно первому аспекту, настоящее раскрытие связано со способом распределения битового бюджета для множества первых частей и второй части основного модуля CELP (а) кодера для кодирования звукового сигнала или (b) декодера для декодирования звукового сигнала, содержащим, в кадре звукового сигнала, содержащем подкадры, этапы, на которых: распределяют для первых частей основного модуля CELP соответствующие битовые бюджеты; и распределяют для второй части основного модуля CELP битовый бюджет, оставшийся после распределения для первых частей основного модуля CELP соответствующих битовых бюджетов. Этап распределения битового бюджета второй части основного модуля CELP содержит этап, на котором распределяют битовый бюджет второй части основного модуля CELP между подкадрами кадра и распределяют больший битовый бюджет для по меньшей мере одного из подкадров кадра.
[0014] Согласно второму аспекту, обеспечено устройство для распределения битового бюджета для множества первых частей и второй части основного модуля CELP (а) кодера для кодирования звукового сигнала или (b) декодера для декодирования звукового сигнала, содержащее, для кадра звукового сигнала, содержащего подкадры: первый распределитель соответствующих битовых бюджетов для первых частей основного модуля CELP; и второй распределитель, для второй части основного модуля CELP, битового бюджета, оставшегося после распределения для первых частей основного модуля CELP соответствующих битовых бюджетов. Второй распределитель распределяет битовый бюджет второй части основного модуля CELP между подкадрами и распределяет больший битовый бюджет для по меньшей мере одного из подкадров кадра.
[0015] Согласно третьему аспекту, обеспечен способ распределения битового бюджета для множества первых частей и второй части основного модуля CELP кодера для кодирования звукового сигнала, содержащий этапы, на которых: запоминают таблицы распределения битовых бюджетов, назначающие, для каждой из множества промежуточных битовых скоростей передачи данных, соответствующие битовые бюджеты для первых частей основного модуля CELP; определяют битовую скорость передачи данных основного модуля CELP; выбирают одну из промежуточных битовых скоростей передачи данных на основе определенной битовой скорости передачи данных основного модуля CELP; распределяют для первых частей основного модуля CELP соответствующие битовые бюджеты, назначенные таблицами распределения битовых бюджетов, для выбранной промежуточной битовой скорости передачи данных; и распределяют для второй части основного модуля CELP битовый бюджет, оставшийся после распределения для первых частей основного модуля CELP соответствующих битовых бюджетов, назначенных таблицами распределения битовых бюджетов, для выбранной промежуточной битовой скорости передачи данных. Основной модуль CELP использует, в одном подкадре кадра звукового сигнала, кодовую книгу форм голосовых импульсов, и этап распределения битового бюджета второй части основного модуля CELP содержит этап, на котором распределяют битовый бюджет второй части основного модуля CELP между подкадрами кадра и распределяют наибольший битовый бюджет для подкадра, содержащего кодовую книгу форм голосовых импульсов.
[0016] Дополнительный аспект связан с устройством для распределения битового бюджета для множества первых частей и второй части основного модуля CELP (а) кодера для кодирования звукового сигнала или (b) декодера для декодирования звукового сигнала, содержащим: таблицы распределения битовых бюджетов, назначающие, для каждой из множества промежуточных битовых скоростей передачи данных, соответствующие битовые бюджеты для первых частей основного модуля CELP; вычислитель битовой скорости передачи данных основного модуля CELP; селектор одной из промежуточных битовых скоростей передачи данных на основе определенной битовой скорости передачи данных основного модуля CELP; первый распределитель соответствующих битовых бюджетов, назначенных таблицами распределения битовых бюджетов, для выбранной промежуточной битовой скорости передачи данных, для первых частей основного модуля CELP; и второй распределитель, для второй части основного модуля CELP, битового бюджета, оставшегося после распределения для первых частей основного модуля CELP соответствующих битовых бюджетов, назначенных таблицами распределения битовых бюджетов, для выбранной промежуточной битовой скорости передачи данных. Основной модуль CELP использует, в одном подкадре кадра звукового сигнала, кодовую книгу форм голосовых импульсов, и второй распределитель распределяет битовый бюджет второй части основного модуля CELP между подкадрами кадра и распределяет наибольший битовый бюджет для подкадра, содержащего кодовую книгу форм голосовых импульсов.
[0017] Вышеупомянутые и другие цели, преимущества и признаки способа и устройства для распределения битовых бюджетов станут лучше понятны после прочтения нижеследующего неограничивающего описания их иллюстративных вариантов осуществления, приведенных только в качестве примера, со ссылкой на сопутствующие чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] В прилагаемых чертежах:
[0019] Фиг. 1 является схематичной блок-схемой системы обработки и передачи стереозвука, показывающей возможный контекст реализации способа и устройства для распределения битовых бюджетов, раскрытых в нижеследующем описании;
[0020] Фиг. 2 является блок-схемой, показывающей одновременно способ и устройство для распределения битовых бюджетов настоящего раскрытия; и
[0021] Фиг. 3 является упрощенной блок-схемой иллюстративной конфигурации аппаратных компонентов, образующих способ и устройство для распределения битовых бюджетов настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0022] Фиг. 1 является схематичной блок-схемой системы 100 обработки и передачи стереозвука, показывающей возможный контекст реализации способа и устройства для распределения битовых бюджетов, раскрытых в нижеследующем описании. Следует отметить, что представленные способ и устройство для распределения битовых бюджетов не ограничены стереоданными, а могут быть использованы также в многоканальном кодировании или моно-кодировании.
[0023] Система 100 обработки и передачи стереозвука фиг. 1 поддерживает передачу стереофонического звукового сигнала через канал 101 связи. Канал 101 связи может содержать, например, проводной канал связи или оптоволоконный канал связи. Альтернативно, канал 101 связи может по меньшей мере частично содержать радиочастотный канал связи. Радиочастотный канал связи часто поддерживает одновременные передачи, требующие совместно используемых ресурсов ширины полосы частот, таких как ресурсы, которые могут быть определены в случае сотовой телефонии. Хотя это и не показано, канал 101 связи может быть заменен запоминающим устройством в реализации системы 100 обработки и передачи в единственном устройстве, которое записывает и запоминает кодированный стереофонический звуковой сигнал для воспроизведения позже.
[0024] Со ссылкой все еще на фиг. 1, например, пара микрофонов 102 и 122 образует левый канал 103 и правый канал 123 детектируемого исходного стереофонического звукового сигнала. Как указано в приведенном выше описании, звуковой сигнал может содержать, в частности, но не исключительно, речь и/или аудио.
[0025] Левый канал 103 и правый канал 123 исходного аналогового звукового сигнала подаются на аналого-цифровой (analog-to-digital - A/D) преобразователь 104 для преобразования их в левый канал 105 и правый канал 125 исходного цифрового стереофонического звукового сигнала. Левый канал 105 и правый канал 125 исходного цифрового стереофонического звукового сигнала могут быть также записаны в запоминающее устройство (не показано) и могут подаваться из него.
[0026] Кодер 106 стереозвука кодирует левый канал 105 и правый канал 125 цифрового стереофонического звукового сигнала, в результате чего создается набор параметров кодирования, которые уплотняются в форме битового потока 107, передаваемого в необязательный кодер 108 исправления ошибок. Необязательный кодер 108 исправления ошибок, при наличии, добавляет избыточность в двоичное представление параметров кодирования в битовом потоке 107 перед передачей результирующего битового потока 111 по каналу 101 связи.
[0027] На стороне приемника, необязательный декодер 109 исправления ошибок использует вышеупомянутую избыточную информацию в принимаемом цифровом битовом потоке 111 для детектирования и исправления ошибок, которые могли произойти во время передачи по каналу 101 связи, и создает битовый поток 112 с принятыми параметрами кодирования. Декодер 110 стереозвука преобразует принятые в битовом потоке 112 параметры кодирования для создания синтезированных левого канала 113 и правого канала 133 цифрового стереофонического звукового сигнала. Левый канал 113 и правый канал 133 цифрового стереофонического звукового сигнала, реконструируемого в декодере 110 стереозвука, преобразуются в синтезированные левый канал 114 и правый канал 134 аналогового стереофонического звукового сигнала в цифро-аналоговом (digital-to-analog - D/A) преобразователе 115.
[0028] Синтезированные левый канал 114 и правый канал 134 аналогового стереофонического звукового сигнала, соответственно, воспроизводятся в паре блоков 116 и 136 громкоговорителей (пара блоков 116 и 136 громкоговорителей, очевидно, может быть заменена головным телефоном). Альтернативно, левый канал 113 и правый канал 133 цифрового стереофонического звукового сигнала из декодера 110 стереозвука могут быть также поданы в запоминающее устройство (не показано) и записаны в нем.
[0029] В качестве неограничивающего примера, способ и устройство для распределения битовых бюджетов согласно настоящему раскрытию могут быть реализованы в кодере 106 звука и декодере 110 фиг. 1. Следует отметить, что фиг. 1 может быть расширена таким образом, чтобы она охватывала случай кодирования и декодирования многоканальных и/или основанных на сценах звуковых и/или независимых потоков (например, объемный звук и амбиофонию высокого порядка).
[0030] Фиг. 2 является блок-схемой, показывающей одновременно способ 200 и устройство 250 для распределения битовых бюджетов согласно настоящему раскрытию.
[0031] Здесь следует отметить, что способ 200 и устройство 250 для распределения битовых бюджетов производят действия на покадровой основе, и нижеследующее описание связано с одним из последовательных кадров кодируемого звукового сигнала, если не указано иное.
[0032] На фиг. 2 рассматривается кодирование основного модуля CELP, чей битовый бюджет флуктуирует от кадра к кадру в результате флуктуации числа битов, используемых для кодирования дополнительных модулей кодека. Также, распределение битового бюджета среди разных частей основного модуля CELP симметрично реализуется в кодере 106 и декодере 110 и основано на битовом бюджете, распределяемом для кодирования основного модуля CELP.
[0033] Нижеследующее описание представляет неограничивающий пример реализации EVS-кодека с использованием режима Обобщенного кодирования. EVS-кодек является кодеком, основанным на стандарте EVS, описанном в Ссылке [2], с модификациями для обеспечения других битовых скоростей передачи данных основного модуля CELP или улучшений кодека. EVS-кодек в этом раскрытии используется в структуре кодирования с использованием дополнительных модулей кодирования, таких как кодирование метаданных, стерео или многоканальное кодирование (это называется далее Расширенным EVS-кодеком). Принципы, подобные принципам, описанным в настоящем раскрытии, могут быть применены к другим режимам кодирования (например, Речевое кодирование, Переходное кодирование, Неактивное кодирование, …) в EVS-кодеке. Кроме того, подобные принципы могут быть реализованы в любом другом кодеке, отличном от EVS, и с использованием схемы кодирования, отличной от CELP.
Операция 201
total
total
total
[0034] Со ссылкой на фиг. 2, общий битовый бюджет, b, распределяется для кодека для каждого последовательного кадра звукового сигнала. В случае CBR, этот общий битовый бюджет кодека, b, является постоянным. Также, способ 200 и устройство 250 для распределения битовых бюджетов можно использовать в кодеках с переменными битовыми скоростями передачи данных, в которых общий битовый бюджет кодека, b, может изменяться от кадра к кадру (как в случае расширенного EVS-кодека).
Операции 202
supplementary
codec_signaling
[0035] В операциях 202, счетчики 252 определяют (подсчитывают) число битов (битовый бюджет), b, используемых для кодирования дополнительных модулей кодека, и число битов (битовый бюджет), b (не показано), для передачи сигнализации кодека декодеру.
[0036] Дополнительные модули кодека могут содержать стереомодуль, модуль сокрытия стирания кадров (Frame-Erasure concealment - FEC), модуль увеличения ширины полосы частот (BandWidth Extension - BWE), модуль кодирования метаданных, и т.д. В нижеследующем иллюстративном варианте осуществления, дополнительные модули содержат стереомодуль и BWE-модуль. Конечно, могут быть использованы другие или добавочные дополнительные модули.
Стереомодуль
[0037] Кодек может быть выполнен с возможностью поддерживать кодирование более чем одного входного аудиоканала. В случае двух аудиоканалов, моно- (одноканальный) кодек может быть расширен посредством стереомодуля для образования стереокодека. Стереомодуль тогда образует один из дополнительных модулей кодека. Стереокодек может быть реализован с использованием нескольких разных технологий стереокодирования. В качестве неограничивающего примера, использование двух технологий стереокодирования, которые могут быть эффективно использованы при низких битовых скоростях передачи данных, будет описано ниже. Очевидно, что могут быть реализованы другие технологии стереокодирования.
[0038] Первая технология стереокодирования называется параметрическим стерео. Параметрическое стерео кодирует два аудиоканала как моно-сигнал с использованием общего моно-кодека, а также некоторого количества дополнительной стереоинформации (соответствующей стереопараметрам), которая представляет стереоизображение. Эти два входных аудиоканала микшируют с понижением в моно-сигнал, и стереопараметры затем обычно вычисляют в области преобразования, например, в области дискретного преобразования Фурье (Discrete Fourier Transform - DFT), и связывают с так называемыми бинауральными или межканальными признаками. Бинауральные признаки (см. ссылку [5]) содержат Интерауральную разность уровней (Interaural Level Difference - ILD), Интерауральную временную разность (Interaural Time Difference - ITD) и Интерауральную корреляцию (Interaural Correlation - IC). В зависимости от характеристик сигнала, конфигурации стереосцены, и т.д., некоторые или все бинауральные признаки кодируются и передаются декодеру. Информация о том, какие признаки кодируются, отправляется в виде информации о сигнализации, которая обычно является частью дополнительной стереоинформации. Конкретный бинауральный признак может быть также квантован с использованием других технологий кодирования, что приводит к переменному числу используемых битов. Затем, дополнительно к квантованным бинауральным признакам, дополнительная стереоинформация может содержать, обычно при средних и более высоких битовых скоростях передачи данных, квантованный остаточный сигнал, который является следствием понижающего микширования. Остаточный сигнал может быть закодирован с использованием технологии энтропийного кодирования, например, арифметического кодера. Таким образом, число битов, используемых для кодирования остаточного сигнала, может значительно флуктуировать от кадра к кадру.
[0039] Другая технология стереокодирования является технологией, работающей во временной области. Эта технология стереокодирования микширует два входных аудиоканала в так называемый первичный канал и вторичный канал. Например, следуя способу, описанному в Ссылке [6], микширование временной области может быть основано на коэффициенте микширования, который определяет соответствующие вклады двух входных аудиоканалов после создания первичного канала и вторичного канала. Коэффициент микширования получают на основании нескольких метрик, например, нормированных корреляций входных каналов относительно моно-сигнала или долговременной разности корреляций между двумя входными каналами. Первичный канал может быть закодирован обычным моно-кодеком, в то время как вторичный канал может быть закодирован кодеком с меньшей битовой скоростью передачи данных. Кодирование вторичного канала может использовать когерентность между первичным и вторичным каналами и может повторно использовать некоторые параметры из первичного канала. Таким образом, число битов, используемых для кодирования первичного канала и вторичного канала, может значительно флуктуировать от кадра к кадру на основе подобия каналов и режимов кодирования соответствующих каналов.
[0040] Технологии стереокодирования так или иначе известны специалистам в данной области техники и поэтому не будут дополнительно описываться в настоящем описании изобретения. Хотя стерео было описано в качестве примера дополнительных модулей кодирования, раскрытый способ может быть использован в структуре трехмерного (3D) аудио-кодирования, включающей в себя амбиофонию (основанное на сценах аудио), многоканальное аудио (основанное на каналах аудио), или объекты плюс метаданные (основанное на объектах аудио). Дополнительные модули могут также содержать любые их этих технологий.
BWE-модуль
[0041] В наиболее современных кодеках речи, включающих в себя широкополосные (wideband - WB) или сверхширокополосные (super wideband - SWB) кодеки, входной сигнал обрабатывается в блоках (кадрах) при использовании разделенной по полосам частот обработки. Более низкая полоса частот обычно кодируется с использованием CELP-модели и покрывает частоты вплоть до граничной частоты. Затем, более высокая полоса частот эффективно кодируется или оценивается отдельно посредством BWE-технологии для покрытия остальной части кодируемого спектра. Граничная частота между этими двумя полосами является проектным параметром каждого кодека. Например, в EVS-кодеке, описанном в Ссылке [2], граничная частота зависит от рабочего режима и битовой скорости передачи данных кодека. В частности, более низкая полоса частот продолжается вплоть до 6,4 кГц при битовых скоростях передачи данных, составляющих 7,2-13,2 Кбит/с, или вплоть до 8 кГц при битовых скоростях передачи данных, составляющих 16,4-64 Кбит/с. BWE тогда дополнительно увеличивает ширину полосы звуковых частот для WB (вплоть до 8 кГц), SWB (вплоть до 14,4 или 16 кГц), или полнодиапазонного (Full Band - FB, вплоть до 20 кГц) кодирования.
[0042] Идея, лежащая в основе BWE, состоит в том, чтобы использовать внутреннюю корреляцию между более низкой и более высокой полосами частот и получить преимущество, состоящее в более высокой перцепционной стойкости к искажениям кодирования на более высоких частотах по сравнению с более низкими частотами. Таким образом, число битов, используемых для BWE-кодирования более высоких полос, обычно является очень малым по сравнению с CELP-кодированием более низких полос или даже равным нулю. Например, в EVS-кодеке, описанном в Ссылке [2], BWE, где не передается никакой битовый бюджет (так называемое слепое BWE), используется при битовых скоростях передачи данных, составляющих 7,2-8,0 Кбит/с, в то время как BWE с некоторым битовым бюджетом (так называемое управляемое BWE) используется при битовых скоростях передачи данных, составляющих 9,6-64 Кбит/с. Точный битовый бюджет управляемого BWE зависит от фактической битовой скорости передачи данных кодека.
[0043] В нижеследующем описании рассматривается управляемое BWE, которое образует один из дополнительных модулей кодека. Число битов, используемых для BWE-кодирования более высоких полос, может флуктуировать от кадра к кадру и является значительно меньшим (обычно 1-3 Кбит/с), чем число битов, используемых для CELP-кодирования более низких полос.
[0044] Снова, BWE так или иначе известно специалистам в данной области техники и поэтому не будет дополнительно описываться в настоящем описании изобретения.
Сигнализация кодека
[0045] Битовый поток, обычно в своем начале, содержит биты сигнализации кодека. Эти биты (битовый бюджет сигнализации кодека) обычно представляют параметры кодека очень высокого уровня, например, конфигурацию кодека или информацию о природе дополнительных модулей кодека, которые кодируются. В случае многоканального кодека, эти биты могут представлять, например, число кодированных каналов (передачи) и/или формат кодека (на основе сцен или на основе объектов, и т.д.). В случае стереокодирования, эти биты могут представлять, например, используемую технологию стереокодирования. Другим примером параметра кодека, который может быть отправлен с использованием битов сигнализации кодека, является ширина полосы частот аудиосигнала.
[0046] Снова, сигнализация кодека так или иначе известна специалистам в данной области техники и поэтому не будет дополнительно описываться в настоящем описании изобретения. Также, счетчик (не показан) может быть использован для подсчета числа битов (битового бюджета), используемых для сигнализации кодека.
Операция 204
supplementary
codec_signaling
total
core
[0047] Со ссылкой снова на фиг. 2, в операции 204, вычитатель 254 вычитает битовый бюджет, b, для кодирования дополнительных модулей кодека и битовый бюджет, b, для передачи сигнализации кодека из общего битового бюджета кодека, b, для получения битового бюджета, b, основного модуля CELP с использованием следующего соотношения:
core
total
supplementary
codec_signaling
b=b - b - b (1)
supplementary
codec_signaling
core
[0048] Как объяснено выше, число битов, b, для кодирования дополнительных модулей кодека и битовый бюджет, b, для передачи сигнализации кодека декодеру флуктуируют от кадра к кадру и, таким образом, битовый бюджет, b, основного модуля CELP также флуктуирует от кадра к кадру.
Операция 205
signaling
[0049] В операции 205, счетчик 255 подсчитывает число битов (битовый бюджет), b, для передачи декодеру сигнализации основного модуля CELP. Сигнализация основного модуля CELP может содержать, например, ширину полосы звуковых частот, тип CELP-кодера, флаг заострения, и т.д.
Операция 206
signaling
core
2
[0050] В операции 206, вычитатель 256 вычитает битовый бюджет, b, для передачи сигнализации основного модуля CELP из битового бюджета основного модуля CELP, b, для нахождения битового бюджета, b, для кодирования частей основного модуля CELP, с использованием следующего соотношения:
2
core
signaling
b=b - b (2)
Операция 207
2
2
[0051] В операции 207, селектор 257 промежуточных битовых скоростей передачи данных содержит вычислитель, который преобразует битовый бюджет, b, в битовую скорость передачи данных основного модуля CELP посредством деления числа битов, b, на длительность кадра. Селектор 257 находит промежуточную битовую скорость передачи данных на основе битовой скорости передачи данных основного модуля CELP.
[0052] Используется малое число возможных промежуточных битовых скоростей передачи данных. В одном примере реализации в EVS-кодеке, следующие пятнадцать (15) битовых скоростей передачи данных могут рассматриваться в качестве возможных промежуточных битовых скоростей передачи данных: 5,00 Кбит/с, 6,15 Кбит/с, 7,20 Кбит/с, 8,00 Кбит/с, 9,60 Кбит/с, 11,60 Кбит/с, 13,20 Кбит/с, 14,80 Кбит/с, 16,40 Кбит/с, 19,40 Кбит/с, 22,60 Кбит/с, 24,40 Кбит/с, 32,00 Кбит/с, 48,00 Кбит/с, и 64,00 Кбит/с. Конечно, можно использовать число возможных промежуточных битовых скоростей передачи данных, отличное от пятнадцати (15), а также использовать возможные промежуточные битовые скорости передачи данных с другими значениями.
[0053] В том же примере реализации в EVS-кодеке, найденная промежуточная битовая скорость передачи данных является ближайшей более высокой возможной промежуточной битовой скоростью передачи данных относительно битовой скорости передачи данных основного модуля CELP. Например, для битовой скорости передачи данных основного модуля CELP, равной 9,00 Кбит/с, найденная промежуточная битовая скорость передачи данных может быть равной 9,60 Кбит/с при использовании возможных промежуточных битовых скоростей передачи данных, перечисленных в предыдущем абзаце.
[0054] В другом примере реализации, найденная промежуточная битовая скорость передачи данных является ближайшей более низкой возможной промежуточной битовой скоростью передачи данных относительно битовой скорости передачи данных основного модуля CELP. С использованием того же примера, для битовой скорости передачи данных основного модуля CELP, равной 9,00 Кбит/с, найденная промежуточная битовая скорость передачи данных может быть равной 8,00 Кбит/с при использовании возможных промежуточных битовых скоростей передачи данных, перечисленных в предыдущем абзаце.
Операция 208
[0055] В операции 208, ROM-таблицы 258 запоминают, для каждой возможной промежуточной битовой скорости передачи данных соответствующие заданные битовые бюджеты для кодирования первых частей основного модуля CELP. В качестве неограничивающего примера, первые части основного модуля CELP, для которых битовые бюджеты запоминаются в ROM-таблицах 258, могут содержать коэффициенты LP-фильтра, адаптивную кодовую книгу, коэффициент усиления адаптивной кодовой книги, и коэффициент усиления инновационной кодовой книги. В этой реализации, никакой битовый бюджет для кодирования инновационной кодовой книги не запоминается в ROM-таблицах 258.
[0056] Другими словами, когда одна из возможных промежуточных битовых скоростей передачи данных выбирается селектором 257, соответствующие битовые бюджеты, хранимые в ROM-таблицах 258, распределяются для кодирования вышеупомянутых идентифицированных первых частей основного модуля CELP (коэффициентов LP-фильтра, адаптивной кодовой книги, коэффициента усиления адаптивной кодовой книги, и коэффициента усиления инновационной кодовой книги). Однако, в описанной реализации, никакой битовый бюджет для кодирования инновационной кодовой книги не запоминается в ROM-таблицах 258.
LPC
LPC
[0057] Нижеследующая Таблица 1 является примером ROM-таблицы 258, запоминающей, для каждой возможной промежуточной битовой скорости передачи данных, соответствующий битовый бюджет (число битов), b, для кодирования коэффициентов LP-фильтра. Правый столбец идентифицирует возможные промежуточные битовые скорости передачи данных, в то время как левый столбец указывает соответствующие битовые бюджеты (число битов), b. Для простоты, битовый бюджет для кодирования коэффициентов LP-фильтра является единственным значением для каждого кадра, хотя он может быть суммой нескольких значений битового бюджета, когда более одного LP-анализа выполняется в текущем кадре (например, LP-анализ среднего кадра и концевого кадра).
Таблица 1 (выражена в псевдокоде)
const short LSF_bits_tbl[15] =
{
27, /* 5k00 */
28, /* 6k15 */
29, /* 7k20 */
33, /* 8k00 */
35, /* 9k60 */
37, /* 11k60 */
38, /* 13k20 */
39, /* 14k80 */
39, /* 16k40 */
40, /* 19k40 */
41, /* 22k60 */
42, /* 24k40 */
43, /* 32k */
44, /* 48k */
46, /* 64k */
};
ACBn
ACBn
ACBn
ACBn
ACBn
[0058] Нижеследующая Таблица 2 является примером ROM-таблицы 258, запоминающей, для каждой возможной промежуточной битовой скорости передачи данных, соответствующие битовые бюджеты (число битов), b, для кодирования адаптивной кодовой книги. Правый столбец идентифицирует возможные промежуточные битовые скорости передачи данных, в то время как левый столбец указывает соответствующие битовые бюджеты (число битов), b. Поскольку поиск адаптивной кодовой книги осуществляется в каждом подкадре n, N битовых бюджетов, b (по одному на каждый подкадр), получают для каждой возможной промежуточной битовой скорости передачи данных, причем N представляет собой число подкадров в кадре. Следует отметить, что битовые бюджеты, b, могут быть разными в разных подкадрах. Конкретно, Таблица 2 является примером ROM-таблицы 258, запоминающей битовые бюджеты, b, в EVS-кодеке с использованием определенных выше пятнадцати (15) возможных промежуточных битовых скоростей передачи данных.
Таблица 2 (выражена в псевдокоде)
const short ACB_bits_tbl[15] = {
7,4, 7,4, /* 5k00 */
7,5, 7,5, /* 6k15 */
8,5, 8,5, /* 7k20 */
9,5, 8,5, /* 8k00 */
9,6, 9,6, /* 9k60 */ <--- промежуточная битовая скорость передачи данных
10,6, 9,6, /* 11k60 */
10,6, 9,6, /* 13k20 */
10,6,10,6, /* 14k80 */
10,6,10,6, /* 16k40 */
9,6, 9,6,6, /* 19k40 */
10,6, 9,6,6, /* 22k60 */
10,6,10,6,6, /* 24k40 */
10,6,10,6,6, /* 32k */
10,6,10,6,6, /* 48k */
10,6,10,6,6, /* 64k */
};
ACBn
ACBn
ACBn
[0059] Следует отметить, что в примере с использованием EVS-кодека, четыре (4) битовых бюджета, b, для каждой промежуточной битовой скорости передачи данных, запоминаются с более низкими битовыми скоростями передачи данных, причем кадр длительностью 20 мс состоит из четырех (4) подкадров (N=4), и пять (5) битовых бюджетов, b, для каждой промежуточной битовой скорости передачи данных, запоминаются с более высокими битовыми скоростями передачи данных, причем кадр длительностью 20 мс состоит из пяти (5) подкадров (N=5). Со ссылкой на Таблицу 2, для битовой скорости передачи данных основного модуля CELP, равной 9,00 Кбит/с, соответствующей промежуточной битовой скорости передачи данных, равной 9,60 Кбит/с, битовые бюджеты, b, в отдельных подкадрах равны 9, 6, 9, и 6 битов, соответственно.
Gn
Gn
Gn
Gn
Gn
[0060] Нижеследующая Таблица 3 является примером ROM-таблицы 258, запоминающей, для каждой возможной промежуточной битовой скорости передачи данных, соответствующие битовые бюджеты (число битов), b, для кодирования коэффициента усиления адаптивной кодовой книги и коэффициента усиления инновационной кодовой книги. В примере, приведенном ниже, коэффициент усиления адаптивной кодовой книги и коэффициент усиления инновационной кодовой книги квантуют с использованием векторного квантователя и, таким образом, представляют в виде только одного индекса квантования. Правый столбец идентифицирует возможные промежуточные битовые скорости передачи данных, в то время как левый столбец указывает соответствующие битовые бюджеты (число битов), b. Как можно увидеть из Таблицы 3, существует один битовый бюджет, b, для каждого подкадра n кадра. Соответственно, N битовых бюджетов, b, запоминаются для каждой возможной промежуточной битовой скорости передачи данных, причем N представляет число подкадров в кадре. Следует отметить, что в зависимости от квантователя коэффициента усиления и размера используемой таблицы квантования, битовые бюджеты, b, могут быть разными в разных подкадрах.
Таблица 3 (выражена в псевдокоде)
const short gain_bits_tbl[15] =
{
6, 6, 5, 5, /* 5k00 */
6, 6, 6, 6, /* 6k15 */
7, 6, 6, 6, /* 7k20 */
8, 7, 6, 6, /* 8k00 */
6, 5, 6, 5, /* 9k60 */
6, 6, 6, 6, /* 11k60 */
6, 6, 6, 6, /* 13k20 */
7, 6, 7, 6, /* 14k80 */
7, 7, 7, 7, /* 16k40 */
6, 6, 6, 6, 6, /* 19k40 */
7, 6, 7, 6, 6, /* 22k60 */
7, 7, 7, 7, 7, /* 24k40 */
7, 7, 7, 7, 7, /* 32k */
10,10,10,10,10, /* 48k */
12,12,12,12,12, /* 64k */
};
4
[0061] Таким образом, битовый бюджет для квантования других первых частей основного модуля CELP (при их наличии) может храниться в ROM-таблицах 258 для каждой возможной промежуточной битовой скорости передачи данных. Примером может быть флаг фильтрации низких частот адаптивной кодовой книги (один бит на каждый подкадр). Таким образом, битовый бюджет, связанный со всеми частями основного модуля CELP (первыми частями), за исключением инновационной кодовой книги, может храниться в ROM-таблицах 258 для каждой возможной промежуточной битовой скорости передачи данных, в то время как некоторый битовый бюджет, b, все же остается доступным.
Операция 209
[0062] В операции 209, распределитель 259 битового бюджета распределяет, для кодирования вышеупомянутых первых частей основного модуля CELP (коэффициентов LP-фильтра, адаптивной кодовой книги, коэффициентов усиления адаптивной и инновационной кодовых книг, и т.д.), битовые бюджеты, запоминаемые в ROM-таблицах 258 и связанные с промежуточной битовой скоростью передачи данных, выбираемой селектором 257.
Операция 210
2
LPC
ACBn
Gn
4
[0063] В операции 210, вычитатель 260 вычитает из битового бюджета, b, (a) битовый бюджет, b для кодирования коэффициентов LP-фильтра, связанных с возможной промежуточной битовой скоростью передачи данных, выбираемой селектором 257, (b) сумму битовых бюджетов, b, N подкадров, связанных с выбираемой возможной промежуточной битовой скоростью передачи данных, (c) сумму битовых бюджетов, b, для квантования коэффициентов усиления адаптивной и инновационной кодовых книг N подкадров, связанных с выбираемой возможной промежуточной битовой скоростью передачи данных, и (d) битовый бюджет, связанный с выбираемой промежуточной битовой скоростью передачи данных, для кодирования других первых частей основного модуля CELP (при их наличии), для нахождения оставшегося битового бюджета (числа битов), b, все еще доступного для кодирования инновационной кодовой книги (второй части основного модуля CELP). Для этой цели, вычитателем 260 может быть использовано следующее соотношение:
(3)
Операция 211
4
4
FCBn
4
[0064] В операции 211, распределитель 261 битов FCB распределяет оставшийся битовый бюджет, b, для кодирования инновационной кодовой книги (фиксированной кодовой книги (Fixed CodeBook - FCB; второй части основного модуля CELP) между N подкадрами текущего кадра. Конкретно, битовый бюджет, b, делят на битовые бюджеты, b, распределяемые для различных подкадров n. Например, это может быть реализовано итерационной процедурой, которая делит битовый бюджет, b, между N подкадрами как можно более равномерно.
[0065] В других неограничивающих реализациях, распределитель 261 битов FCB может быть спроектирован с учетом по меньшей мере одного из следующих требований:
4
4
I. В случае, когда битовый бюджет, b, не может быть равномерно распределен между всеми подкадрами, наибольший возможный (т.е. больший) битовый бюджет распределяют для первого подкадра. В качестве одного примера, если b=106 битов, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 28-26-26-26 битов.
4
II. Если имеется больше битов, доступных для потенциального увеличения других подкадровых кодовых книг FCB, то увеличивают битовый бюджет (число битов) FCB, распределенный для по меньшей мере одного следующего подкадра после первого подкадра (или по меньшей мере одного подкадра, следующего за первым подкадром). В качестве примера, если b=108 битов, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 28-28-26-26 битов. В дополнительном примере, если b4=110 битов, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 28-28-28-26 битов.
4
4
4
4
III. Битовый бюджет, b, не обязательно как можно более равномерно распределяют между всеми подкадрами, а скорее как можно больше используют битовый бюджет, b. В качестве примера, если b=87 битов, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 26-20-20-20 битов, а не, например, 24-20-20-20 битов или 20-20-20-24 битов, когда требование III не учитывается. В другом примере, если b=91 битов, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 26-24-20-20 битов, в то время как, например, 20-24-24-20 битов может быть распределено, если требование III не будет учитываться. Таким образом, в обоих примерах, только 1 бит остается неиспользованным, когда требование III учитывается, в то время как иначе остаются неиспользованными 3 бита.
4
Требование III обеспечивает то, что распределитель 261 битов FCB выбирает две непоследовательные строки из таблицы конфигурации FCB, например, Таблицы 4, приведенной здесь ниже. В качестве неограничивающего примера предположим, что b=87 битов. Распределитель 261 битов FCB сначала выбирает строку 6 из Таблицы 4 для всех подкадров, подлежащих использованию для продолжения поиска FCB (это приводит к распределению битового бюджета в виде 20-20-20-20). Затем требование I изменяет распределение таким образом, что используются строки 6 и 7 (24-20-20-20 битов), и требование III выбирает распределение посредством использования строк 6 и 8 (26-20-20-20) из таблицы конфигурации FCB (Таблицы 4).
Ниже в качестве примера таблицы конфигурации FCB приведена Таблица 4 (скопированная из EVS (Ссылка [2])):
Таблица 4 (выражена в псевдокоде)
const PulseConfig PulseConfTable[] =
{
{ 7, 4, 2.0f, 1, 0, {8}, TRACKPOS_FREE_ONE },
{ 10, 4, 2.0f, 2, 0, {8}, TRACKPOS_FIXED_EVEN },
{ 12, 4, 2.0f, 2, 0, {8}, TRACKPOS_FIXED_TWO },
{ 15, 4, 2.0f, 3, 0, {8}, TRACKPOS_FIXED_FIRST },
{ 17, 6, 2.0f, 3, 0, {8}, TRACKPOS_FREE_THREE },
{ 20, 4, 2.0f, 4, 0, {4, 8}, TRACKPOS_FIXED_FIRST }, <- строка 6
{ 24, 4, 2.0f, 5, 0, {4, 8}, TRACKPOS_FIXED_FIRST }, <- строка 7
{ 26, 4, 2.0f, 5, 0, {4, 8}, TRACKPOS_FREE_ONE }, <- строка 8
{ 28, 4, 1.5f, 6, 0, {4, 8, 8}, TRACKPOS_FIXED_FIRST },
{ 30, 4, 1.5f, 6, 0, {4, 8, 8}, TRACKPOS_FIXED_TWO },
{ 32, 4, 1.5f, 7, 0, {4, 8, 8}, TRACKPOS_FIXED_FIRST },
{ 34, 4, 1.5f, 7, 0, {4, 8, 8}, TRACKPOS_FREE_THREE },
{ 36, 4, 1.0f, 8, 2, {4, 8, 8}, TRACKPOS_FIXED_FIRST },
{ 40, 4, 1.0f, 9, 2, {4, 8, 8}, TRACKPOS_FIXED_FIRST },
…
}
4
Здесь, первый столбец соответствует числу битов кодовой книги FCB, и четвертый столбец соответствует числу импульсов FCB для каждого подкадра. Следует отметить, что в примере, приведенном выше для b=87 битов, не существует кодовой книги с 22 битами, и распределитель FCB, таким образом, выбирает две непоследовательные строки из таблицы конфигурации FCB, что приводит к распределению битового бюджета FCB в виде 26-20-20-20.
4
IV. В случае, когда битовый бюджет не может быть равномерно распределен между всеми подкадрами при кодировании с использованием режима Переходного кодирования (Transition Coding - TC) (см. Ссылку [2]), наибольший возможный (больший) битовый бюджет распределяют для подкадра с использованием кодовой книги форм голосовых импульсов. В качестве примера, если b=122 битов, и кодовая книга форм голосовых импульсов используется в третьем подкадре, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 30-30-32-30 битов.
4
V. Если после применения требования IV будет существовать больше битов, доступных для потенциального увеличения другой кодовой книги FCB в кадре TC-режима, то увеличивают битовый бюджет (число битов) FCB, распределенный для последнего подкадра. В качестве примера, если b=116 битов, и кодовая книга форм голосовых импульсов используется во втором подкадре, то битовый бюджет FCB для каждых 4 подкадров распределяют в виде 28-30-28-30 битов. Идея, лежащая в основе этого требования, состоит в том, чтобы лучше создавать часть возбуждения после начального/переходного события, которое является перцепционно более важным, чем часть возбуждения перед ним.
[0066] Кодовая книга форм голосовых импульсов может состоять из квантованных нормированных форм сокращенных голосовых импульсов, размещенных в конкретных положениях, описанных в Разделе 5.2.3.2.1 (Поиск кодовой книги голосовых импульсов) Ссылки [2]. Поиск кодовой книги тогда содержит выбор наилучшей формы и наилучшего положения. Например, формы голосовых импульсов могут быть представлены кодовыми векторами, содержащими только один ненулевой элемент, соответствующий возможным положениям импульсов. После выбора, кодовый вектор сворачивают с импульсной характеристикой формирующего фильтра.
[0067] С использованием вышеупомянутых требований, распределитель 261 битов FCB может быть спроектирован следующим образом (выражено в C-коде):
/*---------------------------------------------------------*
* acelp_FCB_allocator()
*
* Подпрограмма для распределения битового бюджета фиксированной инновационной кодовой книги
*---------------------------------------------------------*/
static void acelp_FCB_allocator(
short *, /* i/o: доступный битовый бюджет*/
int [],/* o : индекс кодовой книги c*/
short, /* i : число подкадров */
const short, /* i : длительность подкадра*/
const short, /* i : тип кодера */
const short, /* i : индекс подкадра TC */
const short /* i : фиксированный битовый бюджет первого подкадра */
)
{
short cdbk, sfr, step;
short nBits_tmp;
int *p_fixed_cdk_index;
p_fixed_cdk_index =;
/* ПЕРЕХОДНОЕ кодирование: битовый бюджет первого подкадра уже был зафиксирован, голосовой импульс не находится в первом подкадре */
if(>= L_SUBFR && )
{
short i;
for( i=0; i <; i++)
{
* -= ACELP_FIXED_CDK_BITS( [i]);
}
return;
}
/* ПЕРЕХОДНОЕ кодирование: битовый бюджет первого подкадра уже был зафиксирован, голосовой импульс находится в первом подкадре */
sfr=0;
if()
{
* -= ACELP_FIXED_CDK_BITS( [0]);
sfr=1;
p_fixed_cdk_index++;
= 3;
}
/* распределить битовый бюджет равномерно между подкадрами */
cdbk=0;
while( fcb_table(cdbk,)* <= * )
{
cdbk++;
}
cdbk--;
set_i( p_fixed_cdk_index, cdbk, );
nBits_tmp=0;
if( cdbk >= 0 )
{
nBits_tmp=fcb_table(cdbk,);
}
else
{
nBits_tmp=0;
}
* -= nBits_tmp *;
/* попытаться увеличить битовый бюджет FCB первого подкадра (s) */
step=fcb_table(cdbk+1,) - nBits_tmp;
while( * >= step )
{
(*p_fixed_cdk_index)++;
* -= step;
p_fixed_cdk_index++;
}
/* попытаться увеличить FCB первого подкадра в случаях, когда следующий шаг является меньшим, чем текущий шаг */
step=fcb_table( [sfr]+1, ) - fcb_table( [sfr],);
if( * >= step && cdbk >= 0 )
{
[sfr]++;
* -= step;
if(* >= step && [sfr+1] == [sfr] - 1 )
{
sfr++;
[sfr]++;
* -= step;
}
}
/* ПЕРЕХОДНОЕ кодирование: распределить наибольший битовый бюджет FCBQ для подкадра с кодовой книгой форм голосовых импульсов */
if(>= L_SUBFR )
{
short tempr;
SWAP( [0], [/L_SUBFR] );
/* ПЕРЕХОДНОЕ кодирование: распределить второй наибольший битовый бюджет FCBQ для последнего подкадра */
if(/L_SUBFR < - 1 )
{
SWAP( [(- L_SUBFR)/L_SUBFR], [-1] );
}
}
/* когда длительность подкадра > L_SUBFR, сигнализируется число битов вместо индекса кодовой книги */
if(> L_SUBFR )
{
short i, j;
for( i=0; i <; i++ )
{
j = [i];
[i] = fast_FCB_bits_2sfr[j];
}
}
return;
}
/*-------------------------------------------------------*
* fcb_table()
*
* Выбор таблицы битового бюджета фиксированной инновационной кодовой книги
*---------------------------------------------------------*/
static short fcb_table(
const short,
const short
)
{
short out;
out=PulseConfTable[n].bits;
if(> L_SUBFR )
{
out=fast_FCB_bits_2sfr[n];
}
return( out );
}
[0068] Здесь, функция SWAP() переставляет/меняет два входных значения. Функция fcb_table() затем выбирает соответствующую строку таблицы конфигурации FCB (фиксированной или инновационной кодовой книги) (определенной выше) и возвращает число битов, необходимых для кодирования выбранной FCB (фиксированной или инновационной кодовой книги).
Операция 212
[0069] Счетчик 262 определяет сумму битовых бюджетов (число битов), bFCBn, распределенных для N различных подкадров, для кодирования инновационной кодовой книги (фиксированной кодовой книги (FCB); второй части основного модуля CELP).
(4)
Операция 213
5
[0070] В операции 213, вычитатель 263 определяет число битов, b, оставшихся после кодирования инновационной кодовой книги, с использованием следующего соотношения:
(5)
5
[0071] В идеальном случае, после кодирования инновационной кодовой книги число оставшихся битов, b, равно нулю. Однако, может оказаться невозможным достичь этого результата, поскольку гранулярность индекса инновационной кодовой книги является большей, чем 1 (обычно 2-3 бита). Таким образом, небольшое число битов часто остается неиспользованным после кодирования инновационной кодовой книги.
Операция 214
5
5
LPC
[0072] В операции 214, распределитель 264 битов назначает неиспользованный битовый бюджет (число битов), b, для увеличения битового бюджета одной из частей основного модуля CELP (первых частей основного модуля CELP), за исключением инновационной кодовой книги. Например, неиспользованный битовый бюджет, b, может быть использован для увеличения битового бюджета, b, полученного из ROM-таблиц 258, с использованием следующего соотношения:
LPC
LPC
5
b’=b+b (6)
5
ACBn
Gn
5
5
[0073] Неиспользованный битовый бюджет, b, может быть также использован для увеличения битового бюджета других первых частей основного модуля CELP, например, битовых бюджетов b или b. Также, неиспользованный битовый бюджет, b, когда он является большим, чем 1 бит, может быть перераспределен между двумя или даже более первыми частями основного модуля CELP. Альтернативно, неиспользованный битовый бюджет, b, может быть использован для передачи FEC-информации (если она еще не подсчитана в дополнительных модулях кодека), например, класса сигнала (см. Ссылку [2]).
CELP с высокой битовой скоростью передачи данных
[0074] Традиционное CELP имеет ограничения, связанные с масштабируемостью и сложностью при использовании на высоких битовых скоростях передачи данных. Для преодоления этих ограничений, CELP-модель может быть расширена специальной кодовой книгой области преобразования, описанной в Ссылках [3] и [4]. В отличие от традиционного CELP, где возбуждение состоит только из вкладов адаптивного и инновационного возбуждения, расширенная модель вводит третью часть возбуждения, а именно, вклад возбуждения области преобразования. Дополнительная кодовая книга области преобразования обычно содержит фильтр предварительного выделения, преобразование из временной области в частотную область, векторный квантователь, и коэффициент усиления области преобразования. В расширенной модели, значительное число (по меньшей мере десятки) битов назначается для векторного квантователя в каждом подкадре.
FCBn
4
FCBn
[0075] В CELP с высокой битовой скоростью передачи данных, битовый бюджет распределяется для частей основного модуля CELP с использованием процедуры, описанной выше. Следуя этой процедуре, сумма битовых бюджетов, b, для кодирования инновационной кодовой книги в N подкадрах должна быть равной битовому бюджету, b, или должна приближаться к нему. В CELP с высокой битовой скоростью передачи данных, битовые бюджеты, b, обычно являются ограниченными, и число неиспользованных битов, b5, является относительно высоким и используется для кодирования параметров кодовой книги области преобразования.
TDGn
5
[0076] Сначала, сумму битового бюджета, b, для кодирования коэффициента усиления области преобразования в N подкадрах и, в конечном счете, битового бюджета других параметров кодовой книги области преобразования, за исключением битового бюджета для векторного квантователя, вычитают из неиспользованного битового бюджета, b, с использованием следующего соотношения:
(7)
7
VQn
VQn
[0077] Затем, оставшийся битовый бюджет (число битов), b, распределяют для векторного квантователя в кодовой книге области преобразования и распределяют среди всех подкадров. Битовый бюджет (число битов) подкадра векторного квантователя обозначается b. В зависимости от используемого векторного квантователя (например, AVQ-квантователя, используемого в EVS), квантователь не потребляет весь распределенный битовый бюджет, b, и остается небольшое переменное число битов, доступных в каждом подкадре. Эти биты являются неопределенными битами, используемыми в следующем подкадре в том же кадре. Для большей эффективности кодовой книги области преобразования, немного более высокий (больший) битовый бюджет (число битов) распределяют для векторного квантователя в первом подкадре. Пример реализации приведен в следующем псевдокоде:
for( n=0; n < N; n++ )
{
VQn
tmp
b=b
}
VQ0
tmp
7
tmp
b=b + (b - N*b)
7
[0078] Здесь  обозначает наибольшее целое, меньшее или равное x, и N является числом подкадров в одном кадре. Битовый бюджет (число битов), b, распределяют равномерно между всеми подкадрами, в то время как битовый бюджет для первого подкадра в конечном счете немного увеличивают на вплоть до N-1 битов. Таким образом, в CELP с высокой битовой скоростью передачи данных после этой операции нет никаких оставшихся битов.
Другие аспекты, относящиеся к расширенному EVS-кодеку
core
[0079] Во многих примерах имеется больше одной альтернативы для кодирования данной части основного модуля CELP. В сложных кодеках, таких как EVS, несколько разных технологий являются доступными для кодирования данной части основного модуля CELP, и выбор одной технологии обычно делается на основе битовой скорости передачи данных основного модуля CELP (битовая скорость передачи данных основного модуля соответствует битовому бюджету, b, основного модуля CELP, умноженному на число кадров в секунду). Примером является квантование коэффициента усиления, в котором имеются три (3) разные технологии, доступные в EVS-кодеке, описанном в Ссылке [2], в режиме Обобщенного кодирования (Generic Coding - GC):
- векторный квантователь на основе предсказания подкадров (GQ1; используемый при битовых скоростях передачи данных, меньших или равных 8,0 Кбит/с);
- векторный квантователь без памяти адаптивных и инновационных коэффициентов усиления (GQ2; используемый при битовых скоростях передачи данных, больших, чем 8 Кбит/с и меньших или равных 32 Кбит/с); и
- два скалярных квантователя (GQ3; используемые при битовых скоростях передачи данных, больших, чем 32 Кбит/с).
total
[0080] Также, при постоянной общей битовой скорости передачи данных, b, разные технологии для кодирования и квантования данной части основного модуля CELP могут переключаться на покадровой основе в зависимости от битовой скорости передачи данных основного модуля CELP. Примером является параметрический режим стереокодирования при 48 Кбит/с, в котором разные квантователи коэффициента усиления (см. Ссылку [2]) используются в разных кадрах, показанный в Таблице 5, приведенной ниже:
Таблица 5
<b>Иллюстративное использование разных квантователей коэффициента усиления в расширенном EVS-кодеке с флуктуирующей основной битовой скоростью передачи данных</b>
№ кадра
k
k+1
k+2
k+3
k+4
k+5
k+6
Основная битовая скорость передачи данных
35,20 Кбит/с
38,05 Кбит/с
31,35 Кбит/с
32,00 Кбит/с
32,45 Кбит/с
34,30 Кбит/с
33,60 Кбит/с
Квантователь коэффициента усиления
GQ3
GQ3
GQ2
GQ2
GQ3
GQ3
GQ3
[0081] Интересно также отметить, что в зависимости от конфигурации кодека могут быть разные распределения битовых бюджетов для данной битовой скорости передачи данных основного модуля CELP. В качестве примера, кодирование первичного канала в режиме стереокодирования TD на основе EVS работает, в первом сценарии, с общей битовой скоростью передачи данных кодека, составляющей 16,4 Кбит/с и, во втором сценарии, с общей битовой скоростью передачи данных кодека, составляющей 24,4 Кбит/с. В обоих сценариях может оказаться, что битовая скорость передачи данных основного модуля CELP является одной и той же, даже если общие битовые скорости передачи данных кодека являются разными. Но разные конфигурации кодека могут приводить к разным распределениям битовых бюджетов.
[0082] В структуре стереоданных на основе EVS, разные конфигурации кодека между 16,4 Кбит/с и 24,4 Кбит/с связаны с разными внутренними частотами дискретизации основного модуля CELP, которые составляют 12,8 кГц при 16,4 Кбит/с и 16 кГц при 24,4 Кбит/с, соответственно. Таким образом, используется кодирование основного модуля CELP с четырьмя (4), соответственно, пятью (5) подкадрами, и используется соответствующее распределение битовых бюджетов. Ниже показаны эти различия между двумя упомянутыми общими битовыми скоростями передачи данных кодека (одно значение в каждой ячейке таблицы соответствует одному параметру для каждого кадра, в то время как большее количество значений соответствует параметрам для каждого подкадра).
Таблица 6
<b>Сравнение битовых бюджетов для одной и той же основной битовой скорости передачи данных при двух разных общих битовых скоростях передачи данных</b>
Общая битовая скорость передачи данных
16,4 Кбит/с
24,40 Кбит/с
Основная битовая скорость передачи данных
13,30 Кбит/с
13,30 Кбит/с
<b>Часть основного модуля</b>
<b>Битовый бюджет (биты)</b>
<b>Битовый бюджет (биты)</b>
Сигнализация
7
9
LPCQ
365
425
ACBQ
10+6+10+6
10+6+10+6+6
FCBQ
43+36+36+36
26+26+26+26+26
GQ
56+6+6+6
56+6+6+6+6
Флаг фильтрации низких частот ACB
1+1+1+1
1+1+1+1+1
FEC
2
2
Всего:
266
266
[0083] Соответственно, приведенная выше таблица показывает, что для одной и той же основной битовой скорости передачи данных могут быть разные распределения битовых бюджетов при разных общих битовых скоростях передачи данных кодека.
Последовательность операций процесса кодера
[0084] Когда дополнительные модули кодека содержат стереомодуль и BWE-модуль, последовательность операций процесса кодера может быть следующей:
- Кодируют дополнительную стереоинформацию (или информацию вторичного канала), и битовый бюджет, распределяемый для нее, вычитают из общего битового бюджета кодека. Биты сигнализации кодека также вычитают из общего битового бюджета.
- Битовый бюджет для кодирования дополнительного BWE-модуля устанавливают затем на основе общего битового бюджета кодека за вычетом битовых бюджетов стереомодуля и сигнализации кодека.
- Битовый бюджет BWE вычитают из общего битового бюджета кодека за вычетом битовых бюджетов «дополнительного стереомодуля» и «сигнализации кодека».
- Выполняют описанную выше процедуру для распределения битового бюджета основного модуля.
- Кодируют основной модуль CELP.
- Кодируют дополнительный BWE-модуль.
Декодер
[0085] Битовая скорость передачи данных основного модуля CELP не сигнализируется прямо в битовом потоке, но вычисляется в декодере на основе битовых бюджетов дополнительных модулей кодека. В примере реализации, содержащей стерео и BWE- дополнительные модули, может иметь место следующая процедура:
- Сигнализацию кодека записывают в битовый поток/считывают из него.
- Дополнительную стереоинформацию (или информацию вторичного канала) записывают в битовый поток/считывают из него. Битовый бюджет для кодирования дополнительной стереоинформации флуктуирует и зависит от дополнительной стереосигнализации и от технологии, используемой для кодирования. По существу, (а) в параметрических стереоданных, арифметический кодер и дополнительная стереосигнализация определяют, когда следует прекратить запись/считывание дополнительной стереоинформации, в то время как (b) в стереокодировании временной области, коэффициент микширования и режим кодирования определяют битовый бюджет дополнительной стереоинформации.
- Битовые бюджеты для сигнализации кодека и дополнительной стереоинформации вычитают из общего битового бюджета кодека.
- Затем, битовый бюджет для дополнительного BWE-модуля также вычитают из общего битового бюджета кодека. Гранулярность битового бюджета BWE обычно является малой: а) существует только одна битовая скорость передачи данных для каждой ширины полосы звуковых частот (WB/SWB/FB), и информация о ширине полосы частот передается в виде части сигнализации кодека в битовом потоке, или b) битовый бюджет для конкретной ширины полосы частот может иметь некоторую гранулярность, и битовый бюджет BWE определяют на основании общего битового бюджета кодека за вычетом битового бюджета стереомодуля. В иллюстративном варианте осуществления, например, BWE временной области SWB может иметь битовую скорость передачи данных, составляющую 0,95 Кбит/с, 1,6 Кбит/с или 2,8 Кбит/с, в зависимости от общей битовой скорости передачи данных кодека за вычетом битовой скорости передачи данных стереомодуля.
core
[0086] То, что остается, является битовым бюджетом основного модуля CELP, b, который является входным параметром для процедуры распределения битовых бюджетов, описанной в приведенном выше описании. Такое же распределение предусматривается для CELP-кодера (только после предварительной обработки) и CELP-декодера (в начале декодирования CELP-кадров).
[0087] Ниже только в качестве примера приведен фрагмент С-кода из расширенного EVS-кодека для распределения битовых бюджетов Обобщенного кодирования.
void config_acelp1(
const int total_brate, /* i : общая битовая скорость передачи данных */
const int core_brate_inp, /* i: основная битовая скорость передачи данных */
ACELP_config *acelp_cfg, /* i : распределение битов ACELP */
const short signaling_bits, /* i : число битов сигнализации */
short *nBits_es_Pred, /* o : число битов для Es_pred Q*/
short *unbits /* o : число неиспользованных битов */
)
{
/*--------------------------------------------------*
* Найти промежуточную битовую скорость передачи данных
*-----------------------------------------------------*/
i=0;
while( i < SIZE_BRATE_INTERMED_TBL )
{
if( core_brate_inp < brate_intermed_tbl[i] )
{
break;
}
i++;
}
core_brate=brate_intermed_tbl[i];
/*--------------------------------------------------------*
* Распределение битов ACELP
*-----------------------------------------------------*/
/* Установить битовый бюджет */
bits = (short)(core_brate_inp/50);
/* Вычесть биты сигнализации основного модуля */
bits -= signaling_bits;
/*---------------------------------------------------------*
* Битовый бюджет LPCQ
*--------------------------------------------------*/
/* LSF Q bit-budget */
acelp_cfg->lsf_bits=LSF_bits_tbl[ALLOC_IDX(core_brate)];
if( total_brate <= 9600 )
{
acelp_cfg->lsf_bits=31;
}
else if( total_brate <= 20000 )
{
acelp_cfg->lsf_bits=36;
}
else
{
acelp_cfg->lsf_bits=41;
}
bits -= acelp_cfg->lsf_bits;
/* Битовый бюджет mid-LSF Q */
acelp_cfg-> mid_lsf_bits=mid_LSF_bits_tbl [ALLOC_IDX(core_brate)];
bits -= acelp_cfg->mid_lsf_bits;
/*--------------------------------------------------------*
/* Битовый бюджет коэффициента усиления Q - часть 1 */
*---------------------------------------------------------*
*nBits_es_Pred=Es_pred_bits_tbl[ALLOC_IDX(core_brate)];
bits -= *nBits_es_Pred;
/*-------------------------------------------------------*
* Дополнительная информация для FEC
*--------------------------------------------------------*/
acelp_cfg->FEC_mode=0;
if( core_brate >= ACELP_11k60 )
{
acelp_cfg->FEC_mode=1;
bits -= FEC_BITS_CLS;
if( total_brate >= ACELP_16k40 )
{
acelp_cfg->FEC_mode=2;
bits -= FEC_BITS_ENR;
}
if( total_brate >= ACELP_32k )
{
acelp_cfg->FEC_mode=3;
bits -= FEC_BITS_POS;
}
}
/*--------------------------------------------------------*
* LP- фильтрация адаптивного возбуждения
*-------------------------------------------------------*/
if( core_brate < ACELP_11k60 )
{
acelp_cfg->ltf_mode=LOW_PASS;
}
else if( core_brate >= ACELP_11k60 )
{
acelp_cfg->ltf_mode=NORMAL_OPERATION;
bits -= nb_subfr;
}
else
{
acelp_cfg->ltf_mode=FULL_BAND;
}
/*------------------------------------------------------*
* Битовый бюджет коэффициентов усиления, основного тона, инноваций
*--------------------------------------------------------*/
acelp_cfg->fcb_mode=0;
/* Битовый бюджет основного тона Q и коэффициента усиления Q - часть 2*/
for( i=0; i<nb_subfr; i++ )
{
acelp_cfg->pitch_bits[i] = ACB_bits_tbl[ALLOC_IDX(core_brate, i)];
acelp_cfg->gains_mode[i] = gain_bits_tbl[ALLOC_IDX(core_brate, i)];
bits -= acelp_cfg->pitch_bits[i];
bits -= acelp_cfg->gains_mode[i];
}
/* Битовый бюджет инновационной кодовой книги */
if( core_brate_inp >= MIN_BRATE_AVQ_EXC )
{
for( i=0; i<nb_subfr; i++ )
{
acelp_cfg->fixed_cdk_index[i]=FCB_bits_tbl[ALLOC_IDX(core_brate, i)];
bits -= acelp_cfg->fixed_cdk_index[i];
}
}
else
{
acelp_cfg->fcb_mode=1;
acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, tc_subfr, fix_first );
}
/* Кодовая книга AVQ */
if( core_brate_inp >= MIN_BRATE_AVQ_EXC )
{
for( i=0; i<nb_subfr; i++ )
{
bits -= G_AVQ_BITS;
}
if(core_brate_inp>=MIN_BRATE_AVQ_EXC && core_brate_inp<=MAX_BRATE_AVQ_EXC_TD )
{
/* Флаг гармоничности ACELP AVQ */
bits--;
}
bit_tmp=bits/nb_subfr;
set_s( acelp_cfg->AVQ_cdk_bits, bit_tmp, nb_subfr );
bits -= bit_tmp * nb_subfr;
bit_tmp=bits % nb_subfr;
acelp_cfg->AVQ_cdk_bits[0] += bit_tmp;
bits -= bit_tmp;
}
/*--------------------------------------------------------*
* Обработка неиспользованных битов
*-------------------------------------------------------*/
acelp_cfg->ubits=0; /* неиспользованные биты */
if( bits > 0 )
{
/* Увеличить биты LPCQ */
acelp_cfg->lsf_bits += bits;
if( acelp_cfg->lsf_bits > 46 )
{
acelp_cfg->ubits=acelp_cfg->lsf_bits - 46;
acelp_cfg->lsf_bits=46;
}
}
return;
}
[0088] Фиг. 3 является упрощенной блок-схемой иллюстративной конфигурации аппаратных компонентов, образующих устройство распределения битовых бюджетов и реализующих способ распределения битовых бюджетов.
[0089] Устройство распределения битовых бюджетов может быть реализовано в виде части мобильного терминала, в виде части портативного устройства воспроизведения мультимедиа, или в любом подобном устройстве. Устройство распределения битовых бюджетов (идентифицированное ссылочной позицией 300 на фиг. 3) содержит вход 302, выход 304, процессор 306 и память 308.
total
[0090] Вход 302 выполнен с возможностью принимать, например, общий битовый бюджет кодека, b (фиг. 2). Выход 304 выполнен с возможностью подавать различные распределенные битовые бюджеты. Вход 302 и выход 304 могут быть реализованы в общем модуле, например, в последовательном устройстве ввода/вывода.
[0091] Процессор 306 оперативно соединен с входом 302, выходом 304, и памятью 308. Процессор 306 реализован в виде одного или нескольких процессоров для выполнения кодовых команд в поддержку функций различных модулей устройства распределения битовых бюджетов фиг. 2.
[0092] Память 308 может содержать энергонезависимую память для запоминания кодовых команд, выполняемых процессором 306, конкретно, читаемую процессором память, содержащую энергонезависимые команды, которые, при выполнении, заставляют процессор реализовывать операции и модули способа и устройства распределения битовых бюджетов фиг. 2. Память 308 может также содержать память с произвольным доступом или буфер (буферы) для запоминания промежуточных данных обработки из различных функций, выполняемых процессором 306.
[0093] Специалистам в данной области техники будет понятно, что описание способа и устройства распределения битовых бюджетов является только иллюстративным и никоим образом не предназначено для ограничения. Другие варианты осуществления легко могут быть предложены специалистами в данной области техники, получающими пользу от настоящего раскрытия. Дополнительно, раскрытые способ и устройство распределения битовых бюджетов могут быть настроены таким образом, чтобы они предлагали ценные решения для существующих потребностей и проблем, связанных с выделением или распределением битового бюджета.
[0094] Для ясности, описаны и показаны не все общепринятые признаки реализаций способа и устройства распределения битовых бюджетов. Конечно, следует понимать, что при разработке любой такой фактической реализации способа и устройства распределения битовых бюджетов, множественные специфические для реализации решения должны быть приняты для достижения конкретных целей разработчиков, таких как соответствие ограничениям, связанным с применением, системой, сетью или видом экономической деятельности, и эти конкретные цели могут изменяться в разных реализациях или у разных разработчиков. Кроме того, следует понимать, что усилия по разработке могут быть сложными и требующими больших временных затрат, но могут быть, тем не менее, общепринятыми мерами по проектированию для специалистов в области обработки звука, получающих пользу от настоящего раскрытия.
[0095] Согласно настоящему раскрытию, модули, операции обработки, и/или структуры данных, описанные здесь, могут быть реализованы с использованием различных типов операционных систем, вычислительных платформ, сетевых устройств, компьютерных программ, и/или машин общего назначения. Дополнительно, специалистам в данной области техники будет понятно, что могут быть также использованы устройства менее общего назначения, такие как жестко закодированные устройства, программируемые вентильные матрицы (field programmable gate array - FPGA), специализированные интегральные схемы (application specific integrated circuit - ASIC) и т.п. В случае, когда способ, содержащий последовательность операций и подопераций реализуется процессором, компьютером или машиной, и эти операции и подоперации могут храниться в виде последовательности энергонезависимых кодовых команд, читаемых процессором, компьютером или машиной, они могут храниться на материальном и/или энергонезависимом носителе.
[0096] Модули способа и устройства распределения битовых бюджетов, описанные здесь, могут содержать программные средства, аппаратно-программные средства, аппаратные средства или любую комбинацию (комбинации) программных средств, аппаратно-программных средств, аппаратных средств, пригодных для достижения целей, описанных здесь.
[0097] В способе и устройстве распределения битовых бюджетов, описанных здесь, различные операции и подоперации могут быть выполнены в различных порядках, и некоторые операции и подоперации могут быть необязательными.
[0098] Хотя приведенное выше раскрытие настоящего изобретения реализовано посредством неограничивающих иллюстративных вариантов осуществления, эти варианты осуществления могут быть модифицированы и будут находиться в пределах объема прилагаемой формулы изобретения, не выходя за рамки сущности и природы настоящего раскрытия.
ССЫЛКИ
Нижеследующие ссылки упоминаются в описании настоящего изобретения, и их полное содержание включено в настоящий документ по ссылке.
[1] ITU-T Recommendation G.718: "Frame error robust narrowband and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbps," 2008.
[2] 3GPP Spec. TS 26.445: "Codec for Enhanced Voice Services (EVS). Detailed Algorithmic Description," v.12.0.0, Sep. 2014.
[3] B. Bessette, "Flexible and scalable combined innovation codebook for use in CELP coder and decoder," US Patent 9,053,705, June 2015.
[4] V. Eksler, "Transform-Domain Codebook in a CELP Coder and Decoder," US Patent Publication 2012/0290295, November 2012, and US Patent 8,825,475, September 2014.
[5] F. Baumgarte, C. Faller, "Binaural cue coding - Part I: Psychoacoustic fundamentals and design principles," IEEE Trans. Speech Audio Processing, vol. 11, pp. 509-519, Nov. 2003.
[6] Tommy Vaillancourt, “Method and system using a long-term correlation difference between left and right channels for time domain down mixing a stereo sound signal into primary and secondary channels,” PCT Application WO2017/049397A1.