Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6-глоб.doc
Скачиваний:
8
Добавлен:
17.08.2019
Размер:
175.1 Кб
Скачать

Хранение звука

Наиболее очевидный способ хранения звуковых данных в файле - последовательная запись значений дискретизации. Эта простая схема известна как импульсно-кодовая модуляция (PULSE CODE MODULATION, PCM). Такое причудливое название было заимствовано из старой электротехнической терминологии. Кроме того, хорошие файловые форматы также хранят в файле значения частоты и разрядности дискретизации, за счет чего разные звуки могут воспроизводиться различным образом.

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

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

Кодирование пауз

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

Сжатие µ-LAW и A-LAW

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

Какая же связь между значением оцифрованного звука и генерируемым звуковой картой напряжением? Наиболее очевидный подход заключается в использовании линейной связи, при которой, например, увеличение значения цифрового представления звука с 25 до 50 будет приводить к увеличению напряжения вдвое. Однако этот подход не очень эффективен. Ловушка заключается в том, что вы хотите воспроизводить звук в широком динамическом диапазоне, в то время как ваше ухо не воспринимает звук линейно. Разница между 0 и 1 может быть слишком велика для слабых звуков, в то время как разница между 49 и 50 будет слишком мала, чтобы ухо ее различило.

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

Два общих уравнения задают точную связь. Соотношения µ-LAW и A-LAW позволяют восьмиразрядные измерения представлять в том же диапазоне, что и линейные 12-разрядные. Таким образом, можно получить более чем 30 процентов сжатия!

DPCM и ADPCM

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]