Акустическое эхоподавление (AEC): как это на самом деле работает

Автор: Николай СапуновОбновлено: август 202627 мин чтения
Содержание статьи +

Кратко

Акустическое эхо возникает, когда звук с динамика попадает обратно в микрофон и возвращается собеседнику – тот слышит свой собственный голос с задержкой. Акустическое эхоподавление, или AEC по-английски, решает эту проблему так: берёт сигнал, который устройство собирается воспроизвести – так называемый опорный сигнал, – предсказывает, как он будет искажён в помещении, и вычитает это предсказание из сигнала с микрофона. В идеале остаётся только ваш голос.

Предсказание строится с помощью адаптивного фильтра, который постоянно угадывает, сверяется с реальностью и корректирует себя тысячи раз в секунду. Ему помогают два компонента: детектор двойного разговора, который временно «замораживает» фильтр, когда говорят оба собеседника, и подавитель остатка, убирающий то, что всё же пропущено.

Эта статья объясняет каждую из этих частей простым языком, называет реальный компонент в WebRTC – AEC3 – и показывает типичные режимы отказа: двойной разговор, изменение акустики помещения и задержку Bluetooth, с которыми вы реально столкнётесь в продакшене.

Почему это важно

Если вы разрабатываете платформу для телемедицины, инструмент видеоконференций, контакт-центр, онлайн-обучение или любой продукт, где двое общаются через интернет, эхо – это дефект, который пользователи замечают первым и прощают меньше всего. Замёрзший кадр видео раздражает, но услышать собственный голос, возвращающийся с задержкой в полсекунды, делает разговор физически невозможным. Эта статья предназначена для менеджера продукта, основателя или операционного руководителя, которому нужно достаточно хорошо разобраться в эхоподавлении, чтобы читать баг-репорты, задавать инженерам правильные вопросы и выстраивать реалистичные ожидания у клиентов. Опытный инженер найдёт в каждом утверждении ссылку на соответствующую Рекомендацию ITU-T или исходный код WebRTC. К концу статьи вы сможете объяснить коллеге, почему возникает эхо, как подавитель его устраняет и почему оно иногда возвращается ровно через секунду после того, как кто-то передвинул ноутбук.

Проблема: почему комната создаёт эхо

Начнём с физической ситуации – ведь всё решение вытекает из неё. Вы на звонке. Собеседник – дальняя сторона – говорит. Его голос поступает на ваше устройство в виде сигнала, устройство воспроизводит его через динамик, и звук наполняет комнату. Это нормально и необходимо: вы должны его слышать.

Вот в чём беда. Ваш микрофон находится в той же комнате, что и динамик. Он не может отличить звук, который должен захватывать – ваш голос, – от звука, который не должен – голоса собеседника, воспроизводимого из динамика. Поэтому микрофон ловит и то, и другое, смешивает в один сигнал и отправляет его обратно. Теперь собеседник слышит копию своего голоса с задержкой. Эта задержанная копия и есть акустическое эхо.

Невыносимым его делает именно задержка. Если бы эхо возвращалось мгновенно, мозг воспринял бы его как естественное отражение – такое, как в любой комнате, – и проигнорировал бы. Но путь сигнала по интернету добавляет время. К моменту, когда собеседник на другой стороне слышит своё эхо, оно уже отстаёт от его речи на заметную величину, и мозг не может слить эти два звука в один. Чем больше задержка, тем хуже.

Это не новое наблюдение. Телефонная сеть борется с эхом уже более ста лет, и международный стандарт, его измеряющий – Рекомендация ITU-T G.131 (Talker echo and its control, 11/2003) – прямо показывает зависимость от задержки: чем больше односторонняя задержка, тем меньше эхо может вынести слушатель. G.131 описывает допустимое эхо через «talker echo loudness rating» как функцию средней односторонней задержки, и практический вывод очевиден: при задержке около 25–30 мс ручного ослабления эха уже недостаточно – требуется отдельное устройство для его подавления. Такое устройство называется эхоподавителем.

«Эхо бывает двух видов, и их часто путают. Линейное эхо (или сетевое) возникает из-за электрических отражений в старом телефонном оборудовании – в месте, где четырёхпроводная цепь соединяется с двухпроводной. Акустическое эхо появляется из-за пути «динамик → микрофон» в помещении. Эта статья посвящена акустическому эху – именно оно преобладает в современных голосовых и видеоприложениях. Стандартом для линейного эха является ITU-T G.168; стандартом для акустического эха изначально был ITU-T G.167, позже включённый в стандарт hands-free-терминалов ITU-T P.340.»

