实时Android音频分析

Vin*_*nay 13 audio android audio-recording

我在网上搜索过这个,但我仍然有点困惑(因为我相信如果他们想到这样的话,其他人就会这样).我想在序言中说这不是为了家庭作业和/或利润.

我想创建一个应用程序,可以在准备爆米花时听你的微波炉.当弹出片之间有一定的时间间隔(比如5-6秒)时,它会发出警报.再一次,这只是一个让我忙碌的项目 - 不是为了课堂.

无论哪种方式,我都在努力弄清楚如何实时分析音频输入.也就是说,我需要一种方法来记录发生"弹出"的时间.所以你们不认为我没有对此事进行任何研究,我已经检查了这个问题,并广泛搜索了AudioRecord功能列表.

我想我可能不得不对其中一个版本的read()做一些事情,然后每两秒左右将录制的音频与录制的"pop"音频进行比较(即如果是70%或更多的话) byte [] audioData数组与弹出声音相同,然后记录时间).任何有Android音频输入经验的人都可以告诉我,我是否至少在正确的轨道上?这不是我想要你为我编码任何东西的问题,而是一个关于我是否在正确的轨道上的问题,如果不是,我应该朝哪个方向前进.

gre*_*egm 8

我想我有一个更简单的方法.

您可以使用MediaRecorder的getMaxAmplitude方法.

只要你的录音机检测到振幅大幅跳跃,你就会发现玉米爆裂!


小智 6

查看此代码(忽略播放部分):实时播放来自麦克风的声音

基本上这个想法是你必须获取每个16位样本的值(这对应于当时波的值).使用采样率,您可以计算峰值之间的时间.我认为这可能会实现你想要的.


And*_*rei 5

这可能有点矫kill过正,但是麻省理工学院媒体实验室有一个名为funf的框架:http : //code.google.com/p/funf-open-sensing-framework/
他们已经创建了用于音频输入和一些分析的类( FFT等),据我所知,还实现了保存到文件或上载,并且它们处理了电话上可用的大多数传感器。您也可以从他们编写的代码中获得启发,我认为这很好。