Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
368
Добавлен:
10.04.2015
Размер:
3.2 Mб
Скачать

Методы сжатия речевых сигналов

Основные объемы передаваемой в системах связи информации приходится на речь – это и проводная телефония, и системы сотовой и спутниковой связи, и т.д. Поэтому эффективному кодированию, или сжатию речи, в системах связи уделяется исключительное внимание.

Рассмотрим основные свойства речевого сигнала как объекта экономного кодирования и передачи по каналам связи и попытаемся пояснить, на каких свойствах сигнала основывается возможность его сжатия.

Речь представляет собой колебания сложной формы, зависящей от произносимых слов, тембра голоса, интонации, пола и возраста говорящего. Спектр речи весьма широк (примерно от 50 до 10000 Гц), но для передачи речи в аналоговой телефонии отказались от составляющих, лежащих за пределами полосы 0,3 - 3,4 кГц, что несколько ухудшило восприятие ряда звуков (например шипящих, существенная часть энергии которых сосредоточена в верхней части речевого спектра), но мало затронуло разборчивость. Ограничение частоты снизу (до 300 Гц) также немного ухудшает восприятие из-за потерь низкочастотных гармоник основного тона.

Следует отметить, что уровень низкочастотных (то есть медленных по времени) составляющих в спектре речевого сигнала значительно выше уровня высокочастотных (быстрых) составляющих. Эта существенная неравномерность спектра является одним из факторов сжимаемости таких сигналов.

Второй особенностью речевых сигналов является неравномерность распределения вероятностей (плотности вероятности) мгновенных значений сигнала. Малые уровни сигнала значительно более вероятны, чем большие. Особенно это заметно на фрагментах большой длительности с невысокой активностью речи. Этот фактор также обеспечивает возможность экономного кодирования – более вероятные значения могут кодироваться короткими кодами, менее вероятные – длинными.

Еще одна особенность речевых сигналов – их существенная нестационарность во времени: свойства и параметры сигнала на различных участках значительно различаются. При этом размер интервала стационарности составляет порядка нескольких десятков миллисекунд. Это свойство сигнала значительно затрудняет его экономное кодирование и заставляет делать системы сжатия адаптивными, то есть подстраивающимися под значения параметров сигнала на каждом из участков.

Простейшими кодерами/декодерами речи являются кодеры/декодеры формы сигнала. Они могут использоваться для кодирования любых, в том числе и неречевых, сигналов.

Простейшим способом кодирования формы сигнала является импульсно-кодовая модуляция – ИКМ, при использовании которой производятся просто дискретизация и равномерное квантование входного сигнала, а также преобразование полученного результата в равномерный двоичный код.

Для речевых сигналов со стандартной для передачи речи полосой 0,3 – 3,5 кГц обычно используют частоту дискретизации Fдискр2Fmax= 8 кГц. Экспериментально показано, что при равномерном квантовании для получения практически идеального качества речи нужно квантовать сигнал не менее чем на  2000 уровней

Используя неравномерное квантование (более точное для малых уровней сигнала и более грубое для больших его уровней), можно достичь того же качества восстановления речевого сигнала, но при гораздо меньшем числе уровней квантования – порядка 128.

С учетом статистических свойств речевого сигнала, а также нелинейных свойств слуха, гораздо лучше различающего слабые звуки, оптимальной является логарифмическая шкала квантования, которая и была принята в качестве стандарта в середине 60-х годов и сегодня повсеместно используется.

Следующим приемом, позволяющим эффективность кодирования, может быть попытка предсказать значение текущего отсчета сигнала по нескольким предыдущим его значениям, и далее, кодирование уже не самого отсчета, а ошибки его предсказания – разницы между истинным значением текущего отсчета и его предсказанным значением. Если точность предсказания достаточно высока, то ошибка предсказания очередного отсчета будет значительно меньше величины самого отсчета и для ее кодирования понадобится гораздо меньшее число бит. Таким образом, чем более предсказуемым будет поведение кодируемого сигнала, тем более эффективным будет его сжатие.

Описанная идея лежит в основе так называемой дифференциальной импульсно-кодовой модуляции - ДИКМ (DPCM) – способа кодирования, при котором кодируются не сами значения сигнала, а их отличия от некоторым образом предсказанных значений, например предсказание текущего отсчета на основе линейной комбинации двух предшествующих и т.д.:

x*i = a k xik ,

Эффективность ДИКМ может быть повышена, если предсказание и квантование сигнала будет выполняться не на основе некоторых усредненных его характеристик, а с учетом их текущего значения и изменения во времени, то есть адаптивно. Так, если скорость изменения сигнала стала большей, можно увеличить шаг квантования, и, наоборот, если сигнал стал изменяться медленнее, величину шага квантования можно уменьшить. При этом ошибка предсказания уменьшится и, следовательно, будет кодироваться меньшим числом бит на отсчет. Такой способ кодирования называется адаптивной ДИКМ, или АДИКМ (ADPCM). Сегодня он стандартизован и широко используется при сжатии речи в междугородных цифровых системах связи, в системе микросотовой связи DECT, в цифровых переносных телефонах и т.д.

Лекция 11. Понятие о корректирующих кодах

Классификация корректирующих кодов

Эффективным средством повышения достоверности передачи сообщений в реальных каналах является помехоустойчивое кодирование. Оно основано на применении специальных кодов, которые корректируют ошибки, вызванные действием помех.

Код называется корректирующим, если он позволяет обнаруживать и исправлять ошибки при приеме сообщений.

Код, с помощью которого можно лишь обнаруживать ошибки, называется обнаруживающим. Исправление ошибки при таком кодировании производится путем повторения искаженных сообщений, при этом запрос о повторении передается по каналу обратной связи.

Для того чтобы код обладал корректирующими способностями, в кодовой последовательности должны содержаться дополнительные (избыточные) символы, предназначенные для корректирования ошибок. При этом, чем больше избыточность кода, тем выше его корректирующая способность.

Известно большое количество корректирующих кодов, отличающихся как принципами построения, так и основными характеристиками. Рассмотрим их простейшую классификацию.

Все известные коды делятся на две большие группы: блочные и сверточные (непрерывные). Блочные коды характеризуются тем, что последовательность передаваемых символов разделена на блоки. Операции кодирования и декодирования в каждом блоке производятся отдельно.

Отличительной особенностью непрерывных кодов является то, что первичная последовательность символов, несущих информацию, непрерывно преобразуется по определенному закону в другую последовательность, содержащую избыточное число символов. Здесь процессы кодирования и декодирования не требуют деления групп символов на блоки.

С технической точки зрения главное различие между блочными и сверточными кодами состоит в отсутствии или наличии памяти кодера.

Кодер для блочных кодов делит непрерывную информационную последовательность X на блоки-сообщения длиной k символов.

Кодер канала преобразует блоки-сообщения X в более длинные двоичные последовательности Y, состоящие из n символов и называемые кодовыми словами. Кодер добавляет к каждому блоку-сообщению (n-k) избыточных символов, функция которых состоит в обнаружении (или исправлении) ошибок, возникающих в процессе передачи.

Термин "отсутствие памяти кодера" означает, что каждый блок изn символов зависит только от соответствующего информационного блока изkсимволов и не зависит от других блоков.

Кодер для свёрточных кодов в каждый момент времени из небольшого текущего блока информационных символов размером в b символов (блока-сообщения) образует блок, состоящий из v кодовых символов (кодовый блок), причем v > b. При этом кодовый блок зависит не только от символьного блока- сообщения, имеющегося на входе кодера в настоящий момент, но и от предшествующих m блоков-сообщений. В этом и состоит наличие памяти в кодере.

Блочное кодирование удобно использовать в тех случаях, когда исходные данные по своей природе уже сгруппированы в какие-либо блоки или массивы.

При передаче по радиоканалам чаще используется сверточное кодирование, которое лучше приспособлено к побитовой передаче данных. Кроме этого, при одинаковой избыточности сверточные коды, как правило, обладают лучшей исправляющей способностью.

Разновидностями как блочных, так и непрерывных кодов являются разделимые и неразделимые коды. В разделимых кодах всегда можно выделить информационные символы, содержащие передаваемую информацию, и контрольные (проверочные) символы, которые являются избыточными и служат исключительно для коррекции ошибок. В неразделимых кодах такое разделение не производится.

Наиболее многочисленный класс разделимых кодов составляют линейные коды, в которых контрольные символы образуются как линейные комбинации информационных символов.

Двоичный код является линейным, если сумма по модулю 2 ( mod2 ) двух кодовых слов также является кодовым словом этого кода.

Принципы помехоустойчивого кодирования

В теории помехоустойчивого кодирования принципиально использование избыточности для корректирования возникающих ошибок.

Рассмотрим вначале блочные коды, причем ограничимся равномерными кодами, в которых число возможных комбинаций равно , гдеn – значность кода.

