Компрессия звука: принцип и настройка. Синтез и распознавание речи

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

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

Как мы уже говорили в предыдущей главе, звук представляет собой ни что иное, как колебания воздуха, частота которых лежит в диапазоне частот, воспринимаемых человеком. У разных людей точные границы диапазона слышимых частот могут изменяться, однако считается, что звуковые колебания лежат в диапазоне 16-20 000 Гц.

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

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

Можно также разделить микрофоны по назначению. Есть студийные микрофоны, которые можно держать в руке или закрепить на подставке, есть радиомикрофоны, которые можно закрепить на одежде, и так далее.

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

Рис. 2-1. Головные телефоны с микрофоном

Как же выбрать из всего многообразия микрофонов тот, что лучше всего подходит для систем распознавания речи?

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

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

В чем тут проблема?

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

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

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

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

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

На рис. 2-2 мы показали осциллограмму звукового сигнала, получившуюся при произнесении долгого звука а . Эта осциллограмма была получена с помощью программы GoldWave , о которой мы еще расскажем в этой главе книги, а также с помощью звукового адаптера Sound Blaster и микрофона, аналогичного показанному на рис. 2-1.

Рис. 2-2. Осциллограмма звукового сигнала

Программа GoldWave позволяет растягивать осциллограмму по оси времени, что позволяет разглядеть мельчайшие детали. На рис. 2-3 мы показали растянутый фрагмент упомянутой выше осциллограммы звука а .

Рис. 2-3. Фрагмент осциллограммы звукового сигнала

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

Если бы во входном сигнале присутствовала только одна частота (то есть если бы звук был «чистым»), форма сигнала, полученного от микрофона, была бы синусоидальной. Однако, как мы уже говорили, спектр звуков человеческой речи состоит из набора частот, в результате чего форма осциллограммы речевого сигнала далека от синусоидальной.

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

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

Оцифровка звукового (и любого аналогового) сигнала выполняется с помощью специального устройства, называемого аналогово-цифровой преобразователь АЦП (Analog to Digital Converter , ADC ). Это устройство находится на плате звукового адаптера и представляет собой обычную с вида микросхему.

Как работает аналогово-цифровой преобразователь?

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

Рис. 2-4. Измерения зависимости амплитуды сигнала от времени

На рис. 2-5 мы показали подключение аналого-цифрового преобразователя к микрофону. При этом на вход x 1 подается аналоговый сигнал, а с выходов u 1 -u n снимается цифровой сигнал.

Рис. 2-5. Аналого-цифровой преобразователь

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

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

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

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

К счастью, правильный выбор частоты преобразования (частоты дискретизации) сделать достаточно просто. Для этого достаточно обратиться к теореме Котельникова, известной специалистам в области цифровой обработки сигналов. Теорема гласит, что частота преобразования должна быть в два раза выше максимальной частоты спектра преобразуемого сигнала. Следовательно, для оцифровки без потери качества звукового сигнала, частота которого лежит в диапазоне 16-20 000 Гц, нужно выбрать частоту преобразования, не меньшую, чем 40 000 Гц.

Заметим, однако, что в профессиональной звуковой аппаратуре частота преобразования выбирается в несколько раз большей указанного значения. Это делается для достижения очень высокого качества оцифрованного звука. Для систем распознавания речи такое качество не актуально, поэтому мы не будем заострять на таком выборе Ваше внимание.

А какая частота преобразования нужна для оцифровки звука человеческой речи?

Так как звуки человеческой речи лежать в диапазоне частот 300-4000 Гц, то минимально необходимая частота преобразования составляет 8000 Гц. Однако многие компьютерные программы распознавания речи используют стандартную для обычных звуковых адаптеров частоту преобразования 44 000 Гц. С одной стороны, такая частота преобразования не приводит к чрезмерному увеличению потока цифровых данных, а другой - обеспечивает оцифровку речи с достаточным качеством.

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

Аналого-цифровой преобразователь представляет входной аналоговый сигнал в виде потока чисел ограниченной разрядности. Обычные звуковые адаптеры содержат 16-разрядные блоки АЦП, способные представлять амплитуду входного сигнала в виде 216 =65536 различных значений. Устройства АЦП в звуковой аппаратуре высокого класса могут быть 20-разрядными, обеспечивая большую точность представления амплитуды звукового сигнала.

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

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

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

Расскажем обо всем этом по порядку.

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

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

Частотные фильтры бывают разные:

· фильтры нижних частот;

· фильтры верхних частот;

· пропускающие полосовые фильтры;

· заграждающие полосовые фильтры.

Фильтры нижних частот (low -pass filter ) удаляют из спектра входного сигнала все частоты, значения которых находятся ниже некоторой пороговой частоты, зависящей от настройки фильтра.

