CELP

Кодирование на основе линейного предсказания и кодового возбуждения (англ. Code Excited Linear Prediction, CELP) представляет собой алгоритм кодирования речи, первоначально предложенный Манфредом Шрёдером и Б. С. Аталом в 1985 году. В то время алгоритм обеспечивал значительно лучшее качество, чем существовавшие тогда алгоритмы с низким битрейтом, такие, как аудиокодеки RELP и LPC (например, FS-1015). Наряду с вариантами, как, например, ACELP, RCELP, LD-CELP и VSELP, на сегодня это наиболее широко используемый алгоритм кодирования речи. CELP в настоящее время используется как общий термин для класса алгоритмов, а не для определенного кодека.

Введение

Алгоритм CELP базируется на четырех основных идеях:

  • Использование модели источника-фильтра для воспроизведения речи на основе линейного предсказания (ЛП);
  • Использование адаптивной и фиксированной кодовых таблиц в качестве базы для модели линейного предсказания;
  • Замкнутый поиск в «перцептуально взвешенном домене».
  • Применение векторного квантования (VQ)

Оригинальный алгоритм Шредера и Атала в 1983 году, при запуске на суперкомпьютере Cray I, требовал 150 секунд для кодирования речевого сигнала длиной 1 секунду. С возникновением более эффективных способов реализации таблиц кодов и совершенствованием вычислительных возможностей- запуск алгоритма стал возможен во встраиваемых устройствах, таких как мобильные телефоны.

CELP декодер

Рисунок 1: CELP декодер

Прежде, чем исследовать сложный процесс кодирования CELP мы рассмотрим принцип работы декодера. Иллюстрация описывает универсальный декодер CELP. Возбуждение производится через суммирование вкладов от адаптивной (иначе тактовой) таблицы кодов и фиксированной (иначе стохастической) таблицы кодов:

e [ n ] = e a [ n ] + e f [ n ] {\displaystyle e[n]=e_{a}[n]+e_{f}[n]}

где e a [ n ] {\displaystyle e_{a}[n]} является адаптивным (тактовым) взносом таблицы кодов и e f [ n ] {\displaystyle e_{f}[n]} является фиксированным (стохастическим) вкладом таблицы кодов. Фиксированная таблица кодов- векторный словарь квантования, который является (неявно или явно) жестко закодированным в кодек. Эта таблица кодов может быть алгебраической ACELP или сохраненной явно (например. Speex). Записи в адаптивной таблице кодов состоят из отсроченных версий возбуждения. Это позволяет эффективно кодировать периодические сигналы, такие как человеческая речь.

У фильтра, который формирует возбуждение, есть все полюса модели в форме 1 / A ( z ) {\displaystyle 1/A(z)} , где A ( z ) {\displaystyle A(z)} -называется фильтром прогнозирования и получения, с применением линейного прогнозирования алгоритм Левинсона-Дарбина (Levinson-Durbin). Этот фильтр применим не только потому что использует все полюса, но и потому что его легко вычислить и это хорошее представление человеческого голоса.

Кодер CELP

Основной принцип, заключённый в основе CELP, называют (Абсолютным) «Анализом через синтез», что означает, что кодирование (анализ) выполнено перцепционно, оптимизируя декодированный сигнал в замкнутом цикле. В теории, лучший поток CELP был бы произведён в результате комбинаций всех возможных наборов двоичных знаков и выбором того, который производит декодированный сигнал наилучшего звучания. Это, очевидно, невозможно по двум причинам: сложность реализации выше любых доступных в настоящее время аппаратных средств, и критерий отбора «лучшее звучание» подразумевает человека в качестве слушателя.

Чтобы осуществить кодирование в реальном времени, используя ограниченные вычислительные ресурсы, поиск CELP разбит на мелкие, более управляемые, последовательные поиски, используя простую перцептуальную функцию надбавки. Как правило, кодирование выполнено в следующем порядке:

  • Линейные Коэффициенты Предсказания (ЛКП) вычислены и квантованы, обычно как LSP
  • Происходит поиск по адаптивной (тактовой) таблице кодов, и её содействие/взнос/ удаляется
  • Поиск по фиксированной (стохастической) таблице кодов

Искажение шумом

Большинство (если не все) современные звуковые кодеки пытаются сформировать искажение в кодировании так, чтобы оно проявилось главным образом в тех частотных областях, где его не может уловить человеческое ухо. Например, ухо более терпимо к искажению в частях звукового диапазона, которые громче и наоборот. Именно поэтому вместо минимизации квадратичной ошибки, CELP минимизирует ошибки на взвешенной области. Взвешивающий результат по кривой W (z), как правило, вытекает из фильтра ЛКП при помощи расширения полосы пропускания:

W ( z ) = A ( z / γ 1 ) A ( z / γ 2 ) {\displaystyle W(z)={\frac {A(z/\gamma _{1})}{A(z/\gamma _{2})}}}

где γ 1 > γ 2 {\displaystyle \gamma _{1}>\gamma _{2}} .

Ссылки

  • Эталонные реализации CELP 1016A и LPC 10e
  • Алгоритм CELP
Перейти к шаблону «Методы сжатия»
Методы сжатия
Теория
Информация
Единицы измерения
Без потерь
Энтропийное сжатие
Словарные методы
Прочее
Аудио
Теория
Методы
Прочее
Изображения
Термины
Методы
Прочее
Видео
Термины
Методы