【问题标题】:Android Audio Analysis in Real-timeAndroid 实时音频分析
【发布时间】:2011-11-16 07:37:11
【问题描述】:

我已经在网上搜索过这个,但仍然有点困惑(我相信其他人如果想到这样的事情会是这样)。我想先说这不是为了家庭作业和/或利润。

我想创建一个可以在您准备爆米花时聆听微波炉的应用。当爆裂声之间有一定的时间间隔(比如5-6秒)时,它会通过发出警报来工作。再说一次,这只是一个让我忙的项目——不是为了上课。

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

我在想我可能不得不对read() 的其中一个版本做点什么,然后将每 2 秒左右录制的音频与“流行音乐”的录制音频进行比较(即,如果 70% 或更多的 byte[] audioData 数组与弹出声音的数组相同,然后记录时间)。任何有 Android 音频输入经验的人都可以告诉我我是否至少在正确的轨道上吗?这不是我希望你为我编写任何代码的问题,而是关于我是否在正确的轨道上的问题,如果没有,我应该朝哪个方向前进。

【问题讨论】:

  • ^ 我已经在我的问题中提到了这个问题。我的问题更多是考虑到我对实时音频分析的特定需求,我是否朝着正确的方向前进。

标签: android audio audio-recording


【解决方案1】:

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

您可以使用 MediaRecorder 的 getMaxAmplitude 方法。

只要您的记录仪检测到幅度大幅跳跃,您就检测到爆米花!

【讨论】:

  • 非常感谢!我的朋友实际上提出了同样的建议,我想我会使用它(我还没有完成这个应用程序,因为我一直非常忙于其他与学校相关的事情)。为我的这个回答 +1。
  • 你能把我的答案标记为正确答案吗?我迫不及待想要获得该应用程序!
  • gregm,虽然我会使用你的方法,但 Andrew 给了我一个很好的方向(我仍然会使用他的大部分方法来实时分析音频),他首先回答了.不要个人认为,当他首先回答时,我只是觉得取消选中他的答案作为答案是不对的。再次感谢您,我很高兴您等不及该应用程序(尽管它确实只是为了好玩/一个迷你项目),但请不要将其视为个人。
【解决方案2】:

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

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

【讨论】:

  • 再次感谢安德鲁。如果可行,我会尝试并接受这个作为答案。 :-)
  • 所以这是一个让我开始的好方向。我会接受答案。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2010-10-16
    • 2010-11-18
    • 1970-01-01
    • 2020-08-05
    • 2017-04-24
    • 2012-04-08
    • 2023-03-21
    • 2013-08-20
    相关资源
    最近更新 更多