Так как звуковые сигналы лежат в диапазоне 16-20 000 Гц, то все частоты меньше 16 Гц можно отрезать без ухудшения качества звука. Для распознавания речи важен частотный диапазон 300-4000 Гц, поэтому можно вырезать частоты ниже 300 Гц. При этом из входного сигнала будут вырезаны все помехи, частотный спектр которых лежит ниже 300 Гц, и они не будут мешать процессу распознавания речи.

Аналогично, фильтры верхних частот (high -pass filter ) вырезают из спектра входного сигнала все частоты выше некоторой пороговой частоты.

Человек не слышит звуки с частотой 20 000 Гц и выше, поэтому их можно вырезать из спектра без заметного ухудшения качества звука. Что же касается распознавания речи, то здесь можно вырезать все частоты выше 4000 Гц, что приведет к существенному снижению уровня высокочастотных помех.

Пропускающий полосовой фильтр (band -pass filter ) можно представить себе в виде комбинации фильтра нижних и верхних частот. Такой фильтр задерживает все частоты, ниже так называемой нижней частоты пропускания , а также выше верхней частоты пропускания .

Таким образом, для системы распознавания речи удобен пропускающий полосовой фильтр, который задерживает все частоты, кроме частот диапазона 300-4000 Гц.

Что же касается заграждающих полосовых фильтров (band -stop filter ), то они позволяют вырезать из спектра входного сигнала все частоты, лежащие в заданном диапазоне. Такой фильтр удобен, например, для подавления помех, занимающих некоторую сплошную часть спектра сигнала.

На рис. 2-6 мы показали подключение пропускающего полосового фильтра.

Рис. 2-6. Фильтрация звукового сигнала перед оцифровкой

Надо сказать, что обычные звуковые адаптеры, установленные в компьютере, имеют в своем составе полосовой фильтр, через который проходит аналоговый сигнал перед оцифровкой. Полоса пропускания такого фильтра обычно соответствует диапазону звуковых сигналов, а именно 16-20 000 Гц (в разных звуковых адаптерах значения верхней и нижней частоты могут изменяться в небольших пределах).

А как добиться более узкой полосы пропускания 300-4000 Гц, соответствующей наиболее информативной части спектра человеческой речи?

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

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

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

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

Рассказывая об аналогово-цифровом преобразователе, мы отметили такую его важную характеристику, как количество уровней квантования. Если в звуковом адаптере установлен 16-разрядный аналого-цифровой преобразователь, то после оцифровки уровни звукового сигнала могут быть представлены в виде 216 =65536 различных значений.

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

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

Это иллюстрируется графиком зависимости амплитуда выходного сигнала от амплитуды входного сигнала, показанным на рис. 2-7.

Рис. 2-7. Нелинейное усиление перед оцифровкой

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

Чем все это может помочь создателям систем распознавания речи?

Человек, как известно, достаточно хорошо распознает речь, произнесенную тихим шепотом или достаточно громким голосом. Можно сказать, что динамический диапазон уровней громкости успешно распознаваемой речи для человека достаточно широк.

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

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

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

© 2014 сайт

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

Динамический диапазон измеряется в ступенях экспозиции (). Каждая ступень соответствует удвоению количества света. Так, например, если некая камера имеет динамический диапазон в 8 EV, то это означает, что максимальное возможное значение полезного сигнала её матрицы относится к минимальному как 2 8:1, а значит, камера способна запечатлеть в пределах одного кадра объекты, отличающиеся по яркости не более чем в 256 раз. Точнее, запечатлеть-то она может объекты с любой яркостью, однако объекты, чья яркость будет превышать максимальное допустимое значение выйдут на снимке ослепительно белыми, а объекты, чья яркость окажется ниже минимального значения, – угольно чёрными. Детали и фактура будут различимы лишь на тех объектах, яркость которых укладывается в динамический диапазон камеры.

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

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

Факторы, ограничивающие динамический диапазон

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

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

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

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

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

На графике хорошо видны две критические переломные точки: в первой из них уровень полезного сигнала пересекает шумовой порог, а во второй – фотодиоды достигают насыщения. Значения экспозиции, лежащие между этими двумя точками, и составляют динамический диапазон. В данном абстрактном примере он равен, как несложно заметить, 5 EV, т.е. камера способна переварить пять удвоений экспозиции, что равнозначно 32-кратной (2 5 =32) разнице в яркости.

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

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

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

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

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

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

Разрядность

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

При конвертировании RAW-файла (не важно – средствами камеры или в RAW-конвертере), содержащего линейные данные, к нему автоматически применяется т.н. гамма-кривая, которая призвана нелинейно повысить яркость цифрового изображения, приводя её в соответствие с особенностями человеческого зрения.

