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 декодер
Прежде, чем исследовать сложный процесс кодирования CELP мы рассмотрим принцип работы декодера. Иллюстрация описывает универсальный декодер CELP. Возбуждение производится через суммирование вкладов от адаптивной (иначе тактовой) таблицы кодов и фиксированной (иначе стохастической) таблицы кодов:
- [math]\displaystyle{ e[n]=e_a[n]+e_f[n] }[/math]
где [math]\displaystyle{ e_{a}[n] }[/math] является адаптивным (тактовым) взносом таблицы кодов и [math]\displaystyle{ e_{f}[n] }[/math] является фиксированным (стохастическим) вкладом таблицы кодов. Фиксированная таблица кодов- векторный словарь квантования, который является (неявно или явно) жестко закодированным в кодек. Эта таблица кодов может быть алгебраической ACELP или сохраненной явно (например. Speex). Записи в адаптивной таблице кодов состоят из отсроченных версий возбуждения. Это позволяет эффективно кодировать периодические сигналы, такие как человеческая речь.
У фильтра, который формирует возбуждение, есть все полюса модели в форме [math]\displaystyle{ 1/A(z) }[/math], где [math]\displaystyle{ A(z) }[/math]-называется фильтром прогнозирования и получения, с применением линейного прогнозирования алгоритм Левинсона-Дарбина (Levinson-Durbin). Этот фильтр применим не только потому что использует все полюса, но и потому что его легко вычислить и это хорошее представление человеческого голоса.
Кодер CELP
Основной принцип, заключённый в основе CELP, называют (Абсолютным) «Анализом через синтез», что означает, что кодирование (анализ) выполнено перцепционно, оптимизируя декодированный сигнал в замкнутом цикле. В теории, лучший поток CELP был бы произведён в результате комбинаций всех возможных наборов двоичных знаков и выбором того, который производит декодированный сигнал наилучшего звучания. Это, очевидно, невозможно по двум причинам: сложность реализации выше любых доступных в настоящее время аппаратных средств, и критерий отбора «лучшее звучание» подразумевает человека в качестве слушателя.
Чтобы осуществить кодирование в реальном времени, используя ограниченные вычислительные ресурсы, поиск CELP разбит на мелкие, более управляемые, последовательные поиски, используя простую перцептуальную функцию надбавки. Как правило, кодирование выполнено в следующем порядке:
- Линейные Коэффициенты Предсказания (ЛКП) вычислены и квантованы, обычно как LSP
- Происходит поиск по адаптивной (тактовой) таблице кодов, и её содействие/взнос/ удаляется
- Поиск по фиксированной (стохастической) таблице кодов
Искажение шумом
Большинство (если не все) современные звуковые кодеки пытаются сформировать искажение в кодировании так, чтобы оно проявилось главным образом в тех частотных областях, где его не может уловить человеческое ухо. Например, ухо более терпимо к искажению в частях звукового диапазона, которые громче и наоборот. Именно поэтому вместо минимизации квадратичной ошибки, CELP минимизирует ошибки на взвешенной области. Взвешивающий результат по кривой W (z), как правило, вытекает из фильтра ЛКП при помощи расширения полосы пропускания:
- [math]\displaystyle{ W(z) = \frac{A(z/\gamma_1)}{A(z/\gamma_2)} }[/math]
где [math]\displaystyle{ \gamma_1 \gt \gamma_2 }[/math].
Ссылки
Для улучшения этой статьи желательно: |