Цифровая обработка сигналов
Adaptive Filters: LMS, RLS
AirPods Pro подавляют до 28 дБ внешнего шума. Zoom убирает фоновый шум ноутбукового вентилятора. Google Meet вырезает эхо из переговорных комнат. Всё это - адаптивные фильтры: LMS и RLS, придуманные ещё в 1960-х, но работающие в каждом смартфоне и ноутбуке прямо сейчас.
- **AirPods Pro, Sony WH-1000XM5** - реал-тайм LMS/FxLMS для активного шумоподавления на частотах до 1 кГц
- **WebRTC AEC3** (Chrome, Firefox) - адаптивный эхоподавитель, используется в 3 млрд веб-браузеров
- **5G beamforming** - RLS адаптирует веса антенной решётки для слежения за движущимся абонентом
LMS алгоритм: наименьших средних квадратов
Стационарный фильтр Баттерворта работает хорошо, когда характеристики сигнала известны заранее. Но что если шум меняется со временем - как фоновый шум в самолёте или эхо в переговорной комнате? **Адаптивный фильтр** меняет свои коэффициенты на ходу, подстраиваясь под текущие условия.
**LMS (Least Mean Squares)** - самый простой адаптивный алгоритм. Идея: есть желаемый сигнал `d[n]`, есть выход фильтра `y[n]`, ошибка `e[n] = d[n] - y[n]`. Коэффициенты фильтра корректируются в направлении, уменьшающем среднеквадратичную ошибку - это стохастический градиентный спуск.
**Выбор шага mu:** слишком большой mu -> нестабильность (расходимость). Слишком малый -> медленная адаптация. Условие стабильности: `0 < mu < 1 / (N * P_x)`, где N - число tap-ов, P_x - мощность входного сигнала. Нормализованный NLMS автоматически масштабирует mu и стабильнее.
В LMS алгоритме увеличение шага обучения mu приводит к:
RLS: рекурсивный метод наименьших квадратов
LMS медленно сходится, когда входной сигнал коррелирован или изменяется быстро. **RLS (Recursive Least Squares)** решает точную задачу МНК рекурсивно: минимизирует взвешенную сумму всех прошлых ошибок. Сходится за O(M) итераций (M - порядок фильтра) вместо O(1/mu) у LMS.
| Характеристика | LMS | RLS |
|---|---|---|
| Вычислительная сложность | O(M) на итерацию | O(M²) на итерацию |
| Скорость сходимости | Медленная (зависит от mu) | Быстрая (~M итераций) |
| Числовая стабильность | Высокая | Может деградировать без трюков |
| Параметры настройки | mu (один) | lam, delta (два) |
| Применение | Реал-тайм, ограниченные ресурсы | Быстроизменяющиеся сигналы |
**Forgetting factor lam:** при lam < 1 старые данные экспоненциально забываются. Эффективный объём памяти: ~1/(1-lam) отсчётов. lam=0.99 -> память ~100 отсчётов; lam=0.9 -> ~10 отсчётов. Малый lam - быстрая адаптация к нестационарному сигналу, но меньшая устойчивость.
Почему RLS сходится быстрее LMS при коррелированном входном сигнале?
Шумоподавление с адаптивным фильтром
Классика применения LMS/RLS - **активное шумоподавление** (ANC, Active Noise Cancellation). Наушники Sony, Bose, Apple AirPods Pro используют именно адаптивные фильтры. Принцип: микрофон фиксирует внешний шум, адаптивный фильтр строит его модель, динамик воспроизводит антифазный сигнал.
Практическая реализация сложнее из-за **акустического пути** (secondary path): сигнал от динамика до error-микрофона проходит через акустику наушника с задержкой и окраской. Это нужно компенсировать - иначе LMS адаптируется к неправильной модели. Алгоритм **Filtered-X LMS (FxLMS)** решает эту проблему, фильтруя reference-сигнал через оценку secondary path.
**Ширина полосы подавления:** ANC эффективен до ~1 кГц. На высоких частотах длина звуковой волны сравнима с размером головы - сложно создать точную антифазу. Поэтому на частотах >1 кГц наушники используют пассивную изоляцию (foam, padding).
В системе ANC error-микрофон расположен внутри наушника, близко к уху. Его сигнал используется для:
Акустическое эхоподавление
На видеозвонке собеседник слышит собственный голос с задержкой - это **акустическое эхо**: звук из динамика попадает в микрофон и передаётся обратно. Алгоритм **AEC (Acoustic Echo Cancellation)** - ещё одно применение адаптивного фильтра. Он строит модель акустического пути комнаты (AIR - Acoustic Impulse Response) и вычитает предсказанное эхо из сигнала микрофона.
Главная сложность AEC - **двусторонний разговор** (double-talk): оба участника говорят одновременно. Если алгоритм не распознает double-talk и продолжит адаптацию, он начнёт 'подавлять' голос ближнего конца. Детектор double-talk (DTD) приостанавливает обновление коэффициентов, пока обнаруживает одновременную речь с обеих сторон.
**WebRTC** (используется в Google Meet, Zoom, Discord) содержит production-реализацию AEC3 - трёхступенчатую систему: грубая синхронизация задержки, FDAF (Frequency Domain Adaptive Filter) для длинных комнат, нелинейная пост-обработка остаточного эхо. Исходный код открыт - хорошая точка входа для изучения реального AEC.
AEC просто вычитает сигнал динамика из микрофона с фиксированной задержкой
AEC адаптивно моделирует акустическую импульсную характеристику комнаты (AIR) - сложный фильтр, меняющийся при движении людей и мебели.
Фиксированная задержка работала бы только в идеальной безэховой камере. Реальная комната добавляет сотни миллисекунд реверберации с уникальной частотной характеристикой для каждого положения в пространстве.
Что такое 'double-talk' в контексте AEC и почему он проблематичен?
Адаптивные фильтры LMS и RLS
- LMS: стохастический градиентный спуск, O(M), прост и стабилен; медленная сходимость при коррелированном входе
- RLS: точный рекурсивный МНК, O(M²), быстрая сходимость; сложнее численно, два параметра (lam, delta)
- ANC: адаптивный фильтр строит модель шума и создаёт антифазный сигнал; FxLMS компенсирует secondary path
- AEC: моделирует AIR комнаты и вычитает предсказанное эхо; double-talk detctor останавливает адаптацию при двустороннем разговоре
Связанные темы
Адаптивные фильтры строятся на теории стационарных фильтров и оптимальной фильтрации:
- FIR и IIR фильтры — LMS адаптирует коэффициенты FIR-фильтра - нужно понимать базовую структуру
- Фильтр Баттерворта и Чебышева — Стационарные фильтры - точка отсчёта для понимания адаптивных
- Audio DSP: эффекты и кодеки — Практическое применение DSP-алгоритмов в аудиоцепочке
Вопросы для размышления
- Почему NLMS (нормализованный LMS) более устойчив, чем базовый LMS при изменяющейся мощности входного сигнала?
- В каких сценариях forgetting factor lam < 0.99 может ухудшить качество AEC?
- Как double-talk detector влияет на задержку AEC системы - есть ли trade-off?