BPM 速度检测

在浏览器本地检测任意音频或视频文件的速度,附带置信度,检测失手时还可以手动跟拍。

或者手动跟拍

跟着节拍点。点得越多越准,停几秒不点就会重新开始计。

还需要 3 下

你放进来的文件全部由浏览器本地处理,不会上传,也不会存在我们的服务器上——页面加载完成后即使断网,工具照样能用。

BPM 检测 怎么用

  1. 1把音频或视频文件拖进上面的方框,或者点击选择。
  2. 2读出速度和置信度。置信度低就说明这个数字只能当猜测。
  3. 3如果自动检测吃力,改用下面那块手动跟着节拍点。

这个 bpm 检测工具是怎么工作的

四步,全都不需要服务器,也不需要任何 WASM。

第一步把文件解码成原始采样。decodeAudioData 能处理 MP3、M4A、WAV、OGG、FLAC,以及 MP4 和 MOV 的 音轨,所以压根不需要转格式那一步。

第二步把采样混成单声道,按 10 毫秒一格测量,得到一条幅度包络。单声道这件事很重要:否则一个被摆到 一侧的底鼓只会以一半的强度被登记。

第三步是把包络里的峰和一条滚动的局部平均比较,而不是和一个固定阈值比较。这才让安静的前奏和响亮的 副歌都能贡献起音,而不是被副歌一家独大。

最后统计起音之间的间隔分布。每个间隔换算成一个速度,折进 70 到 180 的区间,再分桶。桶里最多的那个 胜出,而支持它的间隔占比就成了置信度。

想测 bpm,先看它敢不敢说自己没把握

因为一个光秃秃的数字暗示着这个方法并不具备的确定性。

一首四四方方的舞曲会得到很高的一致度,因为几乎每个间隔都指向同一个速度。一段速度自由的独奏钢琴也会 得到一个数字,而那个数字基本没有意义。

把一致度报出来,你才能分辨这两者。大约 30% 以上可以信;低于此就当起点,用跟拍复核一下。

歌曲 bpm 检测里,一半和两倍都对

这是速度本身固有的性质,不是检测的缺陷。140 BPM 的律动在 70 上是半速感、在 280 上是倍速感,三者描述 的是同一段音乐。哪个是"那个"速度,取决于你把脉搏感在哪儿,这是音乐判断而不是测量。

所以结果里会把一半和两倍的值和主答案并列显示。如果那个数字看起来正好差两倍,对的那个就在旁边。

什么时候放弃 bpm 检测、改用跟拍

自动检测需要打击性起音。给它人声、氛围铺底、连奏弦乐、或者自由演奏的乐器,它压根找不到可以抓的锐利 边缘。

跟拍对这些都有效,因为你补上了算法缺的那个"节拍感"。最少三下,越多越好;超过中位间隔两倍的会被丢掉, 所以偶尔点错一下不会毁掉结果。

把 bpm 检测的结果对着画面用

按音乐剪片子时,速度就是你的剪切点该落上去的那张网格。120 BPM 时一拍 0.5 秒,24fps 下 12 帧、30fps 下 15 帧;四拍一小节在 24fps 下是 48 帧。把剪切点落在小节上而不是拍上,是让一段剪辑显得有结构的关键。

一切都在这个标签页里发生。文件在本地解码,不会上传。

常见问题

它是怎么检测的?
先把文件混成单声道,按 10 毫秒一格测能量、得到一条幅度包络,再挑出明显高于局部平均的峰,然后统计这些峰之间间隔的分布。出现最多的那个间隔就是速度。
为什么它有时报出我速度的一半或两倍?
因为两个答案在音乐上都对。你按 140 数的曲子,按 70 也数得通,任何算法都无法知道你指哪个。间隔会被折进 70 到 180 的区间,而一半和两倍的值也会一并显示,让你挑那个和你的体感相符的。
自动检测什么时候会失手?
任何没有清晰打击性起音的素材:人声、氛围和管弦乐、独奏钢琴,以及刻意自由处理速度的音乐。置信度会告我这种情况发生了,而下面的手动跟拍就是答案。
视频文件可以吗?
可以。浏览器解 MP4 或 MOV 的音轨和解 MP3 一样顺,所以你不用先把音频抽出来就能拿到一个片段的速度。

更多免费工具