Россиянин рассказал, как сделать активное (!) шумоподавление для квартиры. Проще, чем кажется
Пользователь «Хабра» с ником DAN-SEA заинтересовался тем, как собственноручно можно сделать систему активного шумоподавления для городской квартиры. Изучив тему и даже историю появления активного шумодава (всё началось с 1930-х годов, когда физик Пауль Люэг (Paul Lueg) предложил первую систему активного шумоподавления для вентиляционных воздуховодов фабрик), автор выделил три возможных подхода к реализации самодельной ANC-системы (Active Noise Cancelling или активное подавление шумов).
Один из методов заключается в использовании аналогового фазовращателя, сдвигающего входной шум на 180°, что создаёт «антизвук» — это просто реализовать (без микроконтроллеров) и работает на низких задержках (в реальном времени), но эффективно только в узком диапазоне частот, очень чувствительно к расстоянию между микрофоном и динамиком, а также не адаптируемо под динамические условия (изменяющиеся шумы).
Другой вариант подразумевает использование адаптивных фильтров (таких как алгоритм LMS) или задействование нейросетей для создания универсальной ANC-системы — потенциально это самое мощное решение, но оно очень сложное для самостоятельной реализации и требует производительное железо со сложным ПО.
DAN-SEA остановился на подходе с созданием интеллектуальной системы на микроконтроллере ESP32 с FFT. Она позволяет подстраиваться под изменяющийся шум, легко программируется, подавляет узкополосные и монотонные шумы (гудение от компрессоров, трансформаторов и вентиляторов), а также задействует дешёвые компоненты: ESP32, I2S-микрофон и цифровой усилитель. Но не обошлось и без минусов — есть небольшая задержка, одновременно подавляются максимум две доминирующие частоты, неэффективная работа с подавлением широкополосных шумов (голосов или шума дороги).
Выбранный метод подразумевает использование ESP32 как основного микроконтроллера для анализа шума и генерации синусоиды противоположной фазы. Система не обошлась без цифрового микрофона INMP441 с интерфейсом I2S для фиксации внешнего шума, цифрового усилителя MAX98357A, принимающего аудиопоток от ESP32 и усиливающего его, а также динамика на 4-8 ома для воспроизведения антишума. С такой системой задержка оказалась достаточно мыла, что позволило реализовать генерацию антизвука в реальном времени.
С программной стороны автору пришлось реализовать сбор данных с микрофона, преобразование сигнала в частнотную область через FFT, воспользоваться алгоритмом для определения доминирующей частоты шума и написать генератор синусоиды противоположной фазы для найденной частоты, а затем вывести её на динамик через цифровой усилитель. В итоге вся эта связка повторяется многократно с небольшой задержкой, что обеспечивает адаптацию к изменениям в окружающем шуме.
В своей статье инженер подробно расписал и показал (включая код на C++ в соавторстве с DeepSeek) нюансы реализации своей DIY-системы активного шумоподавления для городской квартиры.