Эта статья включает список ссылок , связанных материалов или внешних ссылок , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Май 2022 г. ) |
Линейное предсказание с кодовым возбуждением ( CELP ) — это алгоритм линейного предсказательного кодирования речи , первоначально предложенный Манфредом Р. Шредером и Бишну С. Аталом в 1985 году. В то время он обеспечивал значительно лучшее качество, чем существующие алгоритмы с низкой скоростью передачи данных, такие как вокодеры с остаточным возбуждением (RELP) и линейного предсказательного кодирования (LPC) (например, FS-1015 ). Наряду с его вариантами, такими как алгебраический CELP , расслабленный CELP , CELP с малой задержкой и векторное суммарное возбуждение линейного предсказания , в настоящее время это наиболее широко используемый алгоритм кодирования речи [ требуется ссылка ] . Он также используется в кодировании речи MPEG-4 Audio . CELP обычно используется как общий термин для класса алгоритмов, а не для конкретного кодека.
Алгоритм CELP основан на четырех основных идеях:
Первоначальный алгоритм, смоделированный в 1983 году Шредером и Аталом, требовал 150 секунд для кодирования 1 секунды речи при запуске на суперкомпьютере Cray-1 . С тех пор более эффективные способы реализации кодовых книг и улучшения вычислительных возможностей сделали возможным запуск алгоритма во встроенных устройствах, таких как мобильные телефоны.
Прежде чем исследовать сложный процесс кодирования CELP, мы представляем здесь декодер. Рисунок 1 описывает общий декодер CELP. Возбуждение создается путем суммирования вкладов от фиксированных (также известных как стохастические или инновационные) и адаптивных (также известных как шаг) кодовых книг:
где — фиксированный (он же стохастический или инновационный) вклад кодовой книги, а — адаптивный ( высотный ) вклад кодовой книги. Фиксированная кодовая книга — это словарь векторного квантования , который (явно или неявно) жестко закодирован в кодеке. Эта кодовая книга может быть алгебраической ( ACELP ) или храниться явно (например, Speex ). Записи в адаптивной кодовой книге состоят из задержанных версий возбуждения. Это позволяет эффективно кодировать периодические сигналы, такие как вокализованные звуки.
Фильтр, который формирует возбуждение, имеет модель всех полюсов вида , где называется фильтром предсказания и получается с помощью линейного предсказания ( алгоритм Левинсона–Дарбина ). Фильтр всех полюсов используется, потому что он хорошо представляет речевой тракт человека и потому что его легко вычислить.
Основной принцип CELP называется анализ через синтез (AbS) и означает, что кодирование (анализ) выполняется путем перцептивной оптимизации декодированного (синтезированного) сигнала в замкнутом цикле. Теоретически, наилучший поток CELP будет получен путем перебора всех возможных комбинаций битов и выбора той, которая производит наилучше звучащий декодированный сигнал. Очевидно, что на практике это невозможно по двум причинам: требуемая сложность выходит за рамки любого доступного в настоящее время оборудования, а критерий выбора «наилучшего звучания» подразумевает наличие слушателя-человека.
Для того, чтобы достичь кодирования в реальном времени с использованием ограниченных вычислительных ресурсов, поиск CELP разбивается на более мелкие, более управляемые, последовательные поиски с использованием простой функции перцептивного взвешивания. Обычно кодирование выполняется в следующем порядке:
Большинство (если не все) современных аудиокодеков пытаются сформировать кодирующий шум таким образом, чтобы он появлялся в основном в частотных областях, где ухо не может его обнаружить. Например, ухо более терпимо к шуму в тех частях спектра, которые громче, и наоборот. Вот почему вместо минимизации простой квадратичной ошибки, CELP минимизирует ошибку для перцептивно взвешенной области. Фильтр взвешивания W(z) обычно выводится из фильтра LPC с использованием расширения полосы пропускания :
где .