Шумоподавление и эхо на линии: как включить подавитель эха OSLEC на VoIP-шлюзе
Во время разговора по городскому или внутреннему телефону возникают следующие проблемы:
- Вы говорите в трубку и через долю секунды слышите свой собственный голос с задержкой (эффект эха).
- Собеседник жалуется на металлический призвук, кваканье или постоянный гул/фон в трубке.
- При разговоре через аналоговую линию (FXO-шлюз) слова 'проглатываются' или двоятся.
- Эхо усиливается, если собеседник включает громкую связь на аппарате.
Что такое эхо и почему оно возникает?
Эхо чаще всего появляется на стыке цифровой IP-сети и старых аналоговых медных проводов (на FXS/FXO шлюзах и платах DAHDI). Когда сигнал переходит из 2-проводной линии в 4-проводную, часть электрического сигнала отражается назад. Если задержка сети превышает 20–30 мс, человеческое ухо начинает слышать это отражение как эхо.
Шаг 1. Отрегулируйте уровни усиления (Gain) на шлюзе
Самая частая ошибка новичков — выкручивать громкость линии на максимум. Из-за слишком сильного сигнала микрофон начинает ловить звук из динамика:
- Зайдите в веб-интерфейс вашего VoIP-шлюза (Grandstream, D-Link, Eltex).
- Найдите раздел FXS / FXO Ports -> Audio Settings.
- Уменьшите уровни усиления:
TX Gain(передача) иRX Gain(прием) установите в значения от -2 dB до -4 dB (или с 0 до -3). Слишком громкий звук порождает отражение волны.
Шаг 2. Включение эхоподавителя OSLEC в Asterisk (DAHDI)
OSLEC (Open Source Line Echo Canceller) — один из лучших бесплатных алгоритмов подавления эха. Чтобы активировать его на сервере Asterisk с аналоговыми платами:
- Откройте конфигурационный файл DAHDI:
sudo nano /etc/dahdi/system.conf - Найдите строку настройки эхоподавления для ваших каналов и укажите модуль
oslec:echocanceller=oslec,1-4 - В файле
/etc/asterisk/chan_dahdi.confвключите параметры:echocancel=yes echocancelwhenbridged=yes echotraining=yes - Перезапустите модуль DAHDI и службу телефонии:
sudo systemctl restart dahdi sudo asterisk -rx "dahdi restart"
Шаг 3. Включение Echo Cancellation на автономном шлюзе (Grandstream / D-Link)
Если у вас внешний SIP-шлюз без Asterisk-плат:
- Откройте меню Channel Settings -> Voice Quality.
- Поставьте галочку напротив Enable Echo Cancellation (EC).
- Выберите длину хвоста эха (Echo Tail): для обычных линий достаточно 32 ms или 64 ms (не ставьте сразу 128 ms, это может вызвать задержки в слабом процессоре).
Частые вопросы (FAQ)
Почему эхо слышу я, а виноват телефон собеседника?
Эхо всегда возникает на противоположном конце разговора. Звук вашего голоса выходит из динамика трубки собеседника, улавливается его микрофоном (или отражается на его шлюзе) и возвращается обратно к вам в ухо.
Поможет ли OSLEC, если звонок идет только между двумя IP-телефонами по SIP?
Нет, между чистыми IP-телефонами нет аналогового перехода. Если эхо есть на IP-телефоне, причина в слишком высокой громкости динамика трубки или включенной громкой связи без аппаратного подавления (AEC) в самом аппарате.
Что такое параметр echotraining в Asterisk?
Это функция 'обучения' эхоподавителя: в самом начале звонка шлюз отправляет короткий неслышный импульс, замеряет отражение сигнала от линии и сразу подстраивает фильтр под конкретный кабель.
Стоит ли выставлять Echo Tail на максимум (128 ms)?
Не рекомендуется без необходимости. Чем больше хвост эха, тем выше нагрузка на процессор шлюза. Для городских медных линий почти всегда достаточно 32 или 64 мс.