在Python中播放时更改歌曲的BPM

1 投票
2 回答
3580 浏览
提问于 2025-04-16 06:06

我想找一种方法,把一首歌的节奏调到某个人的心率上。我有一首mp3或wav格式的歌曲,我想在播放的时候加快它的速度。或者可以循环播放,每次循环的时候加速或减速。理想情况下,我希望用Python来实现。你知道有什么办法吗?

谢谢!

Bussiere

2 个回答

4

这里有几个不同的部分,每个部分都需要解决。它们都不是简单的事情,需要一定的信号处理知识,所以你可能需要找一些库来帮你处理这些复杂的部分。

  1. 心跳检测。这部分我不太了解,但我们假设你能以某种方式获取到这个信息。

  2. 音乐节拍检测。有几个库可以用来做这个,有商业的也有开源的。你可以看看 http://aubio.org/,它已经有适用于Python的接口了。

  3. 节奏变化。一旦你知道目标的每分钟节拍数(BPM)和当前的BPM,你就需要另一个库来调整你的音频轨道的节奏,以匹配目标节奏(而不改变音调)。可以考虑 Rubber BandSoundTouch

在网上搜索一下,你会找到其他可以进行这些操作的库(还有其他你需要的东西,比如用来打开和播放声音的PyMedia等等)。

2

也许有一款软件可以让你通过其他输入来控制正在播放的音频节奏,那就是“Puredata”。

这是一款功能非常全面但有点复杂的软件,主要是通过节点连接来处理各种多媒体转换。不过,它也可以通过Python的接口来编程。

http://crca.ucsd.edu/~msp/Pd_documentation/index.htm

Python接口:

http://mccormick.cx/projects/PyPd/

撰写回答