我正在尝试创建一个iOS应用,它会在检测到拍手声时执行操作。
我尝试过的事情:
1)我的第一种方法是使用AVAudioRecorder简单地测量整体功率。这工作正常,但它可以通过说话太大声,其他噪音等来引发,所以我决定采取不同的方法。
2)然后我实现了一些使用FFT的代码来获取麦克风的实时流式音频的频率和幅度。我发现拍击尖峰一般位于13kHZ-20kHZ范围内,而大多数说话频率都低得多。然后我在这个频率范围内实现了一个简单的阈值保持,这个工作正常,但其他声音可以将其关闭。例如,将铅笔放在我手机旁边的桌子上就可以通过这个阈值并计算为拍手。
3)然后我尝试将此频率范围分成几百个二进制位,然后获得足够的数据,当声音通过thresh-hold我的应用程序将计算Z-Score(概率来自如果Z-Score是好的,那么那可以作为一个鼓掌。这根本不起作用,因为一些拍手没有被识别,一些其他声音被识别。
图形:
为了帮助我了解如何检测拍手,我在Excel中创建了这个图表(每个图表有大约800个数据点),它涵盖了13kHZ-21kHZ范围:
我现在的位置:
即使在所有这些之后,我仍然没有看到如何识别拍手与其他声音。 非常感谢任何帮助!