Я создал модульную систему, которая передает поток через UDP между чем угодно с микрофоном & и телефоном android. если микрофон и динамик расположены не так далеко друг от друга, все, что записано на телефоне, будет воспроизводиться на динамике и в то же время записываться и отправляться обратно на телефон, тем самым создавая неизбежное эхо.Самый эффективный способ остановить неизбежное эхо
До сих пор проблема в том, что микрофон записывается во время воспроизведения, поэтому, если, например, для остановки записи, когда есть что-то важное, проблема будет решена, поэтому проблема будет решена. это достигается либо нажатием кнопки «говорить» (что не очень подходит для ситуации типа телефонного звонка), либо алгоритмом, который измеряет максимальную амплитуду и решает, что говорится о чем-то важном или о простом шуме. последний более прост в использовании, но довольно подвержен вине в шумных средах.
извините за долгую лекцию, но я хотел бы знать, есть ли у вас более эффективный/безотказный способ решить эту проблему.
P.S. у меня нет достаточной вычислительной мощности на аппаратной стороне для удаления эха в цифровом виде, и я не знаю, как это сделать. я уверен, что это возможно сделать с каким-то аналоговым фильтром, но я даже не знаю, как это сделать.
EDIT: Благодаря mattm Теперь я знаю, что мне нужно что-то вроде AEC, хотя оно может быть не самым эффективным или даже практичным.
Я использую модуль WIFI-UART (HLK-RM04), и у него есть огромная проблема. есть очень значительная задержка, когда модуль преобразует 8-битные образцы аудио в IP-датаграммы. по какой-то причине эта задержка не существует, когда она распаковывает дейтаграммы, отправленные с android =>, чтобы получить образец от android, требуется ~ 50 мс, но для получения одного из микрофона требуется ~ 650 мс. так как я использую частоту дискретизации 7200, что означает, что алгоритм AEC должен работать с набором данных не менее 4680 выборок в секунду, чтобы сохранить его в режиме реального времени.
В настоящее время я подключил его к домофонной системе, поэтому не может использовать гарнитуру. опыт на самом деле плохой на стороне Android, но AEC может быть слишком много, чтобы справиться, даже для телефона Android, не говоря уже о 8-битном UC. я уточню вопрос, чтобы выяснить, почему – M47