Линейное предсказание с кодовым возбуждением

Алгоритм кодирования речи

Линейное предсказание с кодовым возбуждением ( CELP ) — это алгоритм линейного предсказательного кодирования речи , первоначально предложенный Манфредом Р. Шредером и Бишну С. Аталом в 1985 году. В то время он обеспечивал значительно лучшее качество, чем существующие алгоритмы с низкой скоростью передачи данных, такие как вокодеры с остаточным возбуждением (RELP) и линейного предсказательного кодирования (LPC) (например, FS-1015 ). Наряду с его вариантами, такими как алгебраический CELP , расслабленный CELP , CELP с малой задержкой и векторное суммарное возбуждение линейного предсказания , в настоящее время это наиболее широко используемый алгоритм кодирования речи [ требуется ссылка ] . Он также используется в кодировании речи MPEG-4 Audio . CELP обычно используется как общий термин для класса алгоритмов, а не для конкретного кодека.

Фон

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

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

CELP-декодер

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

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

е [ н ] = е ф [ н ] + е а [ н ] {\displaystyle e[n]=e_{f}[n]+e_{a}[n]\,}

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

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

CELP-кодер

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

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

Взвешивание шума

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

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

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

Смотрите также

  • MPEG-4 Часть 3 (CELP как тип аудиообъекта MPEG-4)
  • G.728 – Кодирование речи со скоростью 16 кбит/с с использованием линейного предсказания с кодовым возбуждением и малой задержкой
  • G.718 – использует CELP для нижних двух уровней для диапазона (50–6400 Гц) в двухступенчатой ​​структуре кодирования
  • G.729.1 – использует кодирование CELP для нижнего диапазона (50–4000 Гц) в трехступенчатой ​​структуре кодирования
  • Сравнение форматов кодирования звука
  • CELT — родственный аудиокодек, заимствующий некоторые идеи из CELP.

Ссылки

  • Б. С. Атал, «История линейного предсказания», журнал IEEE Signal Processing Magazine , т. 23, № 2, март 2006 г., стр. 154–161.
  • М. Р. Шредер и Б. С. Атал, «Линейное предсказание с кодовым возбуждением (CELP): высококачественная речь при очень низкой скорости передачи данных», в Трудах Международной конференции IEEE по акустике, речи и обработке сигналов (ICASSP), т. 10, стр. 937–940, 1985.
  • Эта статья основана на докладе, представленном на Linux.Conf.Au.
  • Некоторые части основаны на руководстве по кодеку Speex
  • эталонные реализации CELP 1016A (CELP 3.2a) и LPC 10e. Архивировано 2016-12-12 на Wayback Machine
  • Линейное предсказательное кодирование (LPC)

Избранные чтения

  • Введение в кодирование CELP
  • Обработка речи: теория анализа и синтеза LPC Архивировано 15.06.2014 на Wayback Machine
Взято с "https://en.wikipedia.org/w/index.php?title=Code-excited_linear_prediction&oldid=1220779779"