【问题标题】:Recognize knock (clap) by sound in android在android中通过声音识别敲击(拍手)
【发布时间】:2015-02-09 18:40:39
【问题描述】:

在我的任务中,我们的 android 移动应用程序需要识别敲击声(当敲击移动设备表面时)才能打开应用程序。

我尝试了一些方法,但它只能识别大约 80% 的敲门声(有时我敲手机但它不返回敲门声),有时它会将其他声音识别为敲门声,例如元音“a”。

这是我们使用的 3 种方法 -

1.通过高通滤波器识别:

2。使用从 13kHz 到 18kHz 的幅度总和 (refer this article):

3.使用库 (refer link)

所有这些努力只能识别大约 80% 的敲击声,有时它会将其他声音识别为敲击声。

我不确定敲击的特征以及如何准确识别敲击(当我准确地拍手机时它会识别敲击)。非常感谢任何帮助!

【问题讨论】:

标签: android audio signal-processing


【解决方案1】:
  1. 通过高通滤波器识别

与敲门无关

  1. 使用从 13kHz 到 18kHz 的幅度总和(请参阅本文):

这是一个合理的方向,但您需要添加更多特征,尤其是附近其他帧中的能量。

使用库

不相关

您的所有方法都不起作用,因为它们与敲击属性无关。要正确检测爆震,您需要弄清楚它与其他声音的区别:

  1. 敲门的时间很短
  2. 爆震频率位于频谱的较高部分。

所以你需要实现以下算法:

  • 在帧上分割音频
  • 为每一帧创建 FFT 变换
  • 分析每个帧和相邻帧的 FFT 变换,使 确保以下几点:
    • 框架的光谱能量集中在上部
    • 帧的能量明显高于相邻帧的能量

一旦您看到这两个特征,您就可以发出关于检测到爆震的信号。

参考见爆震谱图:

这里还介绍了一个相关的算法和解释:

Given an audio stream, find when a door slams (sound pressure level calculation?)

如果您想进一步区分声音,例如识别器的咔嗒声和拍手声,那么您可能需要为频谱实现分类器。您将需要收集更多关于拍手和不同声音的示例,并在 FFT 值上应用机器学习工具包。 SVM 应该可以很好地完成这项任务。

【讨论】:

  • 能分享一下敲手机声音的特点吗?你的意思是 KNOCK - PREV > THRESHOLD && NEXT - KNOCK
  • 您可以从几个测试样本中自己找出它们
猜你喜欢
  • 2010-10-26
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多