Обратная связь микрофона и динамика — можно ли избавиться?

Доброе утро, сообщество!


Проблема с обратной связью. Не сочтите за рекламу, но придётся 2 слова сказать о приложении чтобы объяснить суть вопроса — это 3D-футбольная дуделка, т.е. пользователь дует в микрофон девайса, и динамик играет звук футбольной турбки. Также на фоне играется звук шумного стадиона. Пока готово под айфон, но та же проблема замечена и в андроид-версии, которую очень скоро заливать на Google Play, так что очень-очень прошу помощи!


Если положить телефон на руку таким образом, чтобы ладонь «накрывала» и микрофон, и динамик, появляется положительная обратная связь, и я хоть и инженер по автоматике, не могу понять как от неё избавиться без физической отрицательной обратной связи. Процессор нельзя сильно перегружать, т.к. он должен одновременно показывать камеру, рисовать 3D-модель, читать сигнал микрофона 100 раз в секунду и играть звук.


Может быть кто-нибудь знает какие-нибудь библиотеки на С/С++, которые можно использовать для решения этой проблемы? Нет времени заниматься исследованием в данной области с нуля. Может у кого-то была похожая проблема?
  • Вопрос задан
  • 5404 просмотра
Пригласить эксперта
Ответы на вопрос 4
@rPman
Если я верно понимаю технологии шумоподавления, то с оборудованием, которое предоставлено в любом сотовом, это невозможно (в общем случае), там нужна серия микрофонов (матрица).

Фильтруйте по частоте, но еще лучше не выдавайте напрямую звук с микрофона, а выявляйте по 'шаблонам' и выдавайте чистую запись и т.п.
Ответ написан
kamlay
@kamlay
Сдвиньте сигнал на выходе относительно входа на несколько десятков герц. Не знаю как это сделать математически, насколько сложно. Но приборы на этом принципе работают в концертной практике.
Ответ написан
bagyr
@bagyr
На практике это делается адаптивными фильтрами. LMS прост придельно и на голосе работает вполне.
С цифровыми фильтрами тоже чего-то темните, нагуглите любую реализацию фильтра Чебышева и поиграйтесь, не бывает там таких задержек.
Ответ написан
Комментировать
@kostyl
Инвертируйте то, что воспроизводите и сложите с тем, что пишете, лишнее вычтется…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы