xvr 0 Posted August 7, 2021 · Report post Господа, есть такая задача: На расстоянии 10 см друг от друга установлены динамик и микрофон (диаграммы направленности обоих перпендикулярны линии, их соединяющей и направленны в одну сторону) Требуется в сигнале с микрофона подавить сигнал динамика (по сути это устройство громкой связи). Сигнал на динамике известен. Пытался что нибудь по этому поводу найти в Интернете, но не могу сформулировать запрос - это не local feedback cancellation, ни noice cancellation. Не подскажете, как это хоть называется? А если сразу в алгоритм ткнёте, совсем хорошо будет. Возможно Адаптивный фильтр поможет? Ещё момент - всё это крутится будет на на DSP, а на ESP32, так что алгоритм желательно попроще. И ещё момент - можно поставить ещё один микрофон (между динамиком и исходным микрофоном), если это кардинально поможет выделить полезный сигнал. Quote Ответить с цитированием Share this post Link to post Share on other sites
варп 0 Posted August 7, 2021 · Report post 1 час назад, xvr сказал: но не могу сформулировать запрос Может вести поиск в направлении дуплексной связи? В громкоговорящей связи эти проблемы решают уже лет сто... https://www.multicom.ru/ats-likbez/tipy-svyazi/ Quote Ответить с цитированием Share this post Link to post Share on other sites
_4afc_ 0 Posted August 7, 2021 · Report post 1 hour ago, xvr said: На расстоянии 10 см друг от друга установлены динамик и микрофон (диаграммы направленности обоих перпендикулярны линии, их соединяющей и направленны в одну сторону) Требуется в сигнале с микрофона подавить сигнал динамика (по сути это устройство громкой связи). Сигнал на динамике известен. Ещё момент - всё это крутится будет на на DSP, а на ESP32, так что алгоритм желательно попроще. И ещё момент - можно поставить ещё один микрофон (между динамиком и исходным микрофоном), если это кардинально поможет выделить полезный сигнал. Поставить 2 микрофона у рта говорящего. Один ближе на 1см ко рту, другой дальше от рта. Передавать разницу между этими микрофонами, вычитать можно аналогово. Количество динамиков вокруг и их сигнал - без разницы. Quote Ответить с цитированием Share this post Link to post Share on other sites
x893 0 Posted August 7, 2021 · Report post echo cancellation Quote Ответить с цитированием Share this post Link to post Share on other sites
варп 0 Posted August 7, 2021 · Report post 1 час назад, _4afc_ сказал: Поставить 2 микрофона у рта говорящего Увы, мне кажется - всё не так просто... Чем акустический сигнал изо рта отличается от акустического сигнала из динамика? Фактически - ничем... Как микрофоны должны эти сигналы различать? ------------ Моя фантазия на тему - если в сигнал приходящий от абонента (сигнал динамика) подмешать какие-нибудь метки (пример - непрерывную несущую с частотой выше звукового диапазона слышимого человеком), то у системы управления и обработки сигналов появится возможность физически отличать исходящий и приходящий сигналы. Пока скажем так - ну, может быть появится... :) Quote Ответить с цитированием Share this post Link to post Share on other sites
_4afc_ 0 Posted August 7, 2021 · Report post 23 minutes ago, варп said: Увы, мне кажется - всё не так просто... Чем акустический сигнал изо рта отличается от акустического сигнала из динамика? Фактически - ничем... Как микрофоны должны эти сигналы различать? Уровень акустического сигнала в ближней зоне затухает квадратично от расстояния, в дальней линейно. Зона определяется длиной волны. Для двух микрофонов расположенных рядом звук от рта будет приходить с разной громкостью, а от динамика с одинаковой. Quote Ответить с цитированием Share this post Link to post Share on other sites
xvr 0 Posted August 7, 2021 · Report post 2 hours ago, варп said: В громкоговорящей связи эти проблемы решают уже лет сто... https://www.multicom.ru/ats-likbez/tipy-svyazi/ Это да. Увы на сайте одна реклама :( (Не считая ликбеза по видам связи, что мало чем поможет). Но поищу ... 2 hours ago, _4afc_ said: Один ближе на 1см ко рту, другой дальше от рта. Такая геометрия увы невозможна - прибор (с динамиком и микрофоном) плоский и расположен параллельно говорящему, вынести микрофон некуда 1 hour ago, x893 said: echo cancellation Тоже не совсем то, тут эха нет. Тут независимые каналы. Но за наводку спасибо, поищу что нибудь в этом направлении тоже 31 minutes ago, варп said: если в сигнал приходящий от абонента (сигнал динамика) подмешать какие-нибудь метки Метки выделить можно, а вот с чем вместе они шли - вряд ли, этот сигнал ничем не будет отличаться от остальных. Можно попробовать сделать компенсацию. Сигнал для динамика задержать, пропустить через фильтр (который будет обратным к АЧХ динамика + микрофона) и вычесть из микрофонного. Для настройки фильтра и задержки сделать специальный режим калибровки (это можно): Откалибровать задержку - динамик воспроизводит пачки импульсов, микрофон принимает. Вычисляем задержку. Настраиваем фильтр - динамик воспроизводит белый шум, крутим настройки фильтра, минимизируя энергию принятого сигнала (после фильтра) Увы, это всё похоже довольно затратно по вычислениям и я не уверен, что будет работать NB. В процессе работы можно динамически подстраивать задержку по изменению внешней температуры, что бы не проводить калибровку постоянно. Quote Ответить с цитированием Share this post Link to post Share on other sites
варп 0 Posted August 7, 2021 · Report post 1 час назад, xvr сказал: Увы, это всё похоже довольно затратно по вычислениям и я не уверен, что будет работать Тоже думаю, что у этой задачи нет простого решения. Но она очень актуальна, и её уже решали так или иначе... Решать её с нуля очень затратно и вряд ли целесообразно... - надо искать готовые решения... ------------- Из личного опыта - очень давно - один большой начальник, разговаривая по громкой связи, сам говорил очень тихо, и постоянно жаловался, что его никто не слышит... Весь мозг нам вынес... :) Quote Ответить с цитированием Share this post Link to post Share on other sites
blackfin 0 Posted August 7, 2021 · Report post 5 hours ago, xvr said: Возможно Адаптивный фильтр поможет? Не совсем то, но возможно, пригодится: Adaptively Cancelling Server Fan Noise Quote Ответить с цитированием Share this post Link to post Share on other sites
rkit 0 Posted August 7, 2021 · Report post 6 hours ago, xvr said: Требуется в сигнале с микрофона подавить сигнал динамика (по сути это устройство громкой связи). Сигнал на динамике известен. Пытался что нибудь по этому поводу найти в Интернете, но не могу сформулировать запрос - это не local feedback cancellation, ни noice cancellation. Не подскажете, как это хоть называется? А если сразу в алгоритм ткнёте, совсем хорошо будет. Эээм, вычитание? Ничего больше тут не надо. Quote Ответить с цитированием Share this post Link to post Share on other sites
enclis_ 0 Posted August 7, 2021 · Report post 5 hours ago, xvr said: Тоже не совсем то, тут эха нет. Если эха нет, то тогда просто вычитание. Quote Ответить с цитированием Share this post Link to post Share on other sites
xvr 0 Posted August 8, 2021 · Report post Я нашёл как это называется: AEC - Acoustic Echo Cancellation (или AES - Acoustic Echo Suppression) Делается на основе Адаптивного фильтра. Ещё к AEC в обязательном порядке прилагается DTD - Double Talk Detection (что бы система на пошла в разнос когда одновременно говорят с 2х сторон). Нашёл несколько статей (в том числе с полным листингом алгоритмов в Матлабе). Есть реализации для DSP. В частности для AD SigmaDSP (но они хотят денег за лицензию, причём не просто денег, а отчислений за каждое устройство, где они используются) - https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/adialgorithms/aec Кстати, здесь была приведена глубина FIR фильтра - 640 (в другой статье - около 1000). Боюсь, что ESP32 на одном таком фильтре загнётся :( Есть готовый чип для звуковой обработки (от XMOS) - XVF3100 (VocalFusion серия), но он один стоит денег (около 1000р на али). И корпус у него не очень подходящий для ручной пайки :((( https://www.xmos.ai/vocalfusion-voice-interfaces/#3510 Есть нечто у китайцев на основе WS9623 (с разными суффиксам). Готовая BT гарнитура с AEC и прочим. Готовая плата с ним + усилитель + 2 микрофона на Али стоит около 400р, что очень привлекательно, но интерфейс только BT :( Есть готовая плата AEC (на том же ali) за 1500р, но у неё аналоговый микрофон (хотел применить I2S) и непонятная м/сх (наименование стёрто, в сопроводительном тесте названа digitalDSPEcho процессором) - https://www.aliexpress.com/item/4000749444769.html?spm=a2g0s.8937460.0.0.18b02e0eKdke2X Документация отсутствует (в лучших традициях) Копаю дальше Acoustic Echo Cancellation.pdf Acoustic Echo Cancellation and Doubletalk Detection Using Estimated Loudspeaker Impulse Responses.pdf Acoustic Feedback Cancellation For Public Address Systems.pdf Quote Ответить с цитированием Share this post Link to post Share on other sites
petrov 0 Posted August 8, 2021 · Report post xvr Кстати, здесь была приведена глубина FIR фильтра - 640 (в другой статье - около 1000). Боюсь, что ESP32 на одном таком фильтре загнётся :( Длинные адаптивные фильтры не делают в лоб в виде обычного FIR фильтра. Например в частотной области настраивают, банк полосовых фильтров реализуется с помощью быстрых алгоритмов полифазной фильтрации и БПФ, экономия в вычисления достигается за счёт децимации(блочной обработки с перекрытием), плюс сам адаптивный фильтр настраивается быстрее за счёт ортогональности полосовых фильтров. Quote Ответить с цитированием Share this post Link to post Share on other sites
xvr 0 Posted August 9, 2021 · Report post On 8/8/2021 at 2:33 PM, petrov said: Длинные адаптивные фильтры не делают в лоб в виде обычного FIR фильтра. Очень надеюсь. Нашёл в ESP32 реализацию AEC и прочей обработки (сорцов нет, одни *.a). Попробую, что получится Quote Ответить с цитированием Share this post Link to post Share on other sites
2expres 0 Posted August 23, 2021 · Report post On 8/7/2021 at 9:24 AM, xvr said: Требуется в сигнале с микрофона подавить сигнал динамика (по сути это устройство громкой связи). Много лет назад произведено миллионы телефонных аппаратов с громкой связью на MC34118 (ЭКР1436ХА2). В корпусе ТА стоит динамик и микрофон практически рядом. Эта микросхема работает не с сигналами, а с уровнями сигналов, что значительно упростит цифровую обработку. Можно быстро спаять макет с этой микросхемой, проверить подходит ли такой алгоритм по качеству, а затем реализовать на процессоре то, что выполняет данная микросхема. Проверять необходимо с разными микрофонами и динамиками. Микрофоны как правило имеют разброс по чувствительности до двух раз в одной партии и неравномерную частотную характеристику. В динамиках разброс меньше, но тоже есть. Quote Ответить с цитированием Share this post Link to post Share on other sites