# Подавление шума в LiveKit ## Можно ли сделать активное подавление лишних шумов? **Да.** Есть два уровня: ### 1. Встроенное в браузер (уже включено) В `LiveKitRoomContent` в `options.audioCaptureDefaults` задано: - **noiseSuppression: true** — штатное подавление шума через WebRTC (getUserMedia). - **echoCancellation: true** — подавление эха. **Плюсы:** без доп. библиотек, почти не нагружает CPU, поддерживается всеми современными браузерами. **Минусы:** качество среднее, в шумных условиях может быть недостаточно. --- ### 2. Krisp (AI-шумоподавление) LiveKit поддерживает **Krisp** через пакет `@livekit/krisp-noise-filter` и хук `useKrispNoiseFilter` из `@livekit/components-react/krisp`. **Особенности:** - Работает **только с LiveKit Cloud** (не с self-hosted сервером без интеграции Krisp). - Обработка на **клиенте** (в браузере), в отдельном потоке (Worker), аудио на внешние серверы не отправляется. - Подгрузка пакета по требованию (dynamic import при включении фильтра). **Оценка по производительности (по данным Krisp / LiveKit):** | Параметр | Оценка | |---------------------|---------------------------------| | Размер пакета | ~12 MB | | Память (RAM) | ~100 MB | | Обработка кадра | ~1.5–2 ms на кадр (10 ms аудио) | | CPU | Выше, чем у встроенного в браузер | | Задержка | Несколько миллисекунд, обычно незаметна | | Основной поток | Не блокируется (Worker/WASM) | **Итог по производительности:** - **Слабые устройства / много вкладок:** возможна дополнительная нагрузка на CPU и память; на средних и сильных ПК обычно приемлемо. - **Ноутбуки/мобильные:** возможен больший расход батареи при длительном звонке с включённым Krisp. - **Латентность:** влияние минимально, т.к. обработка на клиенте и в воркере. --- ## Рекомендация 1. **Сейчас:** оставить включённые **noiseSuppression** и **echoCancellation** в `audioCaptureDefaults` — это уже даёт базовое подавление шума без влияния на производительность. 2. **Krisp:** подключать только если: - используется **LiveKit Cloud** (или есть договорённость по Krisp для self-hosted); - нужен сильный шумоподавитель (фоновые разговоры, улица, офис); - готовы к увеличению потребления RAM/CPU и размера загружаемого кода при первом включении фильтра. 3. **Опционально:** сделать Krisp **включаемым по кнопке** (как в примере с `useKrispNoiseFilter`), чтобы пользователь сам решал, когда использовать тяжёлый режим. Если нужно, могу расписать пошаговое подключение Krisp в нашем проекте (установка пакета, хук, кнопка в UI и проверка поддержки LiveKit Cloud).