我正在尝试构建一个使用Android检测手枪镜头的小工具。它是手枪射手训练辅助工具的一部分,可以告诉他们射击是如何及时分配的,我使用HTC Tattoo进行测试。
我使用MediaRecorder及其getMaxAmplitude方法在过去的1/100秒内获得最高幅度,但它不能按预期工作;语音给我从getMaxAmplitude的值在0到约25000范围内,而手枪射击(或喊叫!)只达到约15000.采样频率为8kHz时,应该有一些具有相当高水平的样本。
任何知道这些东西如何运作的人?是否在注册最大振幅之前应用了滤波器。如果是这样,它是硬件还是软件?
谢谢, /乔治
答案 0 :(得分:0)
似乎有一个AGC(自动增益控制)滤波器。您还应该能够通过其频率特性识别镜头。我希望它能够出现在大多数可听频谱中,但需要一个频谱分析仪(应用市场上有一些,如SpectralView),并尝试通过其频率“签名”和幅度来识别事件。如果你拍手,你得到的最大幅度是多少?你也可以试着用一些东西覆盖手机来消除声音,就像几层布一样
答案 1 :(得分:0)
似乎AGC在媒体录音机中。当我使用AudioRecord时,我可以使用振幅检测镜头,即使它有时会对除镜头之外的声音做出反应。这不是问题,因为射击者在拍摄时通常不会产生任何其他噪音。 但我也会做一些FFT来完善它: - )
答案 2 :(得分:0)
听起来你发现了你的agc问题。还有一个建议是:我不确定FFT是否适合这项工作。使用滑动功率估算器可能会有更好的检测和更低的CPU使用率。
e.g。 signal => square =>移动平均线=>峰值检测
使用定点数学可以非常有效地实现上述所有功能,这非常适合移动Android平台。
您可以通过搜索“Parseval定理”和“CIC过滤器”(级联积分梳)找到更多信息
答案 3 :(得分:0)
对于迟到的回复表示歉意;在我开始寻找其他问题之前,我没有看到这个问题...
我已经开始申请做我认为你正在尝试的事情。这是一个基于音频的圈计时器(用于开始/停止录音的按钮,以及用于圈设置的大声音频噪音)。它还没有完成,但可能会为你提供一个良好的入门基础。
现在,它允许您监控来自麦克风的信号音量,并设置环境噪音量。它也使用新的BSD许可证,因此请随时查看代码:http://code.google.com/p/audio-timer/。它被设置为使用1.5 API来包含尽可能多的设备。
它还没有完成,因为它有两个主要问题:
我正在调查频率支持,但Android似乎没有办法找出支持哪些频率而无需每个设备的试用和错误。
我还在我的本地开发机器上有一些额外的代码来创建listview项目的布局以显示“lap”信息。但是,由于频率问题而陷入困境。但是由于显示和音频捕获已经相当多了,使用系统时间来填充定时信息的显示值应该相对简单,然后添加将数据表导出到a的能力应该不会太难。 SD卡上的CSV。
如果您想加入此项目,或者您有任何疑问,请与我们联系。