Удаление постоянной составляющей

При обработке звука сталкиваются с наличием постоянной составляющей в аудио-сигнале. Постоянная составляющая или смещение нуля (DC Offset / DC Bias) — отклонение среднего значения сигнала от нуля.

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

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

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

При удалении постоянной составляющей желательно «не навредить» и не внести фазовых или других искажений. Существует несколько подходов к устранению постоянной составляющей.

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

Вычитание скользящего среднего. Для обработки во время записи можно применить вычисление среднего «на лету» с помощью алгоритма скользящего среднего. Вычисленное среднее необходимо отнимать из задержанного сигнала. Время задержки сигнала должно быть равно половине длины линии задержки в алгоритме скользящего среднего.

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

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


Разностное уравнение, описывающее такой фильтр:

y(n)=α•y(n–1)+x(n)–x(n–1), 0<<α<1

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

Рассмотрим удаление постоянной составляющей с помощью скользящего среднего и второй способ — ВЧ фильтром. Для примера зададим частоту дискретизации (Fs) 44100Гц и частоту среза (Fc) 100Гц.

На графике справа, красным цветом обозначено влияние скользящего среднего на АЧХ сигнала. Длина линии задержки скользящего среднего вычисляется исходя из частоты дискретизации и частоты среза (D=441). Видно, что начиная с заданной частоты среза происходят затухающие амплитудные искажения. Если применить скользящее среднее второй раз, то эти искажения значительно уменьшатся (синяя линия на графике). При этом возрастет задержка сигнала. Каждое применение скользящего среднего вносит задержку на половину длины линии задержки. Достоинство этого метода — полное отсутствие фазовых искажений.

Вычисление постоянной времени для ВЧ фильтра осуществляется также, как и для экспоненциального сглаживающего фильтра и зависит от частоты дискретизации и частоты среза. Для нашего примера  α=0.98585. На графике результат применения ВЧ фильтра показан зеленой линией.

Рекомендованная литература.
Скользящее среднее
Экспоненциальный сглаживающий преобразователь

3 comments:

  1. Не надо путать центрирование и удаление постоянной составляющей.

    ReplyDelete
  2. ничего не понял, но очень интересно

    ReplyDelete