Android 麦克风输入
我正在尝试构建一个使用Android检测手枪射击的小工具。这是手枪射击训练辅助的一部分,它告诉我射击是如何及时分配的,我使用HTC纹身进行测试 我使用MediaRecorder及其GetMaxAmplication方法在最后1/100 s内获得最高振幅,但它没有按预期工作;speech为我提供的GetMaxAmplificate值范围为0到25000左右,而手枪射击(或喊叫!)仅达到15000左右。采样频率为8kHz时,应存在一些具有相当高水平的样本 有人知道这些东西是怎么工作的吗?在记录最大振幅之前是否应用了滤波器。如果是,是硬件还是软件 谢谢,Android 麦克风输入,android,android-mediarecorder,Android,Android Mediarecorder,我正在尝试构建一个使用Android检测手枪射击的小工具。这是手枪射击训练辅助的一部分,它告诉我射击是如何及时分配的,我使用HTC纹身进行测试 我使用MediaRecorder及其GetMaxAmplication方法在最后1/100 s内获得最高振幅,但它没有按预期工作;speech为我提供的GetMaxAmplificate值范围为0到25000左右,而手枪射击(或喊叫!)仅达到15000左右。采样频率为8kHz时,应存在一些具有相当高水平的样本 有人知道这些东西是怎么工作的吗?在记录最大振
/乔治似乎有一个AGC(自动增益控制)滤波器。您还应该能够通过其频率特性来识别快照。我希望它能出现在大部分可听见的频谱中,但要使用频谱分析仪(应用程序市场上有一些,如SpectralView),并尝试通过频率“特征”和振幅来识别事件。如果你拍手,你得到的最大振幅是多少?你也可以试着在手机上盖上一些东西,像几层布一样消声好像AGC在媒体录音机里。当我使用录音时,我可以使用振幅来检测镜头,即使它有时会对镜头以外的声音做出反应。这不是问题,因为射手在射击时通常不会发出任何其他噪音。
但我也会做一些FFT来完善它:-)听起来好像你解决了agc问题。还有一个建议:我不确定FFT是否适合这项工作。使用滑动功率估计器,您可能会有更好的检测和更低的CPU使用率 e、 g。 信号=>平方=>移动平均=>峰值检测 所有这些都可以使用定点数学非常有效地实现,这非常适合移动android平台
您可以通过搜索“Parseval定理”和“CIC滤波器”(级联积分器梳)找到更多信息;我没有看到这个问题,直到我开始寻找一个不同的问题 我已经启动了一个应用程序来执行我认为您正在尝试的操作。这是一个基于音频的圈速计时器(启动/停止录制的按钮,以及用于圈速设置的巨大音频噪音)。它还没有完成,但可能会为您提供一个良好的基础来开始 现在,它允许您监控来自麦克风的信号音量,并设置环境噪声量。它还使用了新的BSD许可证,因此请在此处查看代码:。它被设置为使用1.5API来包含尽可能多的设备 它还没有完成,因为它有两个主要问题:
如果你想加入这个项目,或者你有任何问题,请告诉我。如果你有一堆这样的手机,你可以把它们分散开来,借助GPS系统,用它们来定位狙击手。你确定你在正确的时间打电话给GetMaxAmpliance吗?“返回自上次调用此方法以来采样的最大绝对振幅”你可能在错误的时间采样?@Spike:如果苹果拒绝“摇晃婴儿”,我想谷歌将不得不拒绝“发现狙击手”。Donald,我每秒调用100次函数,因为这是我拍摄时需要的结果,我看到我的应用程序对语音有反应。快照的频谱为3kHz,比正常语音高一点。麦克风输入中可能有一个低通滤波器:-(@Donal Rafferty:我遇到了你所描述的问题。我不确定Android轮询振幅的速度有多快,但如果你做得太快,那么它会返回很多0。喊叫和鼓掌也会被抑制,所以你对AGC的看法可能是对的。但它会踢得那么快吗?GetMaxAmpliance似乎是avo的一条好捷径我正在做频谱分析…谢谢!