3

我正在尝试构建一个使用 Android 检测手枪射击的小工具。这是手枪射击者训练辅助工具的一部分,它讲述了射击是如何及时分布的,我使用 HTC 纹身进行测试。

我使用 MediaRecorder 及其 getMaxAmplitude 方法在最后 1/100 秒内获得最高幅度,但它没有按预期工作;语音给我的 getMaxAmplitude 值在 0 到大约 25000 的范围内,而手枪射击(或喊叫!)仅达到大约 15000。采样频率为 8kHz 时,应该有一些具有相当高水平的样本。

有谁知道这些东西是如何工作的?在注册最大幅度之前是否应用了过滤器。如果有,是硬件还是软件?

谢谢,/乔治

4

4 回答 4

0

听起来你想出了你的agc问题。进一步的建议:我不确定 FFT 是否适合这项工作。使用滑动功率估计器可能会有更好的检测和更低的 CPU 使用率。

例如信号 => 平方 => 移动平均 => 峰值检测

以上所有内容都可以使用定点数学非常有效地实现,这非常适合移动 android 平台。

您可以通过搜索“Parseval 定理”和“CIC 滤波器”(级联积分梳)找到更多信息

于 2010-03-20T14:25:03.123 回答
0

回复晚了非常抱歉; 在我开始寻找不同的问题之前,我没有看到这个问题......

我已经启动了一个应用程序来做我认为你正在尝试的事情。这是一个基于音频的单圈计时器(用于开始/停止录制的按钮,以及用于单圈设置的响亮的音频噪音)。它还没有完成,但可能会为您提供一个不错的入门基础。

现在,它允许您监控来自麦克风的信号音量,并设置环境噪声量。它也使用新的 BSD 许可证,因此请随时在此处查看代码: http ://code.google.com/p/audio-timer/ 。它设置为使用 1.5 API 以包含尽可能多的设备。

它还没有完成,因为它有两个主要问题:

  1. 由于请求的频率不受支持,音频捕获当前不适用于模拟设备
  2. 计时器功能还不起作用 - 专注于首先获取音频捕获。

我正在研究频率支持,但 Android 似乎没有办法找出支持哪些频率,而无需对每个设备进行反复试验。

我的本地开发机器上还有一些额外的代码来创建列表视图项目的布局以显示“圈”信息。虽然被频率问题所困扰。但是由于显示和音频捕获已经差不多完成了,使用系统时间来填写时序信息的显示值应该是比较简单的,然后添加导出数据表的能力应该不会太难。 SD 卡上的 CSV。

如果你想加入这个项目,或者有任何问题,请告诉我。

于 2011-05-30T17:00:28.163 回答
0

似乎有一个 AGC(自动增益控制)滤波器到位。您还应该能够通过其频率特性来识别镜头。我希望它会出现在大部分可听频谱中,但是请使用频谱分析仪(应用市场上有一些,例如 SpectralView)并尝试通过其频率“签名”和幅度来识别事件。如果你拍手,你会得到什么最大振幅?你也可以试着用一些东西来遮住手机,比如用几层布来消音

于 2010-03-19T13:18:38.120 回答
0

似乎 AGC 在媒体记录器中。当我使用 AudioRecord 时,我可以使用振幅检测镜头,即使它有时会对镜头以外的声音做出反应。这不是问题,因为射击者在射击时通常不会发出任何其他噪音。但我也会做一些 FFT 以使其完美:-)

于 2010-03-20T09:51:06.423 回答