При линейной конверсии изображение получается слишком тёмным.

После гамма-коррекции яркость приходит в норму.

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

Линейное распределение градаций яркости.
Равномерное распределение после применения гамма-кривой.

ISO и динамический диапазон

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

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

Важным следствием этого является снижение эффективного динамического диапазона пропорционально повышению ISO, ведь вместе с полезным сигналом усиливается и шум. Если при ISO 100 оцифровывается весь диапазон значений сигнала – от нуля и до точки насыщения, то при ISO 200 уже только половина ёмкости фотодиодов принимается за максимум. С каждым удвоением чувствительности ISO верхняя ступень динамического диапазона как бы отсекается, а оставшиеся ступени, подтягиваются на её место. Именно поэтому использование сверхвысоких значений ISO лишено практического смысла. С тем же успехом можно осветлить фотографию в RAW-конвертере и получить сопоставимый уровень шумов. Разница между повышением ISO и искусственным осветлением снимка заключается в том, что при повышении ISO усиление сигнала происходит до поступления его в АЦП, а значит, шум квантования не усиливается, в отличие от собственных шумов сенсора, в то время как в RAW-конвертере усилению подлежат в том числе и ошибки АЦП. Кроме того, уменьшение диапазона оцифровки означает более точную дискретизацию оставшихся значений входного сигнала.

Кстати, доступное на некоторых аппаратах понижение ISO ниже базового значения (например, до ISO 50), отнюдь не расширяет динамический диапазон, а просто ослабляет сигнал вдвое, что равноценно затемнению снимка в RAW-конвертере. Эту функцию можно даже рассматривать как вредную, поскольку использование субминимального значения ISO, провоцирует камеру на увеличение экспозиции, что при оставшемся неизменным пороге насыщения сенсора повышает риск получить клиппинг в светах.

Истинная величина динамического диапазона

Существует ряд программ вроде (DxO Analyzer, Imatest, RawDigger и пр.) позволяющих измерить динамический диапазон цифрового фотоаппарата в домашних условиях. В принципе, в этом нет большой необходимости, поскольку данные для большинства камер можно свободно найти в интернете, например, на сайте DxOMark.com .

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

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

Моё субъективное мнение таково, что детали в тенях начинают выглядеть более-менее прилично при отношении сигнал/шум не меньше восьми. На этом основании я определяю для себя полезный динамический диапазон, как технический динамический диапазон минус примерно три ступени.

К примеру, если зеркальная камера согласно результатам достоверных тестов обладает динамическим диапазоном в 13 EV, что очень неплохо по сегодняшним меркам, то её полезный динамический диапазон будет составлять около 10 EV, что, в общем-то, тоже весьма недурно. Разумеется, речь идёт о съёмке в RAW, с минимальным ISO и максимальной разрядностью. При съёмке в JPEG динамический диапазон сильно зависит от настроек контраста, но в среднем следует отбросить ещё две-три ступени.

Для сравнения: цветные обращаемые фотоплёнки обладают полезной фотографической широтой в 5-6 ступеней; чёрно-белые негативные плёнки дают 9-10 ступеней при стандартных процедурах проявления и печати, а при определённых манипуляциях – вплоть до 16-18 ступеней.

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

  • Динамический диапазон цифрового фотоаппарата в полной мере доступен только при съёмке в RAW.
  • Динамический диапазон уменьшается с ростом светочувствительности, а потому избегайте высоких значений ISO, если в них нет острой необходимости.
  • Использование более высокой разрядности для RAW-файлов не увеличивает истинный динамический диапазон, но улучшает тональное разделение в тенях за счёт большего количества уровней яркости.
  • Exposure to the right . Верхние зоны экспозиции всегда содержат максимум полезной информации при минимуме шумов и должны использоваться наиболее эффективно. При этом не стоит забывать и об опасности клиппинга – пиксели, достигшие насыщения, абсолютно бесполезны.

И главное: не стоит излишне переживать по поводу динамического диапазона вашей камеры. С динамическим диапазоном у неё всё в порядке. Ваше умение видеть свет и грамотно управлять экспозицией – намного важнее. Хороший фотограф не станет жаловаться на недостаток фотографической широты, а постарается дождаться более комфортного освещения, или изменит ракурс, или воспользуется вспышкой, словом, будет действовать в соответствии с обстоятельствами. Я вам скажу больше: некоторые сцены только выигрывают из-за того, что не укладываются в динамический диапазон камеры. Часто ненужное обилие деталей просто необходимо спрятать в полуабстрактный чёрный силуэт, делающий фотографию одновременно лаконичнее и богаче.

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

Спасибо за внимание!

Василий А.

Post scriptum

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

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