Главная идея: подавление через вычитание

Чистая идея, лежащая в основе любого эхоподавителя, – в том, что устройство заранее знает единственный сигнал, который ему нужен. Оно точно знает, какой звук собирается воспроизвести через динамик, потому что этот звук генерирует оно само. Этот известный сигнал – голос дальней стороны, идущий к вашему динамику, – называется опорным сигналом, или иногда сигналом дальней стороны (reference signal, far-end signal).

Эхоподавитель – это, в одном предложении, шумоподавляющие наушники для комнаты. Шумоподавляющие наушники усматривают внешний шум и воспроизводят его обратную версию, чтобы он сам себя гасил. Эхоподавитель анализирует опорный сигнал – звук, который он подаёт на динамик, – предсказывает, как он отразится и вернётся в микрофон после блужданий по комнате, и вычитает это предсказание из сигнала микрофона. Если прогноз точен, в остатке остаётся только ваш голос.

Итак, подавитель сидит в точке, где встречаются два сигнала:

  • Сигнал микрофона: ваш голос, эхо с дальней стороны и шум помещения.
  • Опорный сигнал: голос с дальней стороны в том виде, в каком он подаётся на динамик.

Задача подавителя – выяснить, как опорный сигнал превращается в эхо, создать его копию и вычесть. То, что остаётся после вычитания, называют сигналом ошибки – и, что может сбить с толку, именно этот сигнал ошибки и является полезным выходом. Его передают на дальней сторону. «Ошибка» здесь означает «то, что осталось после удаления предсказуемой части», и в идеале всё, что мы не смогли предсказать, – это ваш реальный голос.

Рисунок 1. Петля эха и подавление через вычитание. Опорный сигнал (то, что мы собираемся воспроизвести) ответвляется и используется для предсказания эха, которое затем вычитается из сигнала микрофона. То, что остаётся после вычитания – голос ближней стороны, – и является тем, что отправляется обратно.

Сложная часть: комнату вам никто не выдаст

Если бы подавитель точно знал, как комната преобразует опорный сигнал в эхо, задача была бы тривиальной: предсказать, вычесть – и готово. Но он не знает. Каждая комната – своя, каждый ноутбук – свой, и путь меняется, как только что-то сдвигается. Поэтому подавителю приходится выучивать комнату в процессе звонка и переучивать её каждый раз, когда условия меняются.

То, что он выучивает, называется путём эха (echo path) – полное путешествие от опорного сигнала через буфер воспроизведения и цифро-аналоговый преобразователь, наружу через динамик, по воздуху, от стен, стола и кофейной кружки, обратно в микрофон и его аналого-цифровой преобразователь. Инженеры описывают этот путь как импульсную характеристику: если бы вы проиграли через динамик один бесконечно короткий щелчок, импульсная характеристика – это точная картина самого щелчка и всех его отражений, приходящих обратно в микрофон в течение следующих десятков миллисекунд.

Типичный путь эха в комнате довольно длинный. Звук распространяется со скоростью около 343 метра в секунду, поэтому отражение от стены на расстоянии трёх метров и обратно приходит примерно через 17 мс. При частоте дискретизации 48 000 отсчётов в секунду – такой, какую используют WebRTC и большинство голосовых систем, – 17 мс соответствуют примерно 800 отсчётам. В реальных помещениях задержки отражений могут составлять 100, 200 и даже 400 мс – особенно в гулких комнатах. Чтобы смоделировать такие задержки, подавителю эха требуется фильтр с сотнями или тысячами «отводов» (taps) – по одному коэффициенту на каждый отсчёт задержки, который он должен учитывать.

Пройдём арифметику один раз вслух – она объясняет, почему эхоподавление вычислительно дорого:

длина фильтра (в отсчётах) = длительность пути эха (с) × частота дискретизации (отсчётов/с)
                           = 0,128 с × 48 000 отсчётов/с
                           = 6 144 отсчёта (отвода)

Путь эха длиной 128 мс при частоте дискретизации 48 кГц требует примерно 6 000 отводов фильтра, и подавитель должен непрерывно обновлять эти тысячи чисел для каждого аудиоблока в реальном времени. Именно в этом и заключается инженерная сложность за простой идеей «предсказать и вычесть».

