Главная » Программирование звука » Погрешность квантования

0

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

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

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

Насколько велика громкость шума? Говоря об ее амплитуде, инженеры исполь-

зуют термин уровень шума. (Чем ниже этот уровень, тем лучше.) При привлечении

8-битных  целых  чисел  для  записи  моментальных  значений  последние  изменяются в диапазоне от +127 до -128, а погрешность составляет максимум 0,5 (при условии,  что  округление  было  проведено  корректно).  Очевидно,  при  применении  16битных чисел ступени будут гораздо меньше, вследствие чего уровень шума ниже (шум будет тише).

Основной  вопрос  формулируется  так:  насколько  громким  окажется  этот  шум по  сравнению  с  громкостью  нужного  звука?  Это  отношение  называется  отношением сигнал/шум. (Чем выше это отношение, тем лучше.)

Важно  отметить  тот  факт,  что  это  отношение  очень  зависит  от  содержания самой  записи.  Очень  часто  при  обсуждении  отношения  сигнал/шум  предполагается,  что  используется  сигнал  максимально  допустимой  громкости.  Для  8-битного звука моментальные значения колеблются в диапазоне от +127 до -128, так что максимальное   (по   модулю)   значение,   которое   может   принимать   отсчет,   равно

128, и погрешность не превышает 0,5. Тогда отношение амплитуды сигнала к амплитуде   погрешности   составляет   256:1,   или   28.   Отношение   мощности   сигнала к мощности шума составит 216, или около 48 дБ, что сравнимо с качественной передачей  AM радио.  (На  практике  замечено,  что  один  бит  добавляет  6  дБ  к этому отношению.)

Если  ваш  сигнал  не  обладает  предельной  громкостью,  то  отношение  сигнал/

шум будет меньше (хуже). В самом неудачном случае очень тихий звук вызовет

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

0, +1 и -1.

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

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

Сглаживание сигнала

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

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

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

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

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

Ограничение сигнала

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

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

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

Выборки с плавающей точкой

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

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

с  32  и  более  разрядами,  что  вдвое  увеличивает  требования  к  объему  памяти  и  дисковой  подсистеме  по  сравнению  с  широко  распространенным  форматом записи значений, использующим 16-битные целые числа;

?  форматы  чисел  с  плавающей  точкой  не  очень  хорошо  стандартизованы,  что

создает проблемы, если вы хотите использовать их на различных платформах;

?  арифметика  с  плавающей  точкой  обычно  работает  медленнее,  чем  целочис-

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

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

числа,  это  означает,  что  выборки  придется  преобразовывать  в  целочислен-

ный вид перед тем как использовать для воспроизведения.

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

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

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии