Алгоритм шумоподавления состоит из четырех структурных частей:
• Первая часть алгоритма – «Разбиение». Входной поток данных разбивается на интервалы одинаковой длины с 50% наложением. Длина интервала рассчитывается исходя из частоты дискретизации сигнала и составляет 0,040 с. Так для сигнала с частотой дискретизации равной 44100 Гц размер интервала составляет 1764 отсчета. Каждый из полученных интервалов поточечно умножается на оконную функцию Хэмминга соответствующего размера. В таком виде интервал передается на следующие части алгоритма.
• Вторая часть алгоритма – «Модель шума». После «разбиения» сигнал поинтервально передается для оценки модели шума. Для полученного сигнала рассчитывается энергия. С результатом производятся манипуляции, включающие в себя сглаживание, расчет вариации, расчет максимума, расчет минимума и другие преобразования. В результате выполненных манипуляций получаются метрики, которые сохраняются для обработки следующего интервала (накопительные метрики), часть из которых представляет собой спектральную картину шумовой составляющей сигнала. Модель шума обновляется с каждым новым обработанным интервалом, таким образом, с течением времени алгоритм качественнее оценивает шумовую составляющую сигнала. Более того, при смене шумовой обстановки алгоритм перестраивает модель шума. Время реакции составляет порядка 1 секунды (это касается и запуска алгоритма, когда модель шума не сформирована).
• Третья часть – «Подавление». Полученные после разбиения интервалы сигнала очищаются от шума с использованием модели шума, полученной на предыдущем шаге. Для этого используется адаптивный подбор уровня подавления, который определяет соотношение сигнал/шум в данном интервале сигнала. Полученный уровень используется для спектрального вычитания шума из сигнала в данном интервале. Для уменьшения «музыкальных» шумов некоторые параметры алгоритма рассчитываются не только на основе текущего интервала, но и на основе предыдущего.
• Четвертая часть – «Объединение». После подавления шумов, интервалы сигнала объединяются в итоговый результат. Для этого интервалы, которые были получены 50% наложением, поточечно складываются с таким же наложением.