Люди, увлеченные домашним звуком, демонстрируют интересный парадокс. Они готовы перелопатить комнату прослушивания, соорудить колонки с экзотическими излучателями, но смущенно отступают перед музыкальной консервой, будто волк перед красным флажком. А собственно, почему нельзя за флажок заступить, а из консервы попытаться приготовить что-то более съедобное?

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

Сегодня даже в Hi-Res альбомах срезаны пики фонограммы и громкость загнана в клиппинг. Считается, что большинство слушает музыку на всяком барахле, а потому надо «поддать газку», сделать своего рода тонкомпенсацию.


Разумеется, делается это не специально, чтобы расстроить аудиофилов. О них вообще мало кто вспоминает. Вот разве что догадались сбагривать им мастер-файлы, с которых копируется основной тираж - компакт-диски, MP3 и прочее. Разумеется, мастер уже давно сплющен компрессором, никто сознательно не будет готовить специальные версии для HD Tracks. Разве что выполняется определенная процедура для винилового носителя, который по этой причине и звучит более гуманно. А для цифрового пути все заканчивается одинаково - большим толстым компрессором.

Итак, в настоящее время все 100% издаваемых фонограмм, за вычетом классической музыки, подвергаются компрессии при мастеринге. Кто-то выполняет эту процедуру более-менее умело, а кто-то совсем по-дурацки. В результате мы имеем пилигримов на форумах с линейкой плагина DR за пазухой, мучительные сравнения изданий, бегство в винил, где тоже нужно майнить первопресссы.

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

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

И вот уже к подобному софту все смелее тянут ручки обычные слушатели, у которых идет кровь из ушей после очередной новинки. Кто-то предпочитает iZotope, кто-то Adobe Audition, кто-то операции разделяет между несколькими программами. Смысл восстановления прежней динамики заключается в программном исправлении клиппированных пиков сигнала, которые, упираясь в 0 дБ, напоминают шестеренку.

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

Например, альбом Ланы Дель Рей «Lust For Life», стабильно погано матерящейся, тьфу, мастерящейся! В оригинале песни «When the World Was at War We Kept Dancing» было вот так.


А после череды деклипперов и декомпрессоров стало вот так. Коэффициент DR изменился с 5 на 9. Скачать и послушать образец до и после обработки можно .


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

Даже если искусственное вытягивание пиков из звукового фарша не вернет истинную динамику музыкального исполнения, ваш ЦАП все равно скажет спасибо. Ему ведь так тяжело было работать без ошибок на предельных уровнях, где велика вероятность возникновения так называемых межсемпловых пиков (ISP) . А теперь до 0 дБ будут допрыгивать лишь редкие сполохи сигнала. Кроме того, притихшая фонограмма при сжатии во FLAC или другой lossless-кодек теперь будет меньше по размеру. Больше «воздуха» в сигнале экономит пространство хард-драйва.

Попробуйте оживить свои самые ненавистные альбомы, убитые на «войне громкости». Для запаса динамики сначала нужно понизить уровень трека на -6 дБ, а затем запустить деклиппер. Те, кто не верит компьютерам, могут просто воткнуть между CD-плеером и усилителем студийный экспандер. Данное устройство по сути занимается тем же самым - как может восстанавливает и вытягивает пики сжатого по динамике аудиосигнала. Стоят подобные устройства из 80-90-х не сказать чтобы очень дорого, и в качестве эксперимента попробовать их будет весьма интересно.


Контроллер динамического диапазона DBX 3BX обрабатывает сигнал раздельно в трех полосах - НЧ, СЧ и ВЧ

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

Динамическая компрессия (Dynamic range compression, DRC) - сужение (или расширение в случае экспандера) динамического диапазона фонограммы. Динамический диапазон , это разница между самым тихим и самым громким звуком. Иногда самым тихим в фонограмме будет звук чуть громче уровня шума, а иногда чуть тише самого громкого. Аппаратные устройства и программы, осуществляющие динамическую компрессию, называют компрессорами, выделяя среди них четыре основные группы: собственно компрессоры, лимитеры, экспандеры и гейты.

Ламповый аналоговый компрессор DBX 566

Понижающая и повышающая компрессия

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

Понижающая компрессия

Повышающая компрессия

Экспандер и Гейт

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

Тип экспандера, который используется не для усиления громких, а для заглушения тихих звуков, не превышающих уровня порогового значения (например, фоновых шумов) называется Noise gate . В таком устройстве, как только уровень звука становится меньше порогового, прохождение сигнала прекращается. Обычно гейт используется для подавления шума в паузах. На некоторых моделях можно сделать так, чтобы звук при достижении порогового уровня не прекращался резко, а постепенно затухал. В этом случае скорость затухания устанавливается регулятором Decay (спад) .

