通过分析音频频谱进行节奏检测

Posted

技术标签:

【中文标题】通过分析音频频谱进行节奏检测【英文标题】:Rhythm detection through analyzing the audio spectrum 【发布时间】:2011-03-27 16:57:01 【问题描述】:

我正在构建一个基于节奏的游戏,但在节奏检测方面遇到了很多问题。我收到正在播放的歌曲的当前频谱。它看起来像一个具有 512 个浮点数的浮点数组。 256 用于左右声道表示。 FFT 也可用。但我不知道如何处理这些数据,我已经做了一些可视化实验,但它给我的信息很少。我已经搜索了一些现成的算法,但什么都没有。拜托,有人可以帮助我,也许,一些与节奏检测相关的参考资料、材料、文章,使用音频频谱。代码也会很有帮助。谢谢。

【问题讨论】:

有很多软件应用程序已经这样做了,所以我猜算法应该很简单,希望在这里看到一些有趣的 cmets.. 刚刚看到这个关于“音频节拍检测算法”的谷歌搜索。希望对您有所帮助..flipcode.com/misc/BeatDetectionAlgorithms.pdf 【参考方案1】:

也许您没有使用正确的搜索词。尝试用谷歌搜索“节奏检测”或“节拍检测”以及“代码”或“算法”。有很多论文、参考资料、代码示例等。

点击几下:

http://www.cs.princeton.edu/~lieber/cos325/final/

http://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.html

【讨论】:

【参考方案2】:

您可能想查看Dancing Monkeys 项目的源代码和项目报告。 Dancing Monkeys 自动为 DDR 生成 stepfile,它使用一些相当复杂的节拍检测来实现。用matlab写的。

【讨论】:

【参考方案3】:

你应该看看拍谱算法:http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm。 它通过计算小样本频谱图的相似性来提取有关节奏和音乐结构的信息。它相对容易实现,并且允许检索可靠的信息。

【讨论】:

以上是关于通过分析音频频谱进行节奏检测的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎样进行频谱分析

利用matlab怎样进行频谱分析

在 Unity 中预处理音频频谱数据

在 Java 中使用 FFT 算法进行音频频谱分析

关于用MATLAB设计对信号进行频谱分析和滤波处理的程序

使用 Python 2.6 对音频文件进行快速频谱分析?