В обычном некорректирующем коде без избыточности число комбинаций M выбирается равным числу сообщений алфавита источника и все комбинации используются для передачи информации.

Корректирующие коды строятся так, чтобы число комбинаций M превышало число комбинаций источника . При этом лишькомбинаций из общего числа используются для передачи информации. Эти комбинации называютсяразрешенными, а остальные -запрещенными. На приемном конце в декодирующем устройстве известно, какие комбинации являются разрешенными, и какие – запрещенными. Поэтому если передаваемая разрешенная комбинация в результате ошибки преобразуется в запрещенную, то такая ошибка будет обнаружена, а при определенных условиях – исправлена. Естественно, что ошибки, приводящие к образованию другой разрешенной комбинации, не обнаруживаются.

Различие между комбинациями равномерного кода принято характеризовать расстоянием, равным числу символов, которыми отличаются комбинации друг от друга. Расстояние между комбинациямииопределяется количеством единиц в сумме этих комбинаций по модулю два.

Например:

110011 Ai

010110 Aj

__________________

100101

Для любого кода, естественно, . Минимальное различие между разрешенными комбинациями в данном коде называетсякодовым расстоянием .

Расстояние между комбинациями иусловно изображено на рисунке ниже, где показаны промежуточные комбинации; каждая из последующих отличается от предыдущей одним символом.

Для того чтобы в результате ошибки комбинация (где “р” означает “разрешенная”) преобразовалась в другую разрешенную комбинацию, должно исказитьсяd символов. При искажении меньшего числа символов комбинация перейдет в запрещенную комбинацию и ошибка будет обнаружена. Отсюда следует, что ошибка всегда обнаруживается, если ее кратность, т.е. число искаженных символов в комбинации

Минимальное кодовое расстояние, при котором обнаруживаются любые одиночные ошибки, (см. (1)).

Процедура исправления ошибок в процессе декодирования сводится к определению переданной комбинации по известной принятой. Расстояние между переданной разрешенной комбинацией и принятой запрещенной комбинацией равно кратности ошибокg. Если ошибки в символах комбинации происходят независимо друг от друга, то вероятность искажения некоторых конкретных g символов в n-значной комбинации равна

где - вероятность искажения одного символа. Так как обычно, то вероятность многократных ошибок уменьшается с увеличением их кратности, при этом более вероятны меньшие расстояния. В этих условиях исправление ошибок может производиться по следующему правилу. Если принята запрещенная комбинация, то считается переданной ближайшая разрешенная комбинация. Это правило декодирования является оптимальным, так как оно обеспечивает исправление максимального числа ошибок.

Корректирующая способность кода возрастает с увеличением d. При фиксированном числе разрешенных комбинаций увеличениеd возможно лишь за счет роста запрещенных комбинаций:

что, в свою очередь, требует избыточного числа символов , гдеk - количество символов в комбинации кода без избыточности. Количественно избыточность кода определяется как

При независимых ошибках вероятность определенного (конкретного) сочетания g ошибочных символов выражается соотношением (2). Очевидно, полная вероятность ошибки кратности g, учитывающая все сочетания ошибочных символов, равна

Вероятность отсутствия ошибок в кодовой комбинации, т.е. вероятность правильного приема, равна:

а вероятность правильного корректирования ошибок:

где суммирование производится по всем значениям кратности ошибок g, которые обнаруживаются и исправляются при применении рассматриваемого кода.

Таким образом, вероятность некорректируемых ошибок равна:

Анализ этой формулы показывает, что при малой величине и сравнительно небольших значенияхn наиболее вероятны ошибки малой кратности, которые и необходимо корректировать в первую очередь.

Вероятность ошибки , избыточностьи число символовn являются основными характеристиками корректирующего кода, определяющими, насколько удается повысить помехоустойчивость передачи дискретной информации и какой ценой это достигается.

Общая задача, которая ставится при создании кода, заключается в достижении наименьших значений вероятности ошибок и избыточности. Целесообразность применения того или иного кода зависит также от сложности кодирующих и декодирующих устройств.

Итак, для корректирования ошибок необходимо сравнивать принятую комбинацию со всеми комбинациями данного кода. В результате M сопоставлений делается вывод о переданной комбинации. Такой способ декодирования логически является наиболее простым, однако он требует сложных устройств, в которых должны запоминаться все M комбинаций кода. Поэтому на практике чаще всего используются коды, которые позволяют с помощью ограниченного числа преобразований принятых кодовых символов извлечь из них всю информацию о корректируемых ошибках.

