Ты прав. Существует много методов эхоподавления, но ни один из них не является тривиальным. Самый общий и популярный метод - эхоподавление через адаптивный фильтр. В одном предложении работа адаптивного фильтра заключается в изменении сигнала, который он воспроизводит, путем минимизации количества информации, поступающей с входа.
Адаптивные фильтры
Адаптивный (цифровой) фильтр - это фильтр, который изменяет свои коэффициенты и в конечном итоге сходится к некоторой оптимальной конфигурации. Механизм для этой адаптации работает, сравнивая выходные данные фильтра с некоторыми желаемыми выходными данными. Ниже приведена схема универсального адаптивного фильтра:
Как видно из диаграммы, сигнал фильтруется (свернут с) → ш п для получения выходного сигнала д [ п ] . Затем мы вычитаем д [ п ] от требуемого сигнала д [ п ] для получения ошибки сигнала е [ п ] . Обратите внимание, что → w n - это вектор коэффициентов, а не число (следовательно, мы не пишем w [ n ]Икс [ н ]вес⃗ Nd^[ п ]d^[п ]d[ п ]е [ п ]вес⃗ Nw [ n ]). Поскольку он меняет каждую итерацию (каждую выборку), мы присваиваем текущую коллекцию этих коэффициентов . Как только e [ n ] получено, мы используем его для обновления → w n по выбранному алгоритму обновления (подробнее об этом позже). Если вход и выход удовлетворить линейную зависимость , которая не изменяется с течением времени , и данный алгоритм обновления хорошо разработанный, → ш п будет в конечном итоге сходятся к оптимального фильтра и д [ п ] будет внимательно следить за д [ п ] .Nе [ п ]вес⃗ Nвес⃗ Nd^[ п ]d[ п ]
Эхоподавление
Проблема эхоподавления может быть представлена в терминах проблемы адаптивного фильтра, где мы пытаемся получить некоторый известный идеальный выходной сигнал с учетом входных данных путем нахождения оптимального фильтра, удовлетворяющего соотношению вход-выход. В частности, когда вы берете гарнитуру и говорите «привет», она принимается на другом конце сети, изменяется в зависимости от акустического отклика комнаты (если она воспроизводится громко) и возвращается в сеть для возврата. тебе как эхо. Однако, поскольку система знает, как звучало первоначальное «привет», и теперь она знает, как звучит реверберированный и отсроченный «привет», мы можем попытаться угадать, как реагирует эта комната, используя адаптивный фильтр. Тогда мы можем использовать эту оценку, свяжите все входящие сигналы с этим импульсным откликом (который даст нам оценку эхо-сигнала) и вычтите его из того, что входит в микрофон человека, которого вы вызвали. Диаграмма ниже показывает адаптивный эхоподавитель.
х [ н ]d[ п ]вес⃗ Nх [ н ]Y[ п ]d[ п ]e [ n ] = d[ n ] - у[ п ]
вес⃗ N
Икс⃗ N= ( x [ n ] , x [ n - 1 ] , … , x [ n - N+ 1 ] )T
Nвес⃗ NИкс
вес⃗ N= ( w [ 0 ] , w [ 1 ] , … , x [ N]- 1 ] )T
Y[ п ]= х⃗ N= ш⃗ N
Y[ n ] = х⃗ TNвес⃗ N= х⃗ N⋅ ш⃗ N
вес⃗
вес⃗ n + 1= ш⃗ N+ μ x⃗ Nе [ п ]Икс⃗ TNИкс⃗ N= ш⃗ N+ μ x⃗ NИкс⃗ TNвес⃗ N- г[ п ]Икс⃗ TNИкс⃗ N
μ0 ≤ μ ≤ 2
Реальные приложения и проблемы
Несколько вещей могут представлять трудности с этим методом эхоподавления. Прежде всего, как упоминалось ранее, не всегда верно, что другой человек молчит, пока он получает ваш «привет» сигнал. Можно показать (но это выходит за рамки этого ответа), что в некоторых случаях все еще может быть полезно оценить импульсную характеристику, в то время как на другом конце линии присутствует значительный объем входного сигнала, поскольку входной сигнал и эхо считается статистически независимым; следовательно, минимизация ошибки все еще будет допустимой процедурой. В общем, для обнаружения хороших временных интервалов для оценки эхо-сигналов необходима более сложная система.
С другой стороны, подумайте о том, что происходит, когда вы пытаетесь оценить эхо-сигнал, когда принятый сигнал приблизительно равен тишине (фактически, шуму). При отсутствии значимого входного сигнала адаптивный алгоритм будет расходиться и быстро начнет давать бессмысленные результаты, что в конечном итоге приведет к случайному эхо-паттерну. Это означает, что мы также должны учитывать обнаружение речи . Современные эхоподавители больше похожи на рисунок ниже, но описание выше - это суть.
Существует множество литературы по адаптивным фильтрам и эхоподавлению, а также некоторые библиотеки с открытым исходным кодом, к которым вы можете подключиться.