Какой алгоритм используется для шумоподавления в наушниках? - PullRequest
19 голосов
/ 28 июня 2011

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

1 Ответ

34 голосов
/ 28 июня 2011

из Этот сайт

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

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

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

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

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

enter image description here

и

enter image description here

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

enter image description here

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

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

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

enter image description here

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

enter image description here

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

enter image description here

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


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

Первое:

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

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

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

enter image description here

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

: \ 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

Второе:

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

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

...