Сжатие речевого сигнала на основе линейного предсказания
Введение
Одной из задач такого обширного раздела как «Цифровая обработка речевых
сигналов», входящего в состав науки, занимающейся цифровой обработкой
сигналов или просто обработкой сигналов является сжатие или кодирование
речевого сигнала (РС). Сжатие РС может быть как без потерь (архивация), так
и с потерями. Причем в последнем случае это кодирование можно подразделить
на три вида:
1. кодирование непосредственно реализации РС (Wave Form Codec);
2. измерение, кодирование и передача на приемную сторону параметров РС,
по которым уже на приемной стороне производится синтез этого
(искусственного) РС. Такие системы называют вокодерными (Source
Codec);
3. гибридные способы кодирования, т.е. сочетание первого и второго
способов кодирования. В задачу данной работы входит рассмотрение
первого способа кодирования.
Под кодированием подразумевается преобразование РС в некоторый «другой»
сигнал, который можно представить с меньшим числом разрядов, что в итоге
повысит скорость передачи данных. Одним из видов такого кодирования
является дифференциальная импульсно-кодовая модуляция (ДИКМ), о которой и
пойдет речь в дальнейшем.
Дифференциальная импульсно-кодовая модуляция
В обычной импульсно-кодовой модуляции каждый отсчет кодируется
независимо от других. Однако у многих источников сигнала при стробировании
с частотой Найквиста или быстрее проявляется значительная корреляция между
последовательными отсчетами [1] (в частности, источник РС является
квазистационарным источником и может относиться к рассматриваемым видам
источников). Другими словами, изменение амплитуды между последовательными
отсчетами в среднем относительно малы. Следовательно, схема кодирования,
которая учитывает избыточность отсчетов, будет требовать более низкой
битовой скорости.
Суть ДИКМ заключается в следующем. Предсказывается текущее значение
отсчета на основе предыдущих M отсчетов. Для конкретности предположим, что
[pic] означает текущий отсчет источника, и пусть [pic] обозначает
предсказанное значение (оценку) для [pic], определяемое как
[pic].
Таким образом, [pic] является взвешенной линейной комбинацией M
отсчетов, а [pic] являются коэффициентами предсказания. Величины [pic]
выбираются так, чтобы минимизировать некоторую функцию ошибки между [pic] и
[pic]. Проиллюстрируем вышесказанное на отрезке РС:
[pic]
[pic]
Прежде чем идти дальше, рассмотрим виды предсказания. «Линейное»
предсказание означает, что [pic] является линейной функцией предыдущих
отсчетов; при «нелинейном» предсказании – это нелинейная функция. Порядок
предсказания определяется количеством используемых предыдущих отсчетов. То
есть, предсказание нулевого и первого порядка является линейным, а второго
и более высокого порядка - нелинейным. При линейном предсказании
восстановить сигнал значительно проще, чем при нелинейном предсказании.
Будем рассматривать только линейное предсказание.
Виды линейных предсказаний
1. Предсказание нулевого порядка.
В этом случае для предсказания текущего отсчета используется только
предыдущий отсчет РС, т.е.
[pic] => [pic]
[pic]
2. Предсказание первого порядка (линейная экстраполяция).
В этом случае для предсказания текущего отсчета используется не только
предыдущий отсчет, но и разница между предпоследним и последним отсчетами,
которая суммируется к общему результату:
[pic] => [pic]
[pic]
Коэффициенты линейного предсказания (получение и расчет)
Формирование сигнала ошибки при использовании линейного предсказания
эквивалентно прохождению исходного сигнала через линейный цифровой фильтр.
Этот фильтр называется фильтром сигнала ошибки (ФСО) или обратным фильтром.
Обозначим передаточную функцию такого фильтра как А(z):
[pic]
[pic],
где E(z) и X(z) – прямое z - преобразование от сигнала ошибки и входного
сигнала соответственно.
На приемной стороне при прохождении сигнала ошибки через формирующий
фильтр (ФФ) мы в идеале получим исходный сигнал. Обозначим передаточную
функцию формирующего фильтра как K(z).
Т.е. передаточная функция K(z) связана с A(z) следующим соотношением:
[pic].
Рассмотрим последовательно соединенные кодер и декодер:
[pic]
При условии, что A(z)K(z) = 1, будет обеспечено абсолютно точное
восстановление сигнала, т.е. [pic]. Но это в идеале, на самом деле такого
быть не может по причинам, о которых скажем ниже.
Для примера, найдем передаточные функции ФСО и ФФ для разных типов
линейного предсказания.
а) предсказание нулевого порядка;
[pic]; [pic];
Получили, что такой фильтр неустойчив (граница устойчивости), так как
полюс находится на единичной окружности.
б) предсказание первого порядка;
[pic];[pic];
Получили, что и такой фильтр тоже неустойчив (граница устойчивости).
в) общая форма предсказания;
Было получено, что [pic]=> [pic].
[pic]; [pic];
На основании рассмотренных примеров можно сделать следующие выводы.
Фильтр сигнала ошибки всегда является КИХ фильтром, а формирующий
фильтр – БИХ фильтром. Коэффициенты передаточной функции ФФ, которые, как
уже было сказано выше, являются коэффициентами линейного предсказания (LPC:
Linear Prediction Coefficients), должны быть такими, чтобы:
1. формирующий фильтр был устойчивым;
2. ошибка [pic] была минимальна.
Для получения передаточной функции ФФ, наиболее точно воспроизводящего
частотную характеристику голосового тракта для данного звука, следует
определять коэффициенты передаточной функции [pic] исходя из условия
наименьшей ошибки линейного предсказания речевого сигнала (по условию
минимума среднего квадрата ошибки).
Запишем выражение для оценки дисперсии сигнала ошибки, которую надо
свести к минимуму:
[pic]; [pic];
Получили, что [pic]- функция нескольких переменных. Продифференцируем
ее и приравняем частные производные для нахождения экстремума:
[pic]; [pic],
где [pic]- символ Кронекера. Следовательно: [pic];
[pic]; => [pic];
[pic]
Получили нормальные уравнения или уравнения Юла-Волкера. Введем
обозначение: [pic], где [pic] - есть ни что иное, как корреляционная
функция. Перепишем полученное выражение с учетом принятого обозначения:
[pic] (*)
Для вычисления функции [pic] необходимо определить пределы суммирования по
n: [pic], где N – количество отсчетов в сегменте РС, а M - количество
отсчетов, необходимых для расчета коэффициентов предсказания (M + 1)-го
отсчета. Значит, первое предсказанное значение запишется так: [pic], где n
= M + 1.
Получили:
[pic];
Обозначим n – k = j => n = k + j, n – m = k + j – m n – m = i + j,
где i = k – m. Следовательно:
[pic]
Таким образом, получается выражение, имеющее структуру кратковременной
ненормированной АКФ, но зависящей не только от относительного сдвига
последовательности i, но и от положения этих последовательностей внутри
сегмента РС, которые определяются индексом k, входящим в пределы
суммирования. Такой метод определения функции [pic] называется
ковариационным.
Выражение (*) представляет собой систему линейных алгебраических
уравнений (СЛАУ) относительно [pic], у которых все коэффициенты различны.
При использовании ковариационного метода получаются несмещенные оценки
коэффициентов линейного предсказания, то есть E{ak}= ak.ист, где ak.ист –
истинные значения коэффициентов линейного предсказания.
Другой способ определения коэффициентов системы (*) состоит в том, что
вместо функции [pic] используется некоторая другая функция [pic], которая
определяется как
[pic],
где [pic] - ненормированная кратковременная АКФ. Поскольку определение
функции [pic] сводится к расчету АКФ, то такой метод называется
автокорреляционным. При использовании этого метода мы получаем смещенные
оценки коэффициентов линейного предсказания (однако, при M ?
sm
m |