Адаптивный фильтр: угадать, проверить, поправить

Фильтр, моделирующий путь эха, – адаптивный, то есть он сам подстраивает свои веса. Ему не нужно заранее знать параметры помещения. Он начинает с произвольной гипотезы, делает предсказание, оценивает ошибку, немного корректирует веса, чтобы уменьшить погрешность, и повторяет этот процесс – тысячи раз в секунду. Именно цикл «предсказать – проверить – скорректировать» и составляет основу работы любого эхоподавителя.

Стандартный алгоритм коррекции – это метод под названием Normalized Least Mean Squares, или NLMS (нормализованный метод наименьших средних квадратов). Название отражает суть его работы. «Least mean squares» означает, что алгоритм стремится минимизировать среднеквадратичную ошибку: большая ошибка считается гораздо более нежелательной, чем маленькая, поэтому он особенно активно работает над самым громким остатком эха. «Normalized» говорит о том, что каждая коррекция масштабируется относительно текущей громкости опорного сигнала – благодаря этому и крик, и шёпот приводят к поправкам разумного размера, а не вызывают резкие колебания фильтра. NLMS – своего рода рабочая лошадка: он устойчив, достаточно быстр для работы в реальном времени и хорошо справляется с речью. Обзорная литература по эхоподавлению стабильно называет NLMS основным адаптивным алгоритмом в этой области.

Скорость обучения фильтра задаётся одной настройкой – размером шага (step size). Большой шаг означает, что фильтр учится быстро, но колеблется вокруг правильного ответа; малый шаг – учится медленнее, но точнее сходится к нему. Это ключевой компромисс в адаптации, поэтому современные подавители используют переменный размер шага: большой – когда комната только изменилась и фильтр ещё далёк от истины, малый – когда он уже сошёлся и требуются лишь небольшие корректировки. Переход от состояния «фильтр пуст» к состоянию «фильтр совпал с комнатой» называют сходимостью (convergence), и хороший подавитель достигает её за доли секунды.

Есть ещё одно важное уточнение для понимания реальных систем. Обработка сигнала по одному отсчёту во временной области слишком медленная. Реальные подавители эха переводят блоки звука в частотную область с помощью быстрого преобразования Фурье – оно разлагает звук на составляющие частоты, – потому что фильтрация там значительно эффективнее. Чтобы минимизировать задержку и при этом моделировать длинный путь эха, длинный фильтр разбивают на несколько коротких участков, каждый из которых отвечает за свой временной срез задержки, и обрабатывают их перекрывающимися блоками. Такая структура называется партиционированный блочный адаптивный фильтр в частотной области (PBFDAF), а её основа – многозадержечный блочный частотный адаптивный фильтр, предложенный Soo и Pang (IEEE Transactions on Acoustics, Speech, and Signal Processing, 1990). Вам не нужна математика – важно понимать, что «блочная обработка в частотной области» позволяет подавителю эха моделировать акустическую среду с задержкой до 200 мс, не добавляя этих 200 мс к общей задержке звонка.

Рисунок 2. Цикл «угадать – проверить – поправить». Фильтр предсказывает эхо, вычитает его из сигнала с микрофона, измеряет оставшуюся ошибку и обновляет веса – и повторяет этот процесс тысячи раз в секунду. Кривая справа показывает, как растёт уровень подавления эха (ERLE) по мере сходимости фильтра, с провалом при изменении акустических условий в помещении.

Как измерить успех: ERLE

Откуда вы знаете, что подавитель работает? По тому, насколько тише стало эхо. Стандартная метрика – Echo Return Loss Enhancement, сокращённо ERLE – это просто снижение уровня эха в децибелах, которое подавитель обеспечивает дополнительно к естественному ослаблению, уже создаваемому помещением.

Рабочий пример делает это наглядным. Допустим, голос дальней стороны доходит до вашего микрофона как эхо, уровень которого мы примем за 0 дБ. Подавитель вычитает своё предсказание, и оставшееся эхо измеряется в −40 дБ – то есть в десять тысяч раз слабее по мощности. ERLE – это разница:

ERLE = уровень эха до подавления − уровень эха после подавления
     = 0 дБ − (−40 дБ)
     = 40 дБ

