基于numpy的基音插值

2024-10-01 19:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy阵列,包含88200个元素,代表采样率为44.1 kHz的2秒音频采样。假设样品的螺距为130.8 Hz。我可以对音频数据进行插值,并将其拉伸成4秒的样本,这将使音高减半,或者将其压缩成1秒的样本,这将使音高加倍

我想实现俯仰滑动(Portationo)。也就是说,进行某种插值,使节距从130.8 Hz开始,并在采样结束时平滑滑动至261.6 Hz

如何使用Python和numpy实现这一点?我想我应该能够使用linspaceinterp函数实现这一点,但我无法让它正常工作


Tags: 数据numpy元素样品代表音频插值样本
1条回答
网友
1楼 · 发布于 2024-10-01 19:34:22

以下是我最终使用的numpy代码:

def slide_sample(arr, v1):
    x_old = np.linspace(0, arr.size, arr.size)
    v0 = 1
    ratio = 2 / (v0 + v1)
    vels = np.linspace(v0, v1, int(arr.size * ratio))
    x_new = np.append([0], np.cumsum(vels))
    return np.interp(x_new, x_old, arr)

arr是要滑动的样本数组,v1是要滑动的相对节距。所以{}会滑到皮赫的两倍,滑到音高的一半

相关问题 更多 >

    热门问题