Гейт, как и другие типы компрессоров, может быть частотно-зависимым (т.е. по-разному обрабатывать определенные частотные полосы) и может работать в режиме side-chain (см. ниже).

Принцип работы компрессора

Сигнал, попадающий в компрессор, разделяется на две копии. Одна копия направляется на усилитель, в котором степень усиления управляется внешним сигналом, вторая копия - формирует этот сигнал. Она попадает в устройство, называемое side-chain, где сигнал измеряется, и на основе этих данных создается огибающая, описывающая изменение его громкости.
Так устроено большинство современных компрессоров, это так называемый тип feed-forward. В более старых устройствах (тип feedback) уровень сигнала измеряется после усилителя.

Существуют различные аналоговые технологии управляемого усиления (variable-gain amplification), каждая со своими достоинствами и недостатками: ламповые, оптические с использованием фоторезистров и транзистрные. При работе с цифровым звуком (в звуковом редакторе или DAW) могут использоваться собственные математические алгоритмы или эмулироваться работа аналоговых технологий.

Основные параметры компрессоров

Threshold

Компрессор уменьшает уровень аудиосигнала, если его амплитуда первышает определенное пороговое значение (threshold). Оно обычно указывается в децибелах, при этом более низкий threshold (например, -60 dB) означает, что будет обработано больше звука, чем при более высоком пороге (например, −5 dB).

Ratio

Степень уменьшения уровня определяется параметром ratio (отношение): ratio 4:1 означает, что если входной уровень на 4 дБ превышает порог, уровень выходного сигнала будет выше порога на 1 дБ.
Например:
Threshold = −10 dB
Входной сигнал = −6 dB (на 4 dB выше порогового уровня)
Выходной сигнал = −9 dB (на 1 dB выше порогового уровня)

Важно иметь в виду, что подавление уровня сигнала продолжается и некоторое время после того, как он упадет ниже порогового уровня, и это время определяется значением параметра release .

Компрессия с максимальным значением ratio ∞:1 называется лимитированием (limiting). Это означает, что любой сигнал выше порогового уровня подавляется до порогового уровня (за исключением короткого периода после резкого увеличения входной громкости). Подробнее см. ниже «Лимитер».

Примеры различных значений Ratio

Attack и Release

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

Фазы Attack и Release

Эти параметры указывают время (обычно в миллисекундах), которое потребуется для изменения усиления на определенное количество децибел, обычно это 10 дБ. Например, в этом случае, если Attack установлено на 1 мс, для уменьшения усиления на 10 дБ потребуется 1 мс, а на 20 дБ - 2 мс.

Во многих компрессорах параметры Attack и Release могут настраиваться, но в некоторых они заданы изначально и не регулируются. Иногда они обозначаются как «automatic» или «program dependent», т.е. изменяются в зависимости от входного сигнала.

Knee

Еще один параметр компресоора: hard/soft Knee . Он определяет, будет ли начало применения компрессии резким (hard) или постепенным (soft). Soft knee уменьшает заметность перехода от необработанного сигнала к сигналу, подвергнутому компрессии, особенно при высоких значениях Ratio и резких увеличениях громкости.

Hard Knee и Soft Knee компрессия

Peak и RMS

Компрессор может реагировать на пиковые (кратковременные максимальные) значения или на усредненный уровень входного сигнала. Использование пиковых значений может приводить к резким колебаниям степени компрессии, и даже к искажениям. Поэтому компрессоры применяют функцию усреднения (обычно это RMS) входного сигнала при сравнении его с пороговым значением. Это дает более комфортное сжатие, приближенное к человеческому восприятию громкости.

RMS – параметр, отражающий среднюю громкость фонограммы. С математической точки зрения RMS (Root Mean Square) – это среднеквадратическое значение амплитуды определенного количества семплов:

Stereo linking

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

Makeup gain

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

Look-ahead

Функция look-ahead предназначена для решения проблем, свойственных как слишком большим, так и слишком маленьким значениям Attack и Release. Слишком большое время атаки не позволяем эффективно перехватывать транзиенты, а слишком маленькое может быть не комфортным для слушателя. При использовании функции look-ahead основной сигнал задерживается относительно управляющего, это позволяет начинать компрессию заранее, еще до того, как сигнал достигнет порогового значения.
Единственным недостатком этого метода является временная задержка сигнала, что в некоторых случаях нежелательно.

Использование динамической компрессии

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

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

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

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

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

В электронной танцевальной музыке (EDM) часто используется side-chaining (см. ниже) - например, басовая линия может управляться бочкой или чем-то подобным, чтобы предотвратить конфликт баса и ударных и создать динамическую пульсацию.

