🎯 Аудиоархитектура Miscord: шумоподавление
Принципы реализации
Ключевые принципы:
-
Не отправляет аудио в периоды тишины ✅
- Экономия пропускной способности
- Полное устранение фоновых шумов при молчании
- Уменьшение нагрузки на CPU
-
Собственная реализация WebRTC ✅
- Обход SDP, ICE, DTLS для нативных приложений
- Прямое использование
webrtc::CallAPI - Минимальный обмен данными (~1000 байт)
-
Шифрование Salsa20 вместо SRTP
- Более быстрое шифрование
- Меньше overhead
-
Обработка исходных аудиоданных
- Voice Activity Detection (VAD)
- Push-to-Talk режим
- Приоритетные пакеты
Что мы реализовали в Miscord
✅ 1. Не отправляем аудио при молчании
Реализовано в voiceService.ts:✅ 2. Агрессивный VAD для автоматического заглушения
Увеличены пороги детекции:- При молчании:
track.enabled = false→ RTP пакеты НЕ отправляются - При речи:
track.enabled = true→ RTP пакеты отправляются с шумоподавлением
✅ 3. Максимальное браузерное шумоподавление
Google experimental constraints:✅ 4. Electron с APM3 для desktop-клиента
Chromium флаги для максимального качества:Матрица реализации
Как это работает в Miscord
Сценарий 1: Пользователь молчит
Сценарий 2: Пользователь говорит
Результат
✅ Дыхание при молчании: НЕ передается (track.enabled = false)✅ Дыхание при речи: Подавляется браузерным NS + googHighpassFilter
✅ Щелчки/шорохи: Фильтруются агрессивным VAD
✅ Экономия трафика: нет пакетов при тишине ✅ Качество в Electron: APM3 + Hybrid AGC в desktop-клиенте
Преимущества нашего подхода
- Совместимость с WebRTC - используем стандартные API
- Работает в браузере И Electron - единая кодовая база
- Минимальная задержка - нет серверной обработки
- Низкая нагрузка на CPU - браузерное NS аппаратно ускорено
- Экономия трафика — не отправляем аудио при тишине
Что можно улучшить (опционально)
1. Push-to-Talk режим
Добавить режим “рации” (зажать кнопку для разговора):- Полный контроль пользователя
- Гарантированное отсутствие фоновых шумов
- Экономия трафика
2. Индикаторы приоритета
Передавать дополнительную информацию с RTP-пакетами:- Приоритет в чате
- Качество соединения
- Статус пользователя
3. Адаптивное качество на основе RTCP
Использовать RTCP отчеты для динамической настройки битрейта:- Автоматическое снижение качества при плохом соединении
- Повышение качества при хорошем соединении
Выводы
🎉 В Miscord реализован ключевой принцип: “Не отправлять аудио в периоды тишины” Это решает проблему дыхания и фоновых шумов на фундаментальном уровне! В сочетании с:- Браузерным шумоподавлением
- Google experimental фильтрами
- Electron APM3
- Агрессивным VAD
Дата: 30 сентября 2025
Статус: PRODUCTION READY
Подход: WebRTC + VAD architecture