题
我正在申请大学音乐专业。我正在考虑的一个功能是减慢音乐播放速度而不改变其音调。我已经在商业软件中看到了这一点,但找不到任何库或开源应用程序可以执行类似的操作。
- 那里有图书馆吗?
- 如何从头开始从各种文件格式完成此操作?
笔记:我正在使用java工作,但不反对改变语言。
解决方案
时间拉长是相当困难的。您减慢或加快声音的速度越多,获得的伪影就越多。如果您想了解它们的声音,请聆听 Fat Boy Slim 的“The Rockafeller Skank”。有很多方法可以做到这一点,但都有各自的优点和缺点。数学可能会变得非常复杂。这就是为什么有这么多专有算法。
这个页面比我更清楚地解释了一些事情,并链接到狄拉克图书馆。http://www.dspdimension.com/admin/time-pitch-overview/
我找到了 java 代码的链接来进行变调/时间拉伸http://www.adetorres.com/keychanger/KeyChangerReadme.html
其他提示
我用 声音延伸 加速播客的速度效果很好,但还没有在音乐上尝试过。
该网站解释了它在现实世界中是如何完成的:http://www.wendycarlos.com/other/Eltro-1967/index.html
我不知道你会如何在软件中模拟它......我会继续寻找
一种方法是将采样率加倍,而不改变源的采样率。(示例质量低,但易于实现。笔记:您也可以降低采样率)。
查看与相位声码器相关的数学。
另一种常见的方法是创建一个 fft bin 数组,用于存储声音预定间隔的数据。然后,您可以选择迭代数据箱的速度,并且可以根据您选择的时间重新合成音频数据,从而使您能够根据需要延长声音的一小段。
audacity 开箱即用,而且免费。还有一些免费的 MP3 播放器插件。显然,使用 mp3 很容易做到这一点,因为它已经在频域中进行了编码。