我目前正在创建一个应用程序,它使用高频声音向其他设备发出信号。
(发射器):设备会产生大约20khz的短暂声音。
(接收方):另一台设备将在距离发射机一小段距离处收听此频率的声音(约10米)设备接收来自麦克风的音频数据
背景噪音相当大,从大约0到10khz(大约是人类语音范围)不等,并且会由一小群人制作。
我需要接收设备能够检测到与噪声分开的20khz声音,
并知道收到它的时间。
使用适当的算法,库或更好的C或
代码提供帮助Objc检测这种高频声音将不胜感激。
答案 0 :(得分:3)
20 kHz可能正在推动它,因为(a)大多数声卡具有18 - 20 kHz的低通(抗反射)滤波器和(b)大多数扬声器和麦克风在20 kHz时往往具有较差的响应。你可能想考虑说15 kHz?
实际检测部分应该很简单 - 只需在音频频率上实现窄带通滤波器,整流输出和低通滤波器(例如10 Hz)。
答案 1 :(得分:0)
您可能需要研究FFT(快速傅立叶变换)。该算法允许您分析波形并将其转换为频谱以进行进一步分析。
答案 2 :(得分:0)
如果是Mac OS或iOS,我会开始研究Core Audio的音频单元。
1这是Apple的Core Audio Overview。
答案 3 :(得分:0)
使用iphone扬声器时,高频率的声音根本无法传播。