【发布时间】:2020-01-30 00:35:13
【问题描述】:
我有一个 numpy 数组,其中包含 88200 个元素,表示以 44.1 kHz 的采样率采样的 2 秒音频样本。假设样本的音高为 130.8 Hz。我可以插入音频数据并将其拉伸成一个 4 秒的样本,这将使音高减半或将其压缩成一个 1 秒的样本,这将使音高加倍。
我想实现音高滑动(滑音)。也就是说,某种插值使音高从 130.8 Hz 开始,并在采样结束时平滑地滑到 261.6 Hz。
如何使用 Python 和 numpy 做到这一点?我想我应该可以使用 linspace 和 interp 函数来完成这个任务,但我无法让它正常工作。
【问题讨论】:
-
要滑动音高,插值将在数组中的变化点处。您可能最好编写自己的函数,这样您就可以轻松地交换线性、样条和拉格朗日插值。如果您的音频
buffer正在放慢速度,并且您要求索引0、0.5、1、1.4,则0.5和@987654329 没有直线插值@indexes,您需要逐案处理。 -
你可以使用非 numpy 库吗?不是说不能坚持使用 numpy,但做好这件事并非易事。
-
我实际上使用 numpy 解决了我的问题!我会尽快写一个答案。如果您或其他任何人可以改进它,我希望看到它!
标签: python numpy audio linear-interpolation