Сжатие широко используется в широковещательной передаче (радио-, теле-, интернет-вещание) для повышения воспринимаемой громкости при одновременном уменьшении динамического диапазона исходного аудио (обычно это CD). В большинстве стран имеются правовые ограничения на мгновенный максимальный объем, который может транслироваться. Обычно эти ограничения реализуются постоянными аппаратными компрессорами в эфирной цепи. Кроме того, увеличение воспринимаемой громкости улучшает "качество" звука с точки зрения большинства слушателей.

См. также Loudness war.

Последовательное увеличение громкости одной и той же песни, ремастированной для CD с 1983 по 2000 гг.

Side-chaining

Еще один часто встречающийся переключатель компрессора – «side chain». В этом режиме компрессирование звука происходит не в зависимости от его собственного уровня, а в зависимости от уровня сигнала, поступающего на разъем, который так обычно и называется - side chain.

Этому можно найти несколько применений. Например, вокалист шепелявит и все буквы «с» выделяются из общей картины. Вы пропускаете его голос через компрессор, а в разъем side chain подаете этот же звук, но пропущенный через эквалайзер. На эквалайзере вы убираете все частоты, кроме тех, что используются вокалистом при произнесении буквы «с». Обычно около 5 кГц, но может быть от 3 кГц до 8 кГц. Если затем поставить компрессор в режим side chain, то компрессирование голоса будет происходить в те моменты, когда произносится буква «с». Таким образом получился прибор, известный как «деэссер» (de-esser). Такой способ работы называется «частотно-зависимым» (frequency dependent).

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

Brick wall limiting

Компрессор и лимитер работаеют примерно одинаково, можно сказать, что лимитер, это компрессор с высоким Ratio (от 10:1) и, обычно, низким Attack time.

Существует понятие Brick wall limiting - лимитинг с очень высоким Ratio (от 20:1 и выше) и очень быстрой атакой. В идеале, он вообще не позволяет сигналу превысить пороговый уровень. Результат будет неприятным на слух, но зато это предотвратит повреждение звуковоспроизводящей техники или превышение пропускной способности канала. Многие производители интегрируют в свои устройства лимитеры именно с этой целью.

Clipper vs. Limiter, soft and hard clipping

Эта группа методов основана на том, что передаваемые сигналы подвергаются нелинейным преобразованиям амплитуды, причем в передающей и приёмной частях нелинейности взаимообратны. Например, если в передатчике используется нелинейная функция Öu , в приемнике – u 2 . Последовательное применение взаимообратных функций приведет к тому, что в целом преобразование остается линейным.

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

; (2.17)
. (2.18)

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

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

В то же время эти методы имеют и недостатки. Первый из них заключается в том, что логарифм малого числа отрицателен и в пределе:

то есть, чувствительность очень нелинейна.

Для уменьшения этих недостатков обе функции модифицируют смещением и аппроксимацией. Например, для телефонных каналов аппроксимированная функция имеет вид (тип А,):

причем А=87,6. Выигрыш от сжатия при этом составляет 24дБ.

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

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

Эффективное кодирование

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

Ввиду неравномерности вводят среднюю длину кода. Средняя длина - математическое ожидание длины кода:

причем, l ср стремится к H(x) сверху (то есть l ср > H(x)).

Выполнение условия (2.23) усиливается при увеличении N.

Существует две разновидности эффективных кодов: Шеннона-Фано и Хафмана. Рассмотрим их получение на примере. Предположим, вероятности символов в последовательности имеют значения, приведенные в таблице 2.1.

Таблица 2.1.

Вероятности символов

N
p i 0.1 0.2 0.1 0.3 0.05 0.15 0.03 0.02 0.05

Символы ранжируются, то есть представляются в ряд по убыванию вероятностей. После этого по методу Шеннона-Фано периодически повторяется следующая процедура: вся группа событий делится на две подгруппы с одинаковыми (или примерно одинаковыми) суммарными вероятностями. Процедура продолжается до тех пор, пока в очередной подгруппе не останется один элемент, после чего этот элемент устраняется, а с оставшимися указанные действия продолжаются. Это происходит до тех пор, пока в последних двух подгруппах не останется по одному элементу. Продолжим рассмотрение нашего примера, которое сведено в таблице 2.2.

Таблица 2.2.

Кодирование по методу Шеннона-Фано

N P i
4 0.3 I
0.2 I II
6 0.15 I I
0.1 II
1 0.1 I I
9 0.05 II II
5 0.05 II I
7 0.03 II II I
8 0.02 II

Как видно из таблицы 2.2, первый символ с вероятностью p 4 = 0.3 участвовал в двух процедурах разбиения на группы и оба раза попадал в группу с номером I . В соответствии с этим он кодируется двухразрядным кодом II. Второй элемент на первом этапе разбиения принадлежал группе I, на втором - группе II. Поэтому его код 10. Коды остальных символов в дополнительных комментариях не нуждаются.

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

