Java 在不改变音高的情况下减慢音频文件的播放速度?

Java 在不改变音高的情况下减慢音频文件的播放速度?,java,audio,media,Java,Audio,Media,我正在申请大学音乐专业。我正在考虑的一个特性是在不改变音高的情况下降低音乐播放速度。我在商业软件中看到过这种情况,但找不到任何库或开源应用程序可以做到这一点 外面有图书馆吗 如何从各种文件格式中从头开始执行此操作 注意:我在java中工作,但不反对改变语言 时间收缩相当困难。声音越慢或越快,产生的伪影就越多。如果你想知道它们听起来像什么,请听胖男孩斯利姆的《罗克费勒的婊子》。有很多方法都有自己的优点和缺点。数学可能变得非常复杂。这就是为什么有这么多专有算法 这一页解释得比我能解释得更清楚一些,还

我正在申请大学音乐专业。我正在考虑的一个特性是在不改变音高的情况下降低音乐播放速度。我在商业软件中看到过这种情况,但找不到任何库或开源应用程序可以做到这一点

  • 外面有图书馆吗
  • 如何从各种文件格式中从头开始执行此操作

  • 注意:我在java中工作,但不反对改变语言

    时间收缩相当困难。声音越慢或越快,产生的伪影就越多。如果你想知道它们听起来像什么,请听胖男孩斯利姆的《罗克费勒的婊子》。有很多方法都有自己的优点和缺点。数学可能变得非常复杂。这就是为什么有这么多专有算法

    这一页解释得比我能解释得更清楚一些,还有指向狄拉克图书馆的链接。

    我为java代码找到了这个链接来进行音调转换/时间伸缩

    本网站介绍了它在物理世界中的实现方式:


    我不知道你会如何在软件中模仿它。。。我将继续查找

    我用来加速播客的速度,它运行得很好,但还没有在音乐上尝试过。

    一种方法是在不更改源的采样率的情况下将采样率提高一倍。(示例质量较低,但易于实现。注意:您也可以降低采样率)

    检查任何与相位声码器相关的数学


    另一种常用方法是创建一组fft存储箱,用于存储声音预定间隔的数据。然后,您可以选择在垃圾箱中迭代的速度,并且您可以根据自己的选择重新合成音频数据,从而使您能够将一小段声音延伸到任意长度。

    audacity可以开箱即用,而且是免费的。有几个mp3播放器的插件也是免费的。显然,使用mp3很容易,因为它已经在频域中编码了。

    “Funk Soul Brother”当然是“Rockafeller Skank”;)我很确定第一个想法会降低质量,同时保持播放速度不变