Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


6.4. Общепризнанные методы

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

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

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

Методы, основанные на словарном подходе, предполагают, что некоторые фразы будут встречаться часто на протяжении всего файла. Это происходит в текстовом файле, в котором отдельные слова или их последовательности повторяются многократно. Звук, однако, является аналоговым сигналом и значения конкретных сгенерированных сэмплов в большой степени зависит от работа АЦП. Например, при 8-битном сэмплировании, волна в 8 мВ становится числовым сэмплом, равным 2, но близкая ей волна, скажем, в 7.6 мВ или 8.5 мВ может стать другим числом. По этой причине, речевые фрагменты, содержащие совпадающие фразы и звучащие для нас одинаково, могут слегка отличаться при их оцифровывании. Тогда они попадут в словарь в виде разных фраз, что не даст ожидаемого сжатия. Таким образом, словарные методы не очень подходят для сжатия звука.

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

Идея подавления пауз заключается в рассмотрении малых сэмплов, как если бы их не было (то есть, они равны нулю). Такое обнуление будет порождать серии нулей, поэтому метод подавления пауз, на самом деле, является вариантом RLE, приспособленным к сжатию звука. Этот метод основан на особенности звукового восприятия, которое состоит в терпимости уха человека к отбрасыванию еле слышных звуков. Аудиофайлы, содержащие длинные участки тихого звука будут лучше сжиматься методом подавления пауз, чем файлы, наполненные громкими звуками. Этот метод требует участие пользователя, который будет контролировать параметры, задающие порог громкости для сэмплов. При этом необходимы еще два параметра, они не обязательно контролируются пользователем. Один параметр служит для определения самых коротких последовательностей тихих сэмплов, обычно, это 2 или 3. А второй задает наименьшее число последовательных громких сэмплов, при появлении которых прекращается тишина или пауза. Например, после 15 тихих сэмплов может последовать 2 громких, а затем 13 тихих, что будет определено как одна большая пауза длины 30, а аналогичная последовательность из 15, 3 и 12 сэмплов, станет двумя паузами с коротким звуком между ними.

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

                          (6.1)

для сокращения каждого сэмпла. Эта формула нелинейно отображает 16-битные сэмплы в 15-битные числа интервала , причем маленькие (тихие) сэмплы меньше подвергаются искажению, чем большие (громкие). Табл. 6.7 иллюстрирует нелинейность этой функции. На ней показано 8 пар сэмплов, причем в каждой паре разность между сэмплами равна 100. Для первой пары разность между их образами равна 34, а разность между образами последней (громкой) пары равна 65. Преобразованные 15-битные числа могут быть приведены к исходным 16-битным сэмплам с помощью обратной формулы

.                 (6.2)

Сэмпл

Образ

Разность

Сэмпл

Образ

Разность

100 ®

35

 

30000 ®

12236

 

200 ®

69

34

30100 ®

12283

47

1000 ®

348

 

40000 ®

17256

 

1100 ®

383

35

40100 ®

17309

53

10000 ®

3656

 

50000 ®

22837

 

10100 ®

3694

38

50100 ®

22896

59

20000 ®

7719

 

60000 ®

29040

 

20100 ®

7762

43

60100 ®

29105

65

Табл. 6.7. Отображение 16-битных сэмплов в 15-битные числа.

Сокращение 16-битных сэмплов до 15-битных чисел не дает существенного сжатия. Лучшее сжатие получается, если в формулах (6.1) и (6.2) заменить число 32767 меньшим. Например, если взять число 127, то 16-битные сэмплы будут представлены 8-битными числами, то есть, коэффициент сжатия буде равен 0.5. Однако, декодирование будет менее аккуратным. Сэмпл 60100 будет отображен в число 113, а при декодировании по формуле (6.2) получится сэмпл 60172. А маленький 16-битный сэмпл 1000 будет отображен в 1.35, что после округления даст 1. При декодировании числа 1 получится 742, что сильно отличается от исходного сэмпла. Здесь коэффициент сжатия может быть параметром, непосредственно задаваемым пользователем. Это интересный пример метода сжатия, при котором коэффициент сжатия известен заранее.

На практике нет необходимости обращаться к уравнениям (6.1) и (6.2), поскольку результат отображения можно заранее приготовить в виде таблицы. Тогда и кодирование, и декодирование будут делаться быстро.

Уплотнение не ограничивается уравнениями (6.1) и (6.2). Более изощренные методы, такие как -правило и -правило, широко применяются на практике и входят во многие международные стандарты сжатия.

 



<< ПредыдущаяОглавлениеСледующая >>