Систематические коды

Систематические коды относятся к блочным разделимым кодам, т.е. к кодам, где операция кодирования осуществляется независимо в пределах каждого блока информационных и контрольных символов.

Систематический код имеет следующий формат

то есть содержит неизменную информационную часть длиной k символов и избыточную (проверочную) длиной n – k символов.

Если обозначить информационные символы буквами , а контрольные – буквами, то любую кодовую комбинацию, содержащуюk информационных и r контрольных символов, можно представить последовательностью:

где с и e в двоичном коде принимают значения 0 или 1.

Процесс кодирования на передающем конце сводится к образованию контрольных символов, которые выражаются в виде линейной функции информационных символов. Символы представляют собойсуммы по модулю два информационных символов в различных сочетаниях.

Код с проверкой на четность

Простейшим систематическим кодом, применяемым только для обнаружения ошибок, является код с проверкой на четность. Каждая комбинация этого кода содержит, помимо информационных символов, один контрольный символ, выбираемый равным 0 или 1 так, чтобы сумма единиц в комбинации всегда была четной.

Пример. Запишем кодовое слово (4,3)-кода в виде вектора-столбца:

= ( m0, m1, m2, m0+m1+m2 ), (9)

где mi - символы информационной последовательности, принимающие значения 0 и 1, а суммирование производится по модулю 2 ( mod2 ).

Если информационная последовательность источника имеет вид

m = ( 1 0 1 ), (10)

то соответствующая ей кодовая последовательность

U = ( U0, U1, U2, U3 ) = ( 1 0 1 0 ), (11)

где проверочный символ U3 формируется путем суммирования по mod2 символов информационной последовательности m :

U3 = m0 + m1 + m2 . (12)

Нетрудно заметить, что если число единиц в последовательности m четно, то результатом суммирования будет 0, если нечетно - 1, то есть проверочный символ дополняет кодовую последовательность таким образом, чтобы количество единиц в ней было четным.

Если при передаче рассматриваемого (4,3)-кода произошла одна ошибка, то общее число единиц в принятой последовательности r будет нечетным.

Таким образом, признаком отсутствия ошибки в принятой последовательности может служить четность числа единиц. Поэтому такие коды и называются кодами с проверкой на четность.

Если в принятой последовательности r произошло две ошибки, то общее число единиц в ней снова станет четным и ошибка обнаружена не будет. Однако вероятность двойной ошибки значительно меньше вероятности одиночной, поэтому наиболее вероятные одиночные ошибки таким кодом обнаруживаться все же будут.

Несмотря на свою не очень высокую эффективность, коды с проверкой на четность широко используются в системах передачи и хранения информации. Они ценятся за невысокую избыточность: достаточно добавить к передаваемой последовательности всего один избыточный символ − и можно узнать, есть ли в принятой последовательности ошибка. Правда, определить место этой ошибки и, следовательно, исправить ее, нельзя. Можно лишь повторить передачу слова, в котором была допущена ошибка, и тем самым ее исправить.

Инверсный код

Инверсный код обладает значительно лучшими корректирующими способностями по сравнению с кодом с проверкой на четность.

С принципом функционирования данного кода удобно ознакомиться на примере двух комбинаций

11000,11000 и 01101,10010.

В каждой комбинации символы до запятой являются информационными, а последующие – контрольными. Если количество единиц в информационных символах четное, т.е. сумма этих символов по модулю два равна нулю, то контрольные символы представляют собой простое повторение информационных. В противном случае, когда число единиц нечетное и сумма символов равна 1, контрольные символы получаются из информационных путем инвертирования, т.е. путем замены всех 0 на 1 и наоборот.

При декодировании происходит сравнение принятых информационных и контрольных символов. Если сумма единиц в принятых информационных символах четная, то соответствующие друг другу информационные и контрольные символы суммируются по модулю два. В противном случае производится такое же суммирование, но с инвертированными контрольными символами. Другими словами, производится r проверок на четность. Ошибка обнаруживается, если хотя бы одна проверка на четность дает 1.

Анализ показывает, что при наименьшая кратность необнаруживаемой ошибки. Причем не обнаруживаются только те ошибки четвертой кратности, которые искажают одинаковые номера информационных и контрольных символов. Например, если передана комбинация

10100, 10100

а принята

10111,10111,

то такая четырехкратная ошибка обнаружена не будет.

Инверсный код обладает высокой обнаруживающей способностью, однако она достигается ценой сравнительно большой избыточности, которая составляет 0,5.