По графу ориентируются следующим образом: составляют маршрут для выделенного символа; количество разрядов для него равно количеству ребер в маршруте, а значение каждого разряда равно направлению соответствующего ребра. Маршрут составляется из исходной точки (на чертеже она помечена буквой А). Например, маршрут в вершину 5 состоит из пяти ребер, из которых все, кроме последнего, имеют направление 0; получаем код 00001.

Вычислим для этого примера энтропию и среднюю длину слова.

H(x) = -(0.3 log 0.3 + 0.2 log 0.2 + 2 0.1 log 0.1+ 2 0.05 log 0.05+

0.03 log 0.03 + 0.02 log 0.02) = 2.23 бит

l ср = 0.3 2 + 0.2 2 + 0.15 3 + 0.1 3 + 0.1 4 + 0.05 5 +0.05 4+

0.03 6 + 0.02 6 = 2.9 .

Как видно, средняя длина слова близка к энтропии.

Коды Хафмана строятся по иному алгоритму. Процедура кодирования состоит из двух этапов. На первом этапе последовательно проводят однократные сжатия алфавита. Однократное сжатие - замена двух последних символов (с низшими вероятностями) одним, с суммарной вероятностью. Сжатия проводят до тех пор, пока не останется два символа. При этом заполняют таблицу кодирования, в которой проставляют результирующие вероятности, а также изображают маршруты, по которым новые символы переходят на следующем этапе.

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

В таблице 2.3 показано кодирование по алгоритму Хафмана. Как видно из таблицы, кодирование осуществлялось за 7 этапов. Слева указаны вероятности символов, справа - промежуточные коды. Стрелками показаны перемещения вновь образованных символов. На каждом этапе два последних символа отличаются только младшим разрядом, что соответствует методике кодирования. Вычислим среднюю длину слова:

l ср = 0.3 2 + 0.2 2 + 0.15 3 ++ 2 0.1 3 + +0.05 4 + 0.05 5 + 0.03 6 + 0.02 6 = 2.7

Это еще ближе к энтропии: код еще более эффективен. На рис. 2.12 приведено дерево кода Хафмана.

Таблица 2.3.

Кодирование по алгоритму Хафмана

N p i код I II III IV V VI VII
0.3 0.3 11 0.3 11 0.3 11 0.3 11 0.3 11 0.4 0 0.6 1
0.2 0.2 01 0.2 01 0.2 01 0.2 01 0.3 10 0.3 11 0.4 0
0.15 0.15 101 0.15 101 0.15 101 0.2 00 0.2 01 0.3 10
0.1 0.1 001 0.1 001 0.15 100 0.15 101 0.2 00
0.1 0.1 000 0.1 000 0.1 001 0.15 100
0.05 0.05 1000 0.1 1001 0.1 000
0.05 0.05 10011 0.05 1000
0.03 0.05 10010
0.02

Оба кода удовлетворяют требованию однозначности декодирования: как видно из таблиц, более короткие комбинации не являются началом более длинных кодов.

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

Эффект от внедрения таких кодов определяется в сравнении их с равномерным кодом:

(2.24)

где n - количество разрядов равномерного кода, который заменяется эффективным.

Модификации кодов Хафмана

Классический алгоритм Хафмана относится к двухпроходным, т.е. требует вначале набора статистики по символам и сообщениям, а потом описанных выше процедур. Это неудобно на практике, поскольку увеличивает время обработки сообщений и накопления словаря. Чаще используются однопроходные методы, в которых процедуры накопления и кодирования совмещаются. Такие методы называются ещё адаптивным сжатием по Хафману [ 46].

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

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

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

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

После прохождения последовательности (она называется также контрольной или тестовой) всем висячим вершинам присваиваются кодовые комбинации. Правило присвоения кодов аналогично вышеизложенному: количество разрядов кода равно количеству вершин, через которые проходит маршрут от исходной до данной висячей вершины, а значение конкретного разряда соответствует направлению от родителя к "ребёнку" (скажем, переход влево от родителя соответствует значению 1, вправо - 0).

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

Для повышения эффективности метода желательно увеличивать размер словаря; в этом случае коэффициент сжатия повышается. Практически размер словаря составляет 4 - 16 Кбайт памяти.


Проиллюстрируем приведённый алгоритм примером. На рис. 2.13 приведена исходная диаграмма (её называют также деревом Хафмана). Каждая вершина дерева показана прямоугольником, в котором вписаны через дробь две цифры: первая означает номер вершины, вторая - её вес. Как можно убедиться, соответствие весов вершин и их номеров выполняется.

