部署 BPM 测试机

前几天实现了基础的 BPM 和偏移测试功能,现在需要尽快部署到服务器上,并开放测试某首歌 BPM 的接口。同时需要做一个用已有的歌曲来检验的脚本。

修复偏移检测

现在偏移检测有机会检测到窗口的一开头,疑似是因为它假设窗口之前为 0,故去掉前面一点点数据。同时可以通过降低 win_length、hop_length 和 n_fft 来提高 fft 的精度。应用求导后,现在误差从正负 20 ms 暴减至正负 1 ms.

目前不能保证偏移不会卡在一个半拍或者 3 / 4 拍的位置,打算开一个通过纯数字调 offset 和 bpm 的接口,这样就是无敌的了。

同时,根据官方写得很烂的文档,有个固有偏移 onset_offset = n_fft // (2 * hop_length).

我可能还是需要尽快把制谱器写出来,暂时不过度优化了。

运行服务

pip freeze 默认是把装了的「全部」包放进去!!

经验之谈:alpine 镜像问题逼多,遇到一堆问题使用正常镜像一发入魂解决。内网有 python 镜像源,其他的可能也有。

发现了 Rust 镜像源。其他的对着北京外国语大学镜像源看一下说不定也有!

运行测试

结果很烂,BPM 测试要求误差正负 0.5, 准确率 41 / 64; 偏移测试要求误差正负 30 ms, 准确率 16 / 64. 不管了,至少对于我计划加进去的几首大概能用就行,实在不行就自己算一下误差然后修改。

下一步

接着就是 Flutter 前端了,包括校准、BPM 和偏移调整以及制谱,希望能尽快写出来。