首页 文章

在iPhone上播放歌曲时通过麦克风检测噪音

提问于
浏览
13

我正在制作一个应该播放简单音轨的应用程序,如果在播放曲目时附近有任何噪音,请告诉我 . 这是通过在iPhone的扬声器上播放歌曲时从麦克风进行实时录制来完成的 . 任何不属于音乐播放的声音都被定义为噪音 .

实现此功能的最简单方法是什么?

我在网上进行了相当广泛的研究,但是我找不到任何能指出这个特定问题的解决方案的东西 . 虽然它可能是我阅读的不同技术的组合,但最终将成为解决方案 .

Things I've already implemented
同时播放歌曲和录制音频 .

Things I've tried
注意:由于我们已经尝试过,因此我添加了以下部分 . 但我只是尝试了一些东西 .

我攻击了aurioTouch2示例应用程序:我所做的是回放一次歌曲并记录快速傅里叶变换值(以非常低的采样率保持记录数据的数量较低) . 然后,当再次播放曲目时,我基本上计算(每个时间步长)使用实时回放fft数据和记录的fft数据构建的输出图形之间的相关系数(所以当你将应用程序放入时,你会看到'squiggly'行fft模式) .
这'sort of'有效 . 当房间内有过多的声音/噪音时,相关系数明显较低,但并不认为这可能不是最好的方法 .

有人认为这是可能的吗?如果是这样,最好的方法是什么?
请询问您是否需要更多说明!

2 回答

  • 1

    最后我们决定不在应用程序中执行此操作 . 我有一个演示工作,我将首先对歌曲进行校准,收集一组最主要的频率,对环境室噪声做同样的事情,并在歌曲播放时在决策过程中使用这些频率 . 它工作得很好,虽然我觉得它仍然需要大量的调整 . 凭借我对音频相关编程的有限知识,这是我能做的最好的:)

  • 1

    你只想知道,环境中有多少噪音,你有两个信号,原始信号和记录信号?那么你的解决方案就完美了 . 您需要同步信号并找到一些数字,这会给您相似性 . 您甚至可以避免fft并使用原始信号(在正确的演示中) .

    自动校正是一种同步信号的好方法 . Autocorellation-index是一个给出相似性的数字 .

    当然,如果音量较低,则噪音(相对于音乐)更响亮并且具有更高的影响力 . 由于您应该能够检测音量,因此您应该能够添加一些校正因子 . 但由于这是一个“自然”的问题,我想每个算法都会遇到这个问题 .

    另一种解决方案是从记录信号中减去原始信号,然后你应该将噪声作为两个信号的差值 . 然后你也有噪音的力量......

相关问题