Предположим теперь, что символ, соответствующий вершине 1, в тестовой последовательности встретился вторично. Вес вершины изменился, как показано на рис. 2.14, вследствие чего правило нумерации вершин нарушено. На следующем этапе меняем расположение висячих вершин, для чего меняем местами вершины 1 и 4 и перенумеровываем все вершины дерева. Полученный граф приведён на рис. 2.15. Далее процедура продолжается аналогично.

Следует помнить, что каждая висячая вершина в дереве Хафмана соответствует определённому символу или их группе. Родитель отличается от детей тем, что группа символов, ему соответствующая, на один символ короче, чем у его детей, а эти дети различаются последним символом. Например, родителю соответствуют символы "кар"; тогда у детей могут быть последовательности " кара " и " карп ".

Приведённый алгоритм не является академическим и активно используется в программах - архиваторах, в том числе и при сжатии графических данных (о них речь пойдёт ниже).

Алгоритмы Лемпеля – Зива

Это наиболее часто используемые в настоящее время алгоритмы сжатия. Они используются в большинстве программ - архиваторов (например, PKZIP. ARJ, LHA). Сущность алгоритмов состоит в том, что некоторая совокупность символов заменяется при архивировании её номером в специально формируемом словаре. Например, часто встречающаяся в деловой переписке фраза "На ваше письмо исходящий номер..." может занимать в словаре позицию 121; тогда вместо передачи или хранения упомянутой фразы (30 байт) можно хранить номер фразы (1,5 байта в двоично - десятичной форме или 1 байт - в двоичной).

Алгоритмы названы в честь авторов, впервые предложивших их в 1977 году. Из них первый - LZ77. Для архивирования создается так называемое скользящее по сообщению окно, состоящее из двух частей. Первая часть, большего формата, служит для формирования словаря и имеет размер порядка нескольких килобайт. Во вторую, меньшую часть (обычно размером до 100 байт) принимаются текущие символы просматриваемого текста. Алгоритм пытается найти в словаре совокупность символов, совпадающую с принятыми в окно просмотра. Если это удаётся, формируется код, состоящий из трёх частей: смещение в словаре относительно его начальной подстроки, длина этой подстроки, следующий за этой подстрокой символ. Например, выделенная подстрока состоит из символов " прилож " (всего 6 символов), следующий за ней символ - "е". Тогда, если подстрока имеет адрес (место в словаре) 45, то запись в словарь имеет вид "45, 6. е ". После этого содержимое окна сдвигается на позицию, и поиск продолжается. Таким образом формируется словарь.

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

Недостатки алгоритма появляются при увеличении размера словаря - увеличивается время на поиск. Кроме того, если в текущем окне появляется строка символов, отсутствующая в словаре, трёхэлементным кодом записывается каждый символ, т.е. получается не сжатие, а растяжение.

Лучшие характеристики имеет алгоритм LZSS, предложенный в 1978г. В нём есть отличия в поддержании скользящего окна и выходных кодах компрессора . Помимо окна, алгоритм формирует двоичное дерево, аналогичное дереву Хафмана для ускорения поиска совпадений: каждая подстрока, покидающая текущее окно, добавляется в дерево в качестве одного из детей. Такой алгоритм позволяет дополнительно увеличить размер текущего окна (желательно, чтобы его величина равнялась степени двойки: 128, 256 и т.д. байт). По - другому формируются и коды последовательностей: дополнительно вводится 1- битный префикс для различения незакодированных символов от пар "смещение, длина".

Ещё большая степень сжатия получается при использовании алгоритмов типа LZW. Описанные ранее алгоритмы имеют фиксированный размер окна, что приводит к невозможности занесения в словарь фраз длиннее размера окна. В алгоритмах LZW (и их предшественнике LZ78) просмотровое окно имеет неограниченный размер, а словарь накапливает фразы (а не совокупность символов, как ранее). Словарь имеет неограниченную длину, а кодер (декодер) работают в режиме ожидания фразы. Когда фраза, совпадающая со словарём, сформирована, выдаётся код совпадения (т.е. код этой фразы в словаре) и код следующего за ней символа. Если по мере накопления символов образуется новая фраза, она также заносится в словарь, как и более короткая. В результате образуется рекурсивная процедура, обеспечивающая быстрое кодирование и декодирование.

Дополнительную возможность компрессии обеспечивает сжатое кодирование повторяющихся символов. Если в последовательности некоторые символы следуют подряд (например, в тексте это могут быть символы "пробел", в числовой последовательности - подряд идущие нули и т.д.), то имеет смысл заменять их парой "символ; длина" или "признак, длина". В первом случае в коде указывается признак, что будет осуществляться кодирование последовательности (обычно 1 бит), потом код повторяющегося символа и длина последовательности. Во втором случае (предусмотренном для наиболее часто встречающихся повторяющихся символов) в префиксе указывается просто признак повторов.