Хорошо настроенный современный акустический эхоподавитель достигает примерно 35–45 дБ ERLE в устойчивых условиях одиночного разговора. Этого достаточно, чтобы опустить остаток эха ниже уровня обычного шума комнаты, где мозг перестаёт его замечать. Международная методика тестирования производительности эхоподавителей, ITU-T G.168, построена вокруг таких метрик; она написана для линейных эхоподавителей, но её философия измерения – прогнать подавитель заданными сигналами и проверить, что эхо подавлено на целевую величину, – это шаблон, которым пользуется вся отрасль.

Когда вычитания мало: подавитель остатка

Вот неудобная правда: один адаптивный фильтр почти никогда не устраняет всё эхо. Реальные динамики слегка искажают звук – вносят нелинейные эффекты, которые ни один линейный фильтр предсказать не может, ведь он способен моделировать только «эхо как задержанную и масштабированную копию опорного сигнала». Дешёвые динамики ноутбуков, громкоговорящие динамики телефонов и особенно Bluetooth-динамики создают искажения, которые фильтр воспроизвести не в силах. То, что остаётся после вычитания, называют остаточным эхом (residual echo).

Поэтому у каждого серьёзного подавителя есть вторая ступень – подавитель остаточного эха, иногда реализованный как нелинейный процессор (NLP). Там, где адаптивный фильтр вычитает, подавитель ослабляет – он приглушает громкость в те моменты и в тех частотных полосах, где, по его мнению, присутствует остаточное эхо, а вашего голоса нет. Представьте адаптивный фильтр как хирурга, удаляющего основную массу опухоли, а подавитель – как последующую терапию, зачищающую края. ITU-T G.168 прямо требует наличие нелинейной обработки в соответствующем эхоподавителе именно потому, что простое вычитание оставляет слышимый остаток.

Подавитель – это ещё и место, где он может навредить. Если он слишком агрессивно ослабляет сигнал, он срезает начало слов или делает голос «булькающим, как под водой». Настройка подавителя – это баланс между двумя противоположными целями: не пропустить эхо и не потерять голос собеседника рядом.

Проблема двойного разговора: режим отказа, который вы реально будете ловить

Теперь самое важное, что нужно понять об эхоподавлении, потому что это симптом, на который инженеры тратят больше всего времени. Всё описанное выше отлично работает, когда говорит только один человек за раз. Сложный случай – двойной разговор (double-talk): оба говорят одновременно.

Вспомните, как работает фильтр: он сравнивает своё предсказание с сигналом микрофона и подстраивает веса так, чтобы уменьшить ошибку. При одиночном разговоре в микрофоне – только эхо, поэтому «уменьшить ошибку» означает «лучше смоделировать эхо» – и это как раз то, что нужно. Но при двойном разговоре в микрофоне оказывается эхо плюс ваш голос. Если фильтр продолжит адаптироваться, он воспримет ваш голос как ошибку предсказания и начнёт менять веса, пытаясь подавить вас. Результат оказывается испорченным: фильтр расходится, эхо снова проникает в сигнал, и в следующий раз, когда заговорит только дальняя сторона, эхо вдруг становится громким – потому что фильтр обучился на шуме.

Решение – детектор двойного разговора, сокращённо DTD (double-talk detector). Его единственная задача – распознать, что говорят оба собеседника, и подать фильтру команду заморозиться: прекратить адаптацию, зафиксировать веса, переждать период двойного разговора на уже построенной модели акустической среды и возобновить обучение только после того, как говорящий на ближней стороне замолчит. Подавитель продолжает вычитать шум во время двойного разговора – он просто перестаёт обновлять своё предсказание.

Обнаружить двойной разговор сложнее, чем кажется, и история этой области во многом – история всё более совершенных детекторов. Классический метод – алгоритм Гайгеля (Geigel), который просто сравнивает уровень сигнала с микрофона с недавним уровнем опорного сигнала: если микрофон вдруг становится громче, чем можно объяснить отражением, значит, кто-то рядом говорит. Он дешёв и прост, но грубоват – исследования показывают, что он пропускает двойной разговор, когда голос говорящего не намного громче эха, и сбивается с толку от фонового шума. Современные детекторы используют нормализованную взаимную корреляцию (normalized cross-correlation) между опорным сигналом и сигналом ошибки – этот метод гораздо меньше зависит от точной силы эха и способен уловить двойной разговор, который алгоритм Гайгеля пропускает.

