У декодера CELP LPC и интерполятора есть две функции:
1 Восстанавливать коэффициенты LPC из Ipc_indices [ ].
2 Интерполировать восстановленные коэффициенты LPC для каждого подфрейма.
В зависимости от режима квантования lpc_indices[ ] содержат информацию, необходимую чтобы восстановить коэффициенты LSP. Есть три типа процессов декодирования, а именно, процесс декодирования узкополосного LSP, процесс декодирования широкополосного LSP, и процесс декодирования LSP c масштабируемой полосой пропускания. Выходы этого процесса являются коэффициентами фильтра, названные коэффициентами LPC или параметрами, которые могут использоваться в фильтре прямой формы (см. таблицу 76).
Таблица 76 - Инструменты декодирования LPC
Режим кодирования | Частота дискретизации | Инструмент |
Mode I | 16 кГц | Wideband LSP-VQ |
Mode II | 8 кГц | Narrowband LSP-VQ |
16 кГц | Wideband LSP-VQ | |
8/16 кГц (BWS) | Bandwidth Scalable (BWS) LSP-VQ |
5.6.1 Инструмент декодирования узкополосного LSP-VQ
5.6.1.1 Описание инструмента
Инструмент декодирования узкополосного LSP имеет двухступенчатую структуру VQ. Квантованные LSPs воспроизводятся добавлением декодированных в первой и во второй стадиях LSPs. Во второй стадии есть два процесса декодирования, с или без межфреймового предсказания, процесс декодирования выбирается согласно флажку Ipc_indices. Затем декодированные LSPs интерполируются и преобразуются в коэффициенты LPC.
5.6.1.2 Определения
Вход
Ipc_indices [ ]: Размерность этого массива num_lpc_indices содержит упакованные индексы lрс.
Выход
int_Qlpc_coefficients[ ]: Этот массив содержит коэффициенты LPC для каждого подфрейма. Коэффициенты LPC декодированы и интерполированы, как описано в процессе декодирования. Коэффициенты LPC расположены в стеке один за другим в блоках Ipc_order. Таким образом размерность массива равна Ipc_order* nrof_subframes.
Конфигурация
Ipc_order: Это поле указывает порядок используемого LPC.
num_lpc_indices: Это поле содержит ряд упакованных кодов LPC. Для узкополосного LSP, num_lpc_indices процесса декодирования установлен 5.
nrof_subframes: Это поле содержит ряд подфреймов.
Элементы справки, используемые в процессе декодирования узкополосного LSP:
lsp_tbl[ ][ ][ ] | таблицы поиска для первой стадии процесса декодирования |
d_tbl[ ][ ][ ] | таблицы поиска для второй стадии процесса декодирования VQ без межфреймового предсказания |
pd_tbl[ ][ ][ ] | таблицы поиска для второй стадии процесса декодирования VQ с межфреймовым предсказанием |
dim[ ][ ] | размерности для квантования расщепленного вектора |
sign | знак вектора кода для второй стадии процесса декодирования |
idx | распакованный индекс для второй стадии процесса декодирования |
lsp_first[ ], | LSPs, декодированные на первой стадии процесса декодирования |
lsp_previous[ ] | LSPs, декодированные в предыдущем фрейме |
lsp_predict[ ] | LSPs, предсказанные из lsp_previous[ ] и lsp_first[ ] |
lsp_current[ ] | LSPs, декодированные в текущем фрейме |
lsp_subframe[ ][ ] | LSPs, интерполированные в каждом подфрейме |
ratio_predict | коэффициент для предсказания lsp_predict[ ] |
ratio_sub | коэффициент интерполяции для вычисления lsp_subframe[ ][ ] |
min_gap | минимальное расстояние между соседними LSPs |
Convert2lpc () | функция для преобразования LSPs в LPCs |
5.6.1.3 Процесс декодирования
Процесс декодирования LSP для восстановления коэффициентов интерполированного LPC для каждого подфрейма описан ниже.
5.6.1.3.1 Преобразование индексов в LSPs
LSPs текущего фрейма (lsp_current[ ]), которые кодируются разбиением и двухступенчатым векторным квантованием, декодируются двухступенчатым процессом декодирования. Размерность каждого вектора описана в таблице 77 и таблице 78. lpc_indices[0],[1] и lpc_indices[2],[3] представляют индексы для первой и второй стадии, соответственно.