BPM / 调性检测

我要提建议

测出音频的速度(BPM,附速度术语)与调性(如 C 大调 / A 小调),并画出节奏强度曲线与 12 音色度分布。

相关工具

这个工具是做什么的

两件最常被问的事:这首歌多少 BPM?什么调?**BPM** 的做法是先算「起音强度」——相邻帧幅度谱的**正向**增量之和(有鼓点或音符起音时能量突然上升,衰减不算),再对这条曲线做自相关找主周期;只取正向增量、自相关前去均值、并只在 60~200 BPM 的范围内找峰(还做了抛物线插值细化),这几步缺一不可。**调性**的做法是把逐帧频谱能量按 12 个半音累加成色度向量,再和 Krumhansl-Kessler 的大调/小调听感轮廓做相关,取相关最高的调。页面同时画出**节奏强度曲线**(起音出现在哪)与**12 音色度分布**(哪些音用得最多,主音高亮)。三点必须说明:① 电子音乐、打击乐、节奏规整的流行歌最准;自由速度(古典、清唱)、环境音、纯人声朗诵测不出稳定 BPM;② 调性对多调性、频繁转调、无调性音乐只能给「整体印象」;③ 半速/倍速是天然歧义(60BPM 与 120BPM 的节奏型可以互为一倍速关系),本工具折到 60~200 的常用区间,如果听着不对可以自己乘 2 或除 2。全部在本机用本地引擎完成。

使用方法

  1. 选择音频文件,页面给出 BPM、速度术语、置信度与调性(含前 3 个候选)。
  2. 看节奏强度曲线:峰的位置就是起音(鼓点 / 音符起音),密集程度反映节奏密度。
  3. 看 12 音色度分布:主音(判定出的调性中心)会高亮,哪几个音占主导一目了然。
  4. 结果偏弱时(置信度低)换一段节奏更明显的素材,或自己把 BPM 乘 2 / 除 2 检查半速倍速。

常见问题

为什么 BPM 有时是一半或两倍?
半速/倍速是节奏检测的固有歧义:60BPM 与 120BPM 的鼓点可以互为一倍速关系,只听节奏型无法区分。本工具折到 60~200 的常用区间,你听着不对就手动乘 2 或除 2。
什么素材测不出来?
自由速度(古典、清唱)、环境音、纯人声朗诵、以及低音很弱又没有鼓的素材。判断方法是看置信度:低于 0.15 基本就是「没检出稳定节拍」,这时结果不要当真。
调性是怎么判的?
把信号的 12 个音高类能量统计成色度向量,与 Krumhansl-Kessler 的大小调听感轮廓做相关(12 个主音 × 2 种调式共 24 个候选)。相关度越高说明越符合该调的「音级使用习惯」。
音频会上传吗?
不会。解码与分析全在本机用本地引擎完成。