【问题标题】:Java Audio ComparisonJava 音频比较
【发布时间】:2011-03-07 23:08:24
【问题描述】:

我正在为音乐家创建一个 Android 应用程序,因为我在一个乐队中,发现我需要这种东西,但找不到可以做我想做的事情,并且想知道如何有人能够接受输入从麦克风。将该输入转换为文件,并将其与数据库中所有预先录制的声音文件进行比较,以确定正在播放的音符或和弦。我在获取输入方面没有问题,但我很难理解如何将一个声音文件与另一个声音文件在频率或类似方面进行比较。我还没有找到真正可以用来帮助解决问题的答案,也找不到处理声音比较的 Java 库。我知道这是一项极其艰巨的任务,但我也知道这是可以完成的,并且想尝试一下。如果有人可以提供建议,一个可以做这样事情的图书馆的链接,或者即使有人已经做过并且可以告诉我具体如何做,我将非常感激。感谢您的宝贵时间,感谢您提供任何反馈!

【问题讨论】:

标签: java android comparison audio


【解决方案1】:

我建议您查看 Google 推出的 music-g API。它是一个用 Java 编写的开源库,可以与 Android 应用程序集成。它提供了可靠的相似度指标。

http://code.google.com/p/musicg/

【讨论】:

    【解决方案2】:

    虽然我认为我们不能以重复的形式关闭(因为它不是,从技术上讲),但请在发布前进行搜索。您要问的不是特定于您的平台,而是您需要实现的算法种类。

    来自我的帖子:How can I do real-time pitch detection in .Net?

    请参阅这些参考资料:http://cnx.org/content/m11714/latest/

    http://www.gamedev.net/community/forums/topic.asp?topic_id=506592&whichpage=1

    Audacity 源代码中 Spectrum.cpp 中的第 48 行似乎与您想要的很接近。他们还参考了 Tolonen 和 Karjalainen 的 IEEE 论文。

    基本上,您需要从一些 FFT 开始,但比这要复杂得多。我想你会发现这个任务几乎不可能完成(尤其是对于整个乐队,一个不清晰的音频输入源等)会让这个项目不值得。心理声学,尤其是失真吉他,会让这变得非常困难。

    这里有很多关于这个主题的可靠帖子:https://stackoverflow.com/search?q=pitch+detection

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 2015-08-04
      • 2016-03-19
      • 2011-06-21
      • 1970-01-01
      • 2018-07-18
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多