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

При обработке звука сталкиваются с наличием постоянной составляющей в аудио-сигнале. Постоянная составляющая или смещение нуля (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. На графике результат применения ВЧ фильтра показан зеленой линией.

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

Скользящее среднее

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

Для реализации скользящего среднего необходимо организовать линию задержки сигнала. Длина линии задержки определяет время сглаживания.

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

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

y(n)= x(n)/Dx(nD)/D+y(n−1), где D — длина линии задержки

Рассмотрим пример реализации скользящего среднего в системе MathCAD (код слева). Функция MA(x,D) обрабатывает входной массив (x) и выдает результат в виде массива (y). Кроме основного цикла обработки, внимание уделено правильной инициализации начальных элементов массива (y).

Длина линии задержки (D) выбирается исходя из частоты дискретизации (Fs) и желаемой частоты среза (Fc). D=Fs/Fc

Для нашего примера частота дискретизации 44100Гц, частота среза 4410Гц и длина линии задержки 10.

Амплитудно-частотная характеристика (АЧХ) фильтра показана на графике красной линией. Мы видим, что на частоте среза (Fc — красная пунктирная линия) происходит сильное ослабление сигнала. И весь последующий сигнал ослаблен на 12дБ.

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

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

Рекомендованная литература:
Сигналы и преобразователи

Мощность цифрового сигнала

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

Сигнал после оцифровки x(t) является аналогом напряжения, а мощность цифрового сигнала определяется, как квадрат значения сигнала — x(t)2.

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

Рассмотрим эти величины на примере.

Выберем частоту дискретизации сигнала 44100 Гц (Fs), период дискретизации (Ts) рассчитывается, как обратная величина к частоте. Будем генерировать сигнал с частотой 441Гц (очень близко к ноте ля первой октавы 440Гц). 

Сгенерируем 4 полных периода синусоидального сигнала на заданной частоте. Мы специально подобрали соотношение частоты дискретизации и сигнала (добавив 1Гц), чтобы количество отсчетов (N) было целым числом. Определим дискретное время (t) в пределах от 0 до N−1. Рассчитаем значения функции синус для всех значений заданного времени.


Полученный сигнал x(t) на графике отображается красной линией. Мы видим все 4 периода. Амплитуда сигнала в диапазоне от −1 до 1.


Рассчитаем значение мощности сигнала (P), как среднее всех мгновенных мощностей сигнала и среднеквадратичное значение (RMS), как корень из мощности (P).



Видим что значение мощности равно 0.5, а среднеквадратичное значение 0.707.. или точнее корень из двух на два.

Рассмотрим, как изменится мощность и среднеквадратичное значение, если мы умножим сигнал на это значение — на графике сигнал y(t) отображен синим цветом. Видим, что размах амплитуды ограничен этим значением, а мощность сигнала (Py) уменьшилась в два раза.


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

В поисках основного тона

Музыкальный сигнал одного инструмента содержит основную частоту и множество ее гармоник. Собственная / основная частота (fundamental frequency) — самая низкая частотная компонента сигнала. Считается, что на слух воспринимается до 10 гармоник, более высокие компоненты уже не слышны. Например, если основной тон имеет высоту 110Гц (ля большой октавы), то в сигнале, кроме основного тона, будут присутствовать его гармоники — 220Гц, 330Гц, 440Гц, и т.д. В этом легко убедится с помощью пианино. Достаточно плавно нажать клавишу ноты так, чтобы демпфер отошел от струны, а молоточек по струне не ударил. После этого сильно ударить и отпустить ноту октавой ниже. В результате, нижняя нота замолкнет, а верхняя из-за резонанса с гармоникой начнет играть.

Основной тон или высота звука (pitch) — слуховое восприятие частоты. Восприятие основного тона изменяется в зависимости от гармонических составляющих, присутствующих в сигнале. Возможно восприятие отсутствующего тона за счет наличия гармонических составляющих, обычно сопутствующих этому тону. Если акустическая система не в состоянии воспроизводить низкие частоты (например, при воспроизведении ля большой октавы, тон 110Гц не будет звучать), то все равно возможно восприятие этой частоты. Компания Waves Audio, производитель звуковых эффектов, запатентовала алгоритм (патент № 5,930,373), позволяющий создавать иллюзию наличия низких частот, синтезируя высшие гармоники по низкочастотному сигналу, и выпустила ряд устройств (MaxxBass), работающий по этому принципу.

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

Компания Antares Audio Technologies разработала систему Auto-Tune, которая позволяет анализировать голосовую партию и корректировать сигнал во время исполнения или записи. Эта система практически стала стандартом при записи вокала. Позже, эта же компания разработала технологию ATG-6, которая позволяет настраивать гитару прямо во время исполнения.

В программе Melodyne (компании Celemony Software GmbH) решается еще одна сложная задача — анализируется музыкальный сигнал, который может содержать несколько одновременно звучащих нот (аккорд) и соответственно содержать несколько основных тонов и их гармоник.

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

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

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

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

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