🎵 BPM 节拍测速
上传音频文件,浏览器端自动分析 BPM 节拍速度,支持波形可视化与节拍试听。
相关指南
在线裁剪音频,以及怎么看懂 BPM 检测结果
剪切点精确到采样而不是显示的那位小数,成品恒为 16 bit WAV 而信息面板写的 32 bit 只是内存里的形态;再加上自相关测速为什么总把 90 报成 180,以及那个真正靠得住的试听按钮。
它测的到底是什么
这里的节拍检测用的是自相关。文件在你自己的浏览器里解码,只取左声道,降采样到约 11025 赫兹(按源采样率除以取整后的倍数来抽稀),再切成窗长 1024、步长 512 的短窗口逐窗量响度,得到一条随时间起伏的能量包络——原始波形在这一步就被丢掉了。
然后让这条包络跟自己在各种位移下比对,越能稳定对齐的位移就是越规律的周期。半个秒重复一次对应的就是每分钟 120 拍。峰值在相邻帧之间做了插值,所以结果不是四舍五入到某个窗口,并且凡是分数足够高的候选都会留下,而不是只留一个。
这条路数擅长的是鼓点清晰、速度稳定的材料;不适合自由速度的演奏、节拍靠暗示而不是敲击的音乐,以及能量包络被非节拍因素(长音墙、突发音效)主导的曲子。
为什么结果经常是想要的两倍或一半
搜索窗口设在每分钟 30 到 300 拍之间,找到的峰再折算到 55 到 210 这段常用区间:每个候选都会分别尝试 0.25、0.333、0.5、0.667、1、1.5、2、3、4 这些倍率,取分数最好的那个。
于是 70 可能报成 140,128 可能报成 64。这不是错误,而是真实的歧义:每 1.7 秒一个脉冲、每 0.86 秒一个脉冲和每 0.43 秒一个脉冲描述的是同一个重复结构,哪一个算「那个速度」取决于你怎么听。半拍和加倍都是实际存在的编曲手法。
所以主数字差一倍时先往下看候选列表,你要的那个数通常就在里面,而不是判定分析失败。
用耳朵验收结果
主数字下面写着「点击 BPM 值试听节拍」,点它会用节拍器按该速度放 16 下,每第 4 下换成 1200 赫兹的高音、其余 900 赫兹,让你听得出小节线在哪里;点候选列表里的任意一个也是试听那一个。这是整页最该用的功能——跟曲子对几秒就有结论,是置信度百分比给不了你的。
置信度描述的是这条周期性相对其它候选有多突出,不是答案在音乐上对不对。一首鼓点极稳的曲子,即使算法选了半拍读法,分数照样很高。
另外两条结构性限制值得记住:只分析前 120 秒,所以中途变拍的曲子是被开头描述的;只用左声道,对成品几乎没有影响,但遇到把鼓完全打到右声道的混音就会读错。
常见问题
检测出来的 BPM 是预期值的两倍,为什么?
因为候选会被折算进 55 到 210 的常用区间,而半拍与加倍读法说的是同一个脉冲。先看候选列表,你要的数往往就在里面;用试听按钮听哪个对得上,比猜更有用。
准确度怎么样?
鼓点清晰、律动稳定的材料通常要么对、要么正好差一个整数倍。弱项是自由速度、以暗示为主的节拍,以及包络被非打击元素主导的音频,这几种情况没法给一个统一的准确率数字。
置信度那个百分数是什么意思?
它按「这条候选的原始分除以最强候选的分」算出来,四舍五入成整数,衡量的是这条周期性的突出程度,不是正确性。很稳的曲子在它自己的半拍读法上也能拿到高分。
能只听节拍而不看数字吗?
能,而且这是最快验证的办法:点主数字或候选项会用节拍器按那个速度放 16 下,每 4 下一记重音。
是整首歌都在分析吗?
不是,只取前 120 秒。这个长度对确定速度一般够用,也能让分析很快完成,代价是中途变拍的曲子只被它的开头描述。
音频会上传到服务器吗?支持哪些文件?
不上传,解码和全流程分析都在你自己的浏览器里完成,这也是长文件需要一点时间的原因。接受 MP3、WAV、FLAC、OGG、M4A、AAC,上限 50MB。太短的文件会明确告诉你不行——少于大约 1 秒的音频不足以完成分析。