实时Android音频分析

时间:2011-09-13 15:54:39

标签: android audio audio-recording

我在网上搜索过这个,但我仍然有点困惑(因为我相信如果他们想到这样的事情就会有其他人)。我想先写一下,这是的作业和/或利润。

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

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

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

4 个答案:

答案 0 :(得分:8)

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

您可以使用MediaRecorder的getMaxAmplitude方法。

当您的录音机检测到振幅大幅跳跃时,您已经检测到玉米爆裂!

答案 1 :(得分:5)

查看此代码(忽略播放部分):Playing back sound coming from microphone in real-time

基本上这个想法是你必须得到每个16位样本的值(它对应于当时波的值)。使用采样率,您可以计算峰值之间的时间。我认为这可能会达到你想要的效果。

答案 2 :(得分:4)

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

答案 3 :(得分:2)

我们发布了一个open source Android spectrum analyzer on Github here来计算来自麦克风的音频的FFT,并显示二维频谱图。

您可以在https://youtu.be/yU05fsgOYO4

看到它的视频

enter image description here

阅读麦克风和麦克风的关键代码计算音频谱位于v2.x / ... sciShowcase / Viewmodels / AudioAnalyzer