Я создаю приложение, которое должно воспроизводить простую звуковую дорожку и сообщать мне, есть ли какой-либо шум поблизости, пока трек играет. Это делается путем записи в реальном времени с микрофона, когда песня воспроизводится на громкоговорителе iPhone. Любой звук, который не является частью воспроизведения музыки, определяется как шум.
Каким будет самый простой способ реализовать эту функциональность?
Я исследовал его довольно широко в Интернете, но я не смог найти ничего, что указывало бы мне на решение этой конкретной проблемы. Хотя это может быть комбинация различных техник, которые я читал о том, что в конечном итоге это будет решение.
Вещи, которые я уже реализовал
Воспроизведение песни и запись звука одновременно.
Что я пробовал
ПРИМЕЧАНИЕ. Поскольку нам предлагается добавить то, что мы уже пробовали, я добавлю следующую часть. Но я ни в коем случае не говорю, что это правильный способ решить проблему, это просто то, что я пробовал.
Я взломал образец приложения aurioTouch2: то, что я сделал, это воспроизведение песни один раз и запись быстрых значений преобразования Фурье (при довольно низкой частоте дискретизации, чтобы поддерживать низкий уровень записанных данных). Затем, когда трек был воспроизведен снова, я бы в основном вычислил (за один временной интервал) коэффициент корреляции между выходными графиками, которые были построены с использованием живых данных fft и записанных данных fft (так что "squiggly" линии, которые вы видите, когда вы ставите приложение в режиме fft).
Этот "вид" работает. Коэффициент корреляции явно ниже, когда избыток звука/шума находится в комнате, но он не очень чувствителен и также зависит от уровня громкости, который использовался при записи данных fft. В конце концов, я думаю, что это не лучший подход.
Кто-нибудь думает, что это возможно? Если да, то какой будет лучший подход?
Пожалуйста, спросите, нужно ли вам больше разъяснений!