Algorithm 更改声音文件的速度
我想改变声音文件的速度,但不知如何实现。我假设在减速的情况下必须进行某种类型的插值,但我不确定如何实现加速-可能是几个样本的平均值?无论它改变了节奏还是音高,现在都不重要,我想学习如何做到这两个,但我想至少在开始时做到其中一个 如果有人对这些类型操作背后的数学有任何参考,他们将不胜感激 谢谢,Algorithm 更改声音文件的速度,algorithm,audio,multimedia,Algorithm,Audio,Multimedia,我想改变声音文件的速度,但不知如何实现。我假设在减速的情况下必须进行某种类型的插值,但我不确定如何实现加速-可能是几个样本的平均值?无论它改变了节奏还是音高,现在都不重要,我想学习如何做到这两个,但我想至少在开始时做到其中一个 如果有人对这些类型操作背后的数学有任何参考,他们将不胜感激 谢谢, Ben有两个选项可以加快声音文件的播放速度: 提高采样率 减少每单位时间的样本数 在这两种方法中,播放速度的提高将使声音的音调发生相应的变化 增加采样率 增加采样率将提高声音的播放速度。例如,从22
Ben有两个选项可以加快声音文件的播放速度:
- 提高采样率
- 减少每单位时间的样本数
original_samples = [0, 0.1, 0.2, 0.3, 0.4, 0.5]
def faster(samples):
new_samples = []
for i = 0 to samples.length:
if i is even:
new_samples.add(0.5 * (samples[i] + samples[i+1]))
return new_samples
faster_samples = faster(original_samples)
我还发布了一个关于“a问题”的答案,其中我详细介绍了一些可以执行的基本音频操作,因此这可能也很有趣。维基百科上有一个很好的解释。基本上,您将信号转换为两个采样率的最小公倍数,过滤掉不符合目标采样率的任何频率(或不来自源),并在目标采样器处拾取新样本。有一些数学技巧可以使计算占用的资源大大减少(多相分解),但这应该让你开始了。这是一个听起来很有趣的问题:)是的-我几乎把它理解为“改变音速”你想改变速度(同时改变音高)还是节奏(保持音高不变)?或者/或者只是想开始修改声音文件……我能想到的平均值的唯一优点是可以最大限度地减少偏差。例如,如果您有这样的数据:[1,-1,1,-1,1,-1],它具有零偏差,您可以看到平均值将保持零偏差,但丢弃样本则不会。你对信号所做的任何事情都会引入某种伪影,如果你选择了一本好的DSP教科书,你就会看到这种伪影。@Nosredna:这是一个很好的例子来说明关于偏差的观点。谢谢你指出这一点。