Введение
Код с возбуждением по линейному предсказанию (CELP) — это линейный предсказательный алгоритм кодирования речи, впервые предложенный Манфредом Р. Шредером и Бишну С. Аталом в 1985 году. В то время он обеспечивал значительно более высокое качество, чем существующие алгоритмы с низкой битовой скоростью, такие как вокодеры с остаточным возбуждением линейного предсказания (RELP) и линейное предсказательное кодирование (LPC) (например, FS 1015). Вместе со своими вариантами, такими как алгебраический CELP, CELP с ослабленными ограничениями, CELP с низкой задержкой и линейное предсказание с векторным суммарным возбуждением, он в настоящее время является наиболее широко используемым алгоритмом кодирования речи. Он также используется в кодировании речи в MPEG 4 Audio. CELP обычно используется как общий термин для целого класса алгоритмов, а не для конкретного кодека.
Code excited linear prediction (CELP) is a linear predictive speech coding algorithm originally proposed by Manfred R. Schroeder and Bishnu S. Atal in 1985. At the time, it provided significantly better quality than existing low bit rate algorithms, such as residual excited linear prediction (RELP) and linear predictive coding (LPC) vocoders (e. g., FS 1015). Along with its variants, such as algebraic CELP, relaxed CELP, low delay CELP and vector sum excited linear prediction, it is currently the most widely used speech coding algorithm. It is also used in MPEG 4 Audio speech coding. CELP is commonly used as a generic term for a class of algorithms and not for a particular codec.
Декодер CELP
Прежде чем исследовать сложный процесс кодирования CELP, мы представляем здесь декодер. На рисунке 1 описан обобщенный декодер CELP. Возбуждение формируется путем суммирования вкладов из фиксированного (так называемого стохастического или инновационного) и адаптивного (так называемого высотного) кодовых книг:
где – вклад фиксированного (так называемого стохастического или инновационного) кодового книги, а – вклад адаптивного (высотного) кодового книги. Фиксированный кодовый словарь представляет собой словарь векторного квантования, который (явно или неявно) жестко запрограммирован в кодеке. Этот словарь может быть алгебраическим (ACELP) или храниться явно (например, Speex). Элементы адаптивного кодового словаря состоят из задержанных версий возбуждения. Это позволяет эффективно кодировать периодические сигналы, такие как речевые звуки. Фильтр, формирующий возбуждение, имеет всеполюсную модель вида , где называется фильтром предсказания и получается с использованием линейного предсказания (алгоритм Левинсона-Дурбина). Всеполюсный фильтр используется, поскольку он хорошо аппроксимирует человеческий голосовой тракт и его легко вычислить.
Кодировщик CELP
Основной принцип CELP называется анализ-синтез (AbS) и означает, что кодирование (анализ) выполняется путем перцептивной оптимизации декодированного (синтезируемого) сигнала в замкнутом контуре. Теоретически, наилучший поток CELP был бы получен путем перебора всех возможных комбинаций битов и выбора той, которая обеспечивает наилучшее звучание декодированного сигнала. Это, очевидно, невозможно на практике по двум причинам: требуемая вычислительная сложность превышает возможности любого современного оборудования, а критерий выбора "лучшего звучания" подразумевает участие человека-слушателя. Для достижения кодирования в реальном времени при ограниченных вычислительных ресурсах поиск CELP разбивается на более мелкие, управляемые последовательные поиски с использованием простой функции перцептивного взвешивания. Обычно кодирование выполняется в следующем порядке:
Вычисляются и квантуются коэффициенты линейного предсказания (LPC), как правило, в виде линейных спектральных пар (LSP). Выполняется поиск в адаптивном (питч) кодовом словаре, и его вклад вычитается. Выполняется поиск в фиксированном (инновационном) кодовом словаре.
Взвешивание шума
Большинство (если не все) современных аудиокодеков стремятся формировать шум кодирования таким образом, чтобы он проявлялся преимущественно в тех частотных областях, где ухо его не воспринимает. Например, ухо более терпимо к шуму в более громких участках спектра и наоборот. Именно поэтому, вместо минимизации простой квадратичной ошибки, CELP минимизирует ошибку в перцептивно взвешенном пространстве. Взвешивающий фильтр W(z) обычно получают из LPC-фильтра с помощью расширения полосы пропускания:
где .