Линейное предсказание с кодовым возбуждением
Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Май 2022 г. ) |
Линейное предсказание с кодовым возбуждением ( CELP ) — это с линейным прогнозированием, алгоритм кодирования речи первоначально предложенный Манфредом Р. Шредером и Бишну С. Аталом в 1985 году. В то время он обеспечивал значительно лучшее качество, чем существующие алгоритмы с низкой скоростью передачи данных, такие как остаточный линейным предсказанием с возбуждением (RELP) и кодированием с линейным предсказанием (LPC) Вокодеры с (например, FS-1015 ). Наряду со своими вариантами, такими как алгебраический CELP , расслабленный CELP , CELP с малой задержкой и линейное предсказание с возбуждением векторной суммы , в настоящее время это наиболее широко используемый алгоритм кодирования речи. [ нужна ссылка ] . Он также используется при MPEG-4 Audio кодировании речи . CELP обычно используется как общий термин для класса алгоритмов, а не для конкретного кодека.
Предыстория [ править ]
Алгоритм CELP основан на четырех основных идеях:
- Использование модели исходно-фильтрационного производства речи посредством линейного предсказания (ЛП) (см. учебник «Алгоритм кодирования речи»);
- Использование адаптивной и фиксированной кодовой книги в качестве входных данных (возбуждения) модели LP;
- Выполнение поиска в замкнутом цикле в «перцепционно взвешенной области».
- Применение векторного квантования (VQ)
Исходному алгоритму, смоделированному в 1983 году Шредером и Аталом, требовалось 150 секунд для кодирования 1 секунды речи при запуске на суперкомпьютере Cray-1 . С тех пор более эффективные способы реализации кодовых книг и улучшения вычислительных возможностей позволили запустить алгоритм во встроенных устройствах, таких как мобильные телефоны.
CELP-декодер [ править ]
Прежде чем исследовать сложный процесс кодирования CELP, мы познакомим вас с декодером. На рисунке 1 описан общий декодер CELP. Возбуждение производится путем суммирования вкладов фиксированных (также известных как стохастические или инновационные) и адаптивных (также известных как шаг) кодовых книг:
где - это фиксированный (он же стохастический или инновационный) вклад кодовой книги и — это вклад адаптивной ( шаговой ) кодовой книги. Фиксированная кодовая книга — это словарь векторного квантования , который (явно или неявно) жестко закодирован в кодеке. Эта кодовая книга может быть алгебраической ( ACELP ) или храниться явно (например, Speex ). Записи в адаптивной кодовой книге состоят из задержанных версий возбуждения. Это позволяет эффективно кодировать периодические сигналы, например вокализованные звуки.
Фильтр, формирующий возбуждение, имеет всеполюсную модель вида , где называется фильтром прогнозирования и получается с помощью линейного прогнозирования ( алгоритм Левинсона-Дурбина ). Всеполюсный фильтр используется потому, что он хорошо отображает речевой тракт человека и его легко вычислить.
CELP-кодер [ править ]
Основной принцип CELP называется анализом путем синтеза (AbS) и означает, что кодирование (анализ) выполняется путем перцепционной оптимизации декодированного (синтеза) сигнала в замкнутом контуре. Теоретически лучший поток CELP можно получить, перепробовав все возможные комбинации битов и выбрав ту, которая создает декодированный сигнал с лучшим звучанием. Очевидно, что на практике это невозможно по двум причинам: требуемая сложность превосходит любое доступное в настоящее время оборудование, а критерий выбора «наилучшего звучания» предполагает присутствие человека-слушателя.
Чтобы обеспечить кодирование в реальном времени с использованием ограниченных вычислительных ресурсов, поиск CELP разбивается на более мелкие, более управляемые последовательные поиски с использованием простой функции взвешивания по восприятию. Обычно кодирование выполняется в следующем порядке:
- Коэффициенты линейного предсказания (LPC) вычисляются и квантуются, обычно как линейные спектральные пары (LSP).
- Производится поиск в адаптивной (шаговой) кодовой книге и удаляется ее вклад.
- Осуществляется поиск фиксированной (инновационной) кодовой книги.
Взвешивание шума [ править ]
Большинство (если не все) современных аудиокодеков пытаются формировать шум кодирования так, чтобы он появлялся в основном в тех диапазонах частот, где ухо не может его обнаружить. Например, ухо более терпимо к шуму в более громких частях спектра и наоборот. Вот почему вместо минимизации простой квадратичной ошибки CELP минимизирует ошибку для области, взвешенной по восприятию . Весовой фильтр W(z) обычно получается из фильтра LPC путем расширения полосы пропускания :
где .
См. также [ править ]
- 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 , vol. 23, нет. 2, март 2006 г., стр. 154–161.
- М. Р. Шредер и Б. С. Атал, «Линейное предсказание с кодовым возбуждением (CELP): высококачественная речь при очень низких скоростях передачи данных», в материалах Международной конференции IEEE по акустике, речи и обработке сигналов (ICASSP), том. 10, стр. 937–940, 1985.
Внешние ссылки [ править ]
- Эта статья основана на статье, представленной на Linux.Conf.Au.
- Некоторые детали основаны на Speex . по кодеку руководстве
- эталонные реализации CELP 1016A (CELP 3.2a) и LPC 10e. Архивировано 12 декабря 2016 г. в Wayback Machine.
- Линейное прогнозирующее кодирование (LPC)