«Ловушка, простыми словами. Когда клиент говорит: «оно срезает начало моих слов всякий раз, когда собеседник тоже говорит» – это проблема детектора двойного разговора, а не сети. Детектор либо сработал слишком поздно (эхо просочилось), либо подавитель заглушил голос ближней стороны (ваши слова срезало). Это самая частая жалоба на эхо в продакшене, поэтому каждый голосовой продукт нужно тестировать с обоими собеседниками, намеренно говорящими наперебой, а не по очереди, как в вежливом диалоге.»
Рисунок 3. Три ситуации, которые подавитель должен обрабатывать. Фильтр может безопасно адаптироваться только при одиночном разговоре дальней стороны. При двойном разговоре детектор должен заморозить фильтр, иначе тот обучится на вашем голосе и испортит модель комнаты.

Как работает WebRTC: AEC3 простыми словами

Большинство браузерных и многие нативные голосовые приложения работают на одном и том же открытом коде – libwebrtc, – а его эхоподавитель называется AEC3 (третье поколение). Если вы участвовали в видеозвонке в Chrome, Edge или мобильном приложении на WebRTC, ваш микрофон обрабатывал AEC3. Полезно увидеть, как описанные выше компоненты работают в реальной системе, потому что эти названия постоянно встречаются в баг-репортах у каждого инженера.

AEC3 работает внутри Audio Processing Module (APM) – модуля предварительной обработки на стороне захвата, в который также входят шумоподавление и управление уровнем усиления. Полный аудиоконвейер WebRTC можно посмотреть в Аудиоконвейер WebRTC целиком; там мы подходим к блоку эха. Исходный код WebRTC описывает AEC3 как класс верхнего уровня, выполняющий четыре задачи: он принимает 10-миллисекундные аудиофреймы, разнесённые по частотным полосам, опционально применяет высокочастотный анти-гудящий фильтр, запускает низкоуровневое подавление эха на блоках по 64 отсчёта и частично компенсирует джиттер между моментом воспроизведения звука и его захвата. Последний пункт важнее, чем может показаться.

Сначала идёт оценка задержки. Прежде чем фильтр сможет что-то вычесть, AEC3 должен выровнять опорный сигнал и эхо во времени – то есть определить, насколько поздно эхо приходит по сравнению с моментом воспроизведения опорного сигнала. Эта задержка не фиксирована: она включает буфер воспроизведения, ЦАП, воздушный путь «динамик → микрофон», АЦП и буфер захвата. На телефонах она может колебаться примерно от 20 до 200 мс. AEC3 непрерывно оценивает эту задержку, кросс-коррелируя опорный и захваченный сигналы – сдвигая один относительно другого, чтобы найти такую задержку, при которой они лучше всего совпадают, – и передаёт это выравнивание фильтру. Ошибись с задержкой – и фильтр будет пытаться подавить эхо, опираясь на неправильный фрагмент опорного сигнала; тогда ничего не работает. Вот почему внезапная смена аудиомаршрута (например, вставка наушников посреди звонка) может вызвать полсекунды эха, пока оценщик задержки перестраивается.

Затем линейный адаптивный фильтр моделирует путь эха и вычитает свою оценку – ровно так, как описано выше, используя блочную обработку в частотной области для повышения скорости.

Затем подавитель остаточного эха ослабляет те искажения, которые фильтр не смог устранить – нелинейные искажения от дешёвых или громких динамиков, – используя модель, отражающую степень уверенности в наличии остаточного эха в каждой частотной полосе в каждый момент времени.

Всё это время логика, осведомлённая о двойном разговоре, решает, когда безопасно адаптировать фильтр и насколько сильно сжимать подавитель, чтобы речь ближней стороны сохранилась.

AEC3 также предоставляет крючок под названием статус утечки эха (echo leakage status): если какой-либо другой детектор обнаруживает просачивающееся эхо, он может пометить подавитель, чтобы тот среагировал. Архитектура намеренно модульна – контроль задержки, фильтр и подавитель являются отдельными компонентами, которые можно настраивать независимо, что и потребуется сделать на сложном устройстве.

Сравнение, которым можно пользоваться: что меняет сложность

Не все проблемы с эхом одинаковы. Таблица ниже объясняет, почему одни сценарии просты, а другие – сложны; она поможет при оценке, какие устройства должен поддерживать ваш продукт.

СитуацияПуть эхаСложность для подавителяЧто вы заметите
Гарнитура / наушники (проводные)Динамик запечатан у уха; пути к микрофону почти нетТривиально – гасить почти нечегоЧистый звук; AEC почти нечего делать
Ноутбук, умеренная громкостьКороткий стабильный воздушный путь; немного искаженийЛегко – фильтр быстро сходится и держитсяХорошо после доли секунды
Ноутбук, высокая громкостьГромче эхо, больше искажений динамикаУмеренно – больше остатка для подавителяИногда утечка на громких местах
Громкая связь в открытой комнатеДлинный гулкий путь; много отраженийСложно – длинный фильтр, медленная сходимостьЭхо при движении; срез при двойном разговоре
Bluetooth-динамик или гарнитураДлинная переменная задержка петли; искажение кодекаСложнее всего – оценка задержки всё время плывётПрерывистое эхо; детектор борется

Закономерность ясна: чем длиннее, громче, искажённее и непредсказуемее по задержке становится путь эха, тем тяжелее жизнь подавителя. Bluetooth – худший вариант по всем параметрам, поэтому практический совет для реальных продуктов прост: поощряйте использование наушников, но проектируйте с учётом дня, когда пользователь их забудет. Подробно случай Bluetooth и AirPods мы разбираем в Эхоподавление на громкой связи, Bluetooth и AirPods.

Где AEC находится относительно соседей

Эхоподавление не работает в одиночку. В цепочке обработки WebRTC оно используется в строго определённом порядке вместе с двумя «соседями», и этот порядок не случаен. Сначала высокочастотный фильтр убирает низкочастотный гул, чтобы подавитель эхо работал с более чистым сигналом. Затем AEC устраняет эхо. После этого шумоподавление выделяет ваш голос на фоне посторонних звуков – и оно должно идти после AEC, потому что попытка подавить шум, пока эхо ещё присутствует, искажает оценку уровня шума. Наконец, автоматический контроль усиления выравнивает громкость вашего голоса до стабильного уровня.

У каждого соседа есть подробный разбор: Автоматический контроль усиления (AGC): стабильный уровень голоса и Шумоподавление: классическое NS, RNNoise, Krisp, NVIDIA RTX Voice. Кодек, передающий очищенный голос дальше, описан в Opus: открытый кодек, съевший WebRTC. Вся цепочка существует, чтобы бороться с тремя врагами живого звонка – эхом, шумом и ненадёжной сетью, – и AEC отвечает за первое. Когда эхо и потеря пакетов смешиваются, их симптомы становятся неразличимыми; порядок диагностики описан в Диагностика проблем со звуком в продакшене: ранбук.

Где здесь Фора Софт

Мы интегрируем звук в реальном времени в видеоконференции, телемедицину, онлайн-обучение и лайв-шопинг с 2005 года, и эхо – первое, что каждый из этих продуктов должен решить правильно. Особенно в телемедицине: врач на громкой связи в кабинете, а пациент – за ноутбуком. Это классический сценарий «двойной разговор плюс длинный путь», который сбивает наивные настройки, и чистота звука здесь – разница между качественной консультацией и раздражённым повторным звонком. Наша работа – в основном выбор подходящего стека, грамотная настройка WebRTC Audio Processing Module под класс устройства, целенаправленное тестирование при двойном разговоре и использовании Bluetooth, а также понимание, когда проблема в подавителе эха, а когда – в сети. Мы не переписываем AEC3; мы заставляем его корректно работать на тех неидеальных устройствах, которые реально используют ваши пользователи.

Главное

  • Акустическое эхо – это звук, исходящий от динамика, который снова попадает в микрофон и возвращается на дальнюю сторону с задержкой.
  • AEC вычитает предсказанное эхо, построенное на основе опорного сигнала, оставляя только голос пользователя на ближней стороне.
  • Адаптивный фильтр (обычно NLMS) обучается характеристикам помещения по циклу «предсказать – проверить – скорректировать» тысячи раз в секунду.
  • Детектор двойного разговора должен приостанавливать работу фильтра, когда говорят обе стороны, иначе он испортит модель акустической среды.
  • Подавитель остаточного эха устраняет эхо, которое фильтр не смог полностью вычесть; перенастройка может привести к искажению вашей речи.
  • AEC3 в WebRTC сначала оценивает задержку; плавающая задержка в Bluetooth – самый сложный случай из встречающихся на практике.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.