根据logging的声音库识别声音

我正在尝试创build一个iOS应用程序,当它检测到拍手声音时将执行一个操作。

我试过的东西:

1)我的第一个方法是简单地使用AVAudioRecorder来测量整体功率。 这工作正常,但它可以通过说太大声,其他噪音等,所以我决定采取不同的做法。

2)然后,我实现了一些使用FFT的代码来获取来自麦克风的实时stream式audio的频率和大小。 我发现,拍手秒杀通常驻留在13kHZ-20kHZ的范围内,而大部分的谈话驻留在很低的频率。 然后,我在这个频率范围内实现了一个简单的阈值,这个工作正常,但其他的声音可以把它closures。 例如,在我手机旁边的桌子上放一支铅笔将通过这个阈值并算作拍手。

3)然后,我尝试将这个频率范围分成几百个分档,然后获取足够的数据,当声音通过时,我的应用程序将计算Z分数(统计的概率),如果Z分数是好的,那么可以作为一个拍手。 这根本不起作用,因为有些拍手不被识别,还有一些其他的声音被识别出来。

graphics:

为了帮助我理解如何检测拍子,我在Excel中创build了这个图表(每个图表有大约800个数据点),它涵盖了13kHZ-21kHZ的范围: 拍手图

我现在在哪里:

即使在所有这些之后,我仍然没有看到如何识别拍手与其他声音。 任何帮助是极大的赞赏!