更改音频缓冲区的音高

Posted

技术标签:

【中文标题】更改音频缓冲区的音高【英文标题】:Change pitch of audio buffer 【发布时间】:2014-02-04 17:51:23 【问题描述】:

我正在尝试使用scriptprocessor 更改缓冲区样本的音高,但是我需要什么样的公式才能做到这一点? 我不是在寻找确切的 js 代码,而只是在寻找一些通用的数学方法。我很想为此提供一些代码,因为第一个答案有很多我不知道的公式关于如何在 JS 中实现它。

我知道这与时间有关,但根据this 可以用 FFT 完成,但我不知道应该怎么做。

【问题讨论】:

【参考方案1】:

有关使用 FFT 进行时间间距修改的一种方法,请查阅 phase vocoder。这是相位声码器工作原理的一种解释(但搜索会出现许多其他的):http://www.guitarpitchshifter.com/algorithm.html

【讨论】:

这个文档看起来很有趣,虽然我只看懂了一半。我想我最好改变我的问题,因为我不知道如何实现它,所以一些 javascript 代码会很方便。【参考方案2】:

我相信https://github.com/mikolalysenko/pitch-shift 是合适的(质量不如其他代码,但这个库很容易理解/使用)。您可以在http://mikolalysenko.github.io/pitch-shift/ 收听演示。

【讨论】:

这正是我要找的!谢谢。由于我的想法是从中学习,我将尝试找出它是如何工作的。

以上是关于更改音频缓冲区的音高的主要内容,如果未能解决你的问题,请参考以下文章

HTML 5 音频:是不是存在在缓冲持续时间更改时触发的事件

是否可以更改音频队列的播放音高

如何更改录制音频的音高并在后台保存?

如何在 Web Audio API 中更改音频缓冲源的时间?

swift中的音频播放器没有获得音量和音高的价值

如何通过改变音高和速度 iOS 保存音频?