在Python中播放时更改歌曲的BPM
我想找一种方法,把一首歌的节奏调到某个人的心率上。我有一首mp3或wav格式的歌曲,我想在播放的时候加快它的速度。或者可以循环播放,每次循环的时候加速或减速。理想情况下,我希望用Python来实现。你知道有什么办法吗?
谢谢!
Bussiere
2 个回答
4
这里有几个不同的部分,每个部分都需要解决。它们都不是简单的事情,需要一定的信号处理知识,所以你可能需要找一些库来帮你处理这些复杂的部分。
心跳检测。这部分我不太了解,但我们假设你能以某种方式获取到这个信息。
音乐节拍检测。有几个库可以用来做这个,有商业的也有开源的。你可以看看 http://aubio.org/,它已经有适用于Python的接口了。
节奏变化。一旦你知道目标的每分钟节拍数(BPM)和当前的BPM,你就需要另一个库来调整你的音频轨道的节奏,以匹配目标节奏(而不改变音调)。可以考虑 Rubber Band 和 SoundTouch。
在网上搜索一下,你会找到其他可以进行这些操作的库(还有其他你需要的东西,比如用来打开和播放声音的PyMedia等等)。
2
也许有一款软件可以让你通过其他输入来控制正在播放的音频节奏,那就是“Puredata”。
这是一款功能非常全面但有点复杂的软件,主要是通过节点连接来处理各种多媒体转换。不过,它也可以通过Python的接口来编程。
http://crca.ucsd.edu/~msp/Pd_documentation/index.htm
Python接口: