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

标签 ios iphone audio fft noise

我正在制作一个应用程序,它应该播放一个简单的音轨,并在播放音轨时让我知道附近是否有任何噪音。这是通过在 iPhone 的扬声器上播放歌曲时从麦克风进行现场录音来完成的。任何不属于音乐播放的声音都被定义为噪音。

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

我已经在网上进行了相当广泛的研究,但我一直无法找到任何指向我解决这个特定问题的方法。虽然这可能是我读到的不同技术的组合,但最终将成为解决方案。

我已经实现的事情
同时播放歌曲和录制音频。

我尝试过的事情
注意:由于我们被鼓励添加我们已经尝试过的内容,因此我添加了以下部分。但我绝不是说这是解决问题的正确方法,这只是我尝试过的方法。

我破解了 aurioTouch2 示例应用程序:我所做的是播放一次歌曲并记录快速傅立叶变换值(以相当低的采样率以保持较低的记录数据量)。然后当再次播放轨道时,我基本上会计算(每个时间步长)使用实时播放 fft 数据构建的输出图与记录的 fft 数据之间的相关系数(所以当你把应用程序处于 fft 模式)。
这种“有点”有效。当房间里有过多的声音/噪音时,相关系数明显较低,但它不是很敏感,并且还取决于记录 fft 数据时使用的音量级别。最后我认为这可能不是最好的方法。

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

最佳答案

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

自相关是同步信号的好方法。 自相关指数是一个给你相似度的数字。

当然,如果音量越低,噪音(相对于音乐)就越大,影响也越大。由于您应该能够检测到体积,因此您应该能够添加一些校正因子。但由于这是一个“自然”问题,我猜每个算法都会有这个问题。

另一种解决方案是从记录的信号中减去原始信号,然后您应该得到噪声作为两个信号的差异。那你也有噪音的力量……

关于ios - 在 iPhone 上播放歌曲时通过麦克风检测噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993844/

相关文章:

ios - 自2012年1月以来的Facebook和iOS登录错误-即使使用ShareKit或SDK

iphone - COCOS2D : ScrollView inside a CCScene blocks animation

audio - 如何根据频率转换arduino数字输出

c++ - 在一个项目中链接 2 个不同的标准 c++ 库是否安全

ios - AVFoundation 旋转屏幕 - Obj C

objective-c - JSONkit 排序问题

iphone - 使用 Alamofire 检索图像时遇到问题,有些图像加载,有些则不加载 (SWIFT)

ios - 在团队中将应用程序提交到 iTunes connect

linux - 哪个版本的 linux 支持 Dolby Advanced Audio v2?

c++ - 如何开始用 C++ 编写音乐可视化工具?