
Меня зовут Захар Кондауров. Сегодня я хочу поделиться опытом разработки легковесной real-time модели шумоподавления и дереверберации, над которой я работал в рамках проектов Инженерно-математической школы НИУ ВШЭ и VK под руководством Ивана Бескровного, руководителя команды звуковых технологий VK Видео.
Большинство исследований в speech enhancement часто ограничиваются только шумоподавлением, хотя современные архитектуры потенциально позволяют решать более продвинутые задачи, например, задачу совместного шумоподавления и дереверберации. Это обусловлено тем, что бенчмарков, ориентированных на шумоподавление значительно больше, чем на другие искажения аудиосигнала, как и моделей для сравнения. Кроме того, далеко не все решения обучены на full-band аудио с частотой дискретизации 48 кГц, только на 16 кГц аудио. Такое ограничение сильно снижает диапазон частот в аудиосигнале.
Модель, которая решает одновременно задачи подавления шума и реверберации для full-band аудио, позволит устройствам с ограниченным количеством ресурсов обрабатывать речевой сигнал локально, уменьшая нагрузку на серверы и задержку ответа системы. Зачастую задачи шумоподавления и дереверберации решаются последовательно разными нейронными сетями. Модель, которая будет способна решить обе задачи одновременно, позволит уменьшить количество используемой памяти и время обработки сигнала.
Код проекта доступен на Github. Также есть демо на Hugging Face.
Постановка задачи
Понятие шума в аудио общеизвестное — нежелательные звуковые колебания, которые складываются с полезным сигналом. Но что такое реверберация? Реверберация же представляет собой акустический эффект, возникающий при многократном отражение звука от поверхностей помещения. В аудио появляется эффект продолжительного затухания. Иными словами, это непрерывное эхо.
Зная, что такое шум и реверберация, мы можем определить то, как моделируется шумный сигнал. Это свёртка чистого сигнала с Room Impulse Response (RIR) и добавленный шум:
Обозначения:
-
— чистый сигнал;
-
— импульсная характеристика помещения;
-
— шум;
-
— смесь чистого сигнала, RIR и шума.
На рисунках 1 и 2 приведены изображения чистой спектрограммы и спектрограммы с шумом и реверберацией соответственно.
Поставив задачу, можно задать требования и ограничения на модель:
-
Обработка аудиосигнала с частотой дискретизации равной 48 кГц.
-
Решение задачи подавление шума и реверберации со сравнимым с легковесными моделями качеством речевого сигнала.
-
Количество параметров не должно превышать 1 млн.
-
Продолжительность обработки аудиосигнала должна быть меньше продолжительности самого аудиосигнала.
Обзор метрик
Так как модель обрабатывает full-band аудио, то не все метрики могут подойти, так как некоторые из них предназначены только для 16 кГц. Например, одна из самых часто используемых метрик качества речевого сигнала PESQ работает в 16 кГц, поэтому она не использовалась для мониторинга качества выходного аудио.
Вместо этого мы взяли NISQA. Эта метрика тоже имеет связь с человеческим восприятием звука, но работает в 48 кГц. Кроме того, она считает не только общее качество речевого сигнала, но и качество шумоподавления, искажения тембра и др.
Для проверки качества разборчивости речевого сигнала использовалась метрика STOI, а для качества дереверберации — SRMR.
Производительность же мерилась при помощи подсчёта MACs на минимально допустимой размерности данных и RTF на 1 секунде.
Существующие решения
Большинство нейросетевых моделей имеют достаточно похожую архитектуру: CNN для извлечения признаков из спектрограммы, bottleneck для обработки признаков в латентном пространстве, CNN для реконструкции спектрограммы. Зачастую эксперименты над архитектурой сводятся к изменениям в bottleneck части, так как она отвечает за запоминание моделью высокоуровневых признаков.
Самые лучше по метркиами модели MP‑SENet, SEMamba, xLSTM‑SENet имеют такую структуру и Transformer, Mamba block, xLSTM block в качестве bottleneck соответственно. Эти модели демонстрируют высокое качество шумоподавления, однако имеют тяжелые по количеству вычислений блоки.
Если же рассматривать легковесные модели, например, относительно недавние FSPEN, LiSenNet, GTCRN и др., то все они обучены только на задачу шумоподавления, а также работают только с 16 кГц аудио.
Если же начать копать глубже, то можно заметить, что моделей, которые удовлетворяют, поставленным в начале, требованиям. Из моделей, обученных на full‑band данных, можно выделить только DeepFilterNet. Поэтому было принято решение взять за основу одну из легковесную архитектуру и на её основе разработать легковесную модель, которая бы решала задачу совместного шумоподавления и дереверберации для full‑band аудио с возможностью работать в реальном времени.
Разработка метода
В качестве бейзлайна был выбран FSPEN, Эта модель достигает значения PEQS 2,97 на VBD, что является одним из лучших результатов среди легковесных архитектур. FSPEN содержит 79 тысяч параметров и количество MACs равное 89 млн. Для сравнения, DFN, как заявляют авторы, запускается на Raspberry Pi 4 с RTF 0,42, при 350 млн MACs. У FSPEN 89 млн, следовательно, модель подходит для работы в реальном времени для слабых устройств.
Основная идея FSPEN — максимально уменьшить сложность и размер модели с сохранением её обобщающей способности. Модель имеет схожу схему, описанную в предыдущем параграфе, но обрабатывает не только спектрограмму целиком, но и дополнительно разбивает ещё на группы частоты, их которых независимо извлекаются признаки для общего bottleneck. Сам же bottleneck это 2 последовательные RNN: по временной оси (GRU) и по частотной. Причём по временной оси признаки разбиты на группы, каждую из которых обрабатывает своя GRU. Всего 3 таких блока в bottleneck.
В рамках проекта было проведено множество экспериментов, разберём некоторые из них.
При переходе с 16 кГц на 48 кГц частотный диапазон вырастает втрое. Если оставить N_FFT = 512, спектрограмма станет слишком грубой по частоте — модель просто не увидит детали, которые важны для full‑band речи.
Поэтому первый шаг — адаптация частотного разрешения STFT.
Таблица 1: Сравнение параметров бейзлайна и модификации:
|
Параметр |
Бейзлайн (16 кГц) |
Модификация (48 кГц) |
|
sample_rate |
16 000 |
48 000 |
|
N_FFT |
512 |
1024 |
|
Число sub‑band групп |
5 |
8 |
Почему нельзя просто поднять sample rate
N_FFT увеличили в 2 раза, а не в 4. Это осознанный компромисс. Реверберация — искажение во времени («хвосты» на спектрограмме), и для её подавления важнее сохранить временное разрешение, чем максимально нарастить частотное.
У такого изменения есть побочный эффект. Меняется минимальный размер входа. При 48 кГц и N_FFT = 1024 модель принимает чанки от 21,3 мс.
Дальше — sub‑band encoder. Размер спектра вырос, старое разбиение на пять групп перестало покрывать диапазон. Количество групп подняли до восьми, пересчитали ширины полос.
После этих изменений выросли только размерности на входе/выходе Feature Merge и Feature Split. Bottleneck (DPE‑блоки) остался прежним — это позволяет не раздувать самую «дорогую» часть сети.
Первая модификация в линейке: FSPEN + 48 кГц.
Splitting into groups: зачем пересекающиеся полосы
В оригинальном FSPEN каждая частотная группа в sub‑band encoder обрабатывается независимо: своя свёртка, свой ReLU, потом конкатенация. На бумаге это экономит параметры. На практике — две проблемы:
-
Частоты связаны физически. Cтруктура речи не обрывается на границе частотного бина STFT.
-
Артефакты на стыках. Независимые группы часто дают «ступеньки» в маске — слышимые искажения и провалы на границах полос.
Для того, чтобы решить эти проблемы, предлагается разбивать группы с overlap. Соседние группы перекрываются по частоте. Модель видит один и тот же диапазон бинов в двух ветках и учится согласовывать маски на стыках.
Вторая модификация: FSPEN + 48 кГц + Overlap — адаптация STFT + пересекающиеся sub‑band группы. Именно она в экспериментах показала лучший баланс качества и сложности.
Рецептивное поле: когда одной свёртки на группу мало
У FSPEN слабое место — малое рецептивное поле в sub‑band CNN. Модель видит только локальные закономерности и может проигрывать более глубоким архитектурам на сложных искажениях.
Отсюда третья группа изменений — Sub‑Band Layers Extension (SBLE).
В Sub‑band encoder/decoder вместо одной свёртки на группу — три последовательных conv‑блока (Conv1d → ELU →… → Sigmoid на выходе декодера).
Также в Full‑band encoder вместо вещественной и мнимой части спектрограммы подаём магнитуду и фазу (|X|, angle(X)). Для задачи маскирования это ближе к физике сигнала: энергия и фаза разделены явно.
ReLU был заменён на ELU в промежуточных sub‑band слоях. После нескольких свёрток признаки могут быть отрицательными, а ReLU «убивает» градиент.
Таблица 2: Активации на выходе декодеров:
|
Ветка |
Маска |
Активация |
Зачем |
|
Full‑band, магнитуда |
|
Sigmoid |
Маска ∈ (0, 1), энергия неотрицательна |
|
Full‑band, фаза |
|
Tanh |
Фазовая поправка без жёсткого ограничения [0, 1] |
|
Sub‑band |
|
Sigmoid |
Маска магнитуды |
ELU сохраняет обучаемость, а ограничение на неотрицательность оставляем только на последнем слое.
Также вместо Linear теперь стоит Conv1d в sub‑band decoder: линейный слой смотрит на все каналы сразу, свёртка — на соседние частотные бины. Для локальных спектральных паттернов это естественнее.
Третья модификация: FSPEN + 48 кГц + SBLE.
SBDC: conv‑декодер без углубления энкодера
Отдельно проверили конфигурацию без трёхслойного sub‑band encoder, но с:
-
overlap групп;
-
mag/phase на входе full‑band encoder;
-
вёрточным sub‑band decoder (SBDC) вместо Linear. Четвёртая модификация: FSPEN + 48 кГц + SBDC + Overlap.
Таблица 3: Итоговая таблица изменений:
|
Вариант |
48 кГц /
|
Overlap групп |
3 слоя sub‑band |
Full‑band вход |
Sub‑bandup decoder sample module |
|
FSPEN (baseline) |
– |
– |
– |
‑real/imag |
Linear |
|
+ 48 кГц |
✓ |
– |
– |
‑real/imag |
Linear |
|
+ Overlap |
✓ |
✓ |
– |
‑real/imag |
Linear |
|
+ SBLE |
✓ |
– |
✓ |
mag/phase |
Conv |
|
+ SBDC + Overlap |
✓ |
✓ |
– |
‑mag/phase |
Conv |
Обучающие данные
Перед тем, как проанализировать результаты экспериментов, стоит рассказать про данные, на которых обучались модели.
В качестве обучающей выборки была выбрана версия корпуса VoiceBank+DEMAND с 56 спикерами (28 мужчин, 28 женщин), она содержит 23 075 файлов реальной речи на английском языке. Это один стандартный корпус для speech enhancement исследований. Для валидационной выборки были взяты первые 5000 файлов из версии с 28 спикерами. Тестовая выборка состоит из 2 спикеров и 824 файлов.
Также были добавлены шумы из TAU Urban Acoustic Scenes 2019. Шум был разбит на 3 выборки таким образом (train, validation, test): 1318, 309, 180. Всего 49 вида шума, каждая выборка содержит все виды шума. Signal‑to‑Noise Ration для смешивания шума с сигналом выбирался случайно из списка [0, 5, 10, 15] (значения равновероятны).
Файлы с RIR были сгенерированы при помощи Python библиотеки pyroomacoustics. RIR файлы были разделены на 4 группы с разными параметрами. Общие параметры каждой группы: высота комнаты uniform(2.5, 3.0) метров, отношение сторон комнаты [1: 3, 2: 3, 1: 1] (вероятность выбора 0,5, 0,25, 0,25 соответственно).
Каждая группа была разбита на train, validation, test следующим образом: 0,7, 0,15, 0,15. Уникальные параметры групп следующие:
-
Первая группа представляет из себя комнату малого размера (прямоугольный параллелепипед) с площадью комнаты из
uniform(15, 30) m2, rt60 =uniform(0.4, 0.5), 200 файлов. -
Вторая группа — комната среднего размера: площадь =
uniform(30, 80) m2, rt60 =uniform(0.5, 0.7), 400 файлов. -
Третья группа — комната большого размера: площадь =
uniform(80, 120) m2, rt60 =uniform(0.7, 0.85), 160 файлов; -
Четвёртая группа — комната большого размера с длинной реверберацией: площадь =
uniform(80, 120) m2, rt60 =uniform(0.85, 1.), 80 файлов.
Результаты экспериментов
В первую очередь стоит отметить то, что модификации, где спектрограмма представляется как магнитуда и фаза, демонстрируют результат хуже, чем версии с вещественным/мнимым представлением. Предположение, что такое представление поможет модели лучше понимать сигнал, оказалось ошибочным.
Не смотря на то, что бейзлайн выдаёт удовлетворительные метрики, значение среднее значение STOI равное 0,77 может говорить о том, что в обработанном сигнале присутствуют заметные искажения, влияющие на разборчивость речи.
На собственных тестовых данных (шум + реверберация) лучшим вариантом оказалась модификация FSPEN + 48 кГц + Overlap (95 тыс. параметров, 5,6 млн. MACs):
-
PESQ: 2,35 (против 1,68 у искажённого сигнала и 2,22 у исходного FSPEN);
-
NISQA‑MOS: 3,73, NISQA‑NOISE: 4.00 (близко к ground truth: 4,07/4,12);
-
STOI: 0,88, SRMR: 9,6 (эффективное подавление реверберации);
-
RTF: 0,11 (работа в реальном времени).
В результате удалось превзойти baseline по некоторым метрикам при умеренном увеличении числа параметров (не более 200 тыс.) и количества MAC‑операций (не более 10 млн для минимально допустимого входа). Модель успешно справляется как с шумоподавлением (значение NISQA‑NOISE близко к значению для ground truth), так и с подавлением реверберации. Значение SRMR, превышающее 9, свидетельствует об отсутствии или слабой выраженности реверберации в сигнале.
Выводы
Обучение легковесной модели для full‑band задачи оказалось значительно труднее, чем для задачи с частотой дискретизации 16 кГц, из‑за большой размерности данных и увеличенного количества частотных зависимостей. Несмотря на это, полученные модификации FSPEN демонстрируют высокое качество шумоподавления и дереверберации, сохраняя при этом легковесность. Кроме того, модели способны работать в режиме real‑time, что делает их применимыми для решения реальных задач. Поставленные задачи и требования к моделям можно считать выполненными.
В качестве направления будущей работы можно рассматривать дополнительное обучение моделей на более крупном наборе шумовых и речевых сигналов, чтобы повысить устойчивость модели к различным сценариям использования. Также можно реализовать некоторые компоненты модели на более производительном языке программирования (например, C++ или Rust), как это сделано в DeepFilterNet. В таком случае процесс обработки данных моделью станет ещё быстрее.
Автор: G1B-B0N


