Какой алгоритм используется для шумоподавления в наушниках?

Я хочу программировать программное обеспечение для шумоподавления в режиме реального времени, так же, как это происходит в наушниках с активным шумоподавлением. Есть ли открытые алгоритмы или, по крайней мере, научные статьи по этому поводу? Поиск Google нашел информацию только о шумоподавлении не в реальном времени.

1 ответ

Решение

С этого сайта

Наушники с активным шумоподавлением в дополнение ко всем обычным схемам наушников, имеют микрофон и дополнительные специальные схемы. На базовом уровне микрофон наушников улавливает окружающий шум вокруг вас и передает его в специальные схемы. Специальная схема интерпретирует звуки и имитирует их в обратной (противоположной) манере. Инвертированный звук, который он издает, передается через динамики наушников и подавляет окружающий шум вокруг вас.

Все это основано на интерференции звуковых волн. Когда мешают 2 волны противоположных фаз, в результате не будет звука. (это работает и со светом.)

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

Для синусоидальной системы:

Давайте возьмем 2 волны:

а также

Мы хотим выразить полученную волну как:

Учитывая A1, вы хотите найти A2 такой, что A0 = 0

Это означает, что для Phi1 нужно найти Phi2 такой, что A0 = 0

Вы можете доказать, что:

И, решив A0 = 0, вы получите частоту волны, которую нужно создать, чтобы устранить шум. Это называется деструктивными помехами.

Звуковые волны не в одном измерении... поэтому вы просто получите разрушительные помехи в одном направлении:

Теперь вам просто нужно найти кое-что из звуковых сигналов...


Я постараюсь ответить на ваш комментарий.

Первый:

2D проблема не намного сложнее, чем 1D.

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

Вы должны записать это на оси, оси Y (может быть полезно использовать полярные координаты)

и вы сможете получить амплитуду в каждой точке на плане, используя простые формулы тригонометрии, такие как:

: \ sin (A + B) = \ sin A \ cdot \ cos B + \ cos A \ cdot \ sin B

: \ cos (A + B) = \ cos A \ cdot \ cos B - \ sin A \ cdot \ sin B

: \ sin (A - B) = \ sin A \ cdot \ cos B - \ cos A \ cdot \ sin B

: \ cos (A - B) = \ cos A \ cdot \ cos B + \ sin A \ cdot \ sin B

Во- вторых:

Все задержки смоделированы в "Фи" вашего разрушительного источника. Можно просто адаптировать Рассчитанный Фи, чтобы он учитывал задержку.

Вам может потребоваться более конкретная информация о звуке, так как моя информация очень теоретическая для любых типов волн.

Другие вопросы по тегам