【发布时间】:2011-07-06 14:03:07
【问题描述】:
音频计算界的好心人,您好,
我有一组代表录音的样本。假设它在 44100Hz 时为 5 秒。我将如何以更高的音调回放这个?是否可以动态增加和减少音高?就像让音高慢慢增加到两倍速度,然后再降下来。
换句话说,我想录制并播放它,就好像它正在被 d.j '刮擦'。
始终欢迎使用伪代码。我会用 C 来写这个。
谢谢,
编辑 1
请允许我澄清我的意图。我想将播放保持在 44100Hz,因此我需要在播放前处理样本。这也是因为我想将音高增加的音频与以正常速率运行的音频混合。
以另一种方式表达,也许我需要以某种方式在相同数量的样本上缩小音频?那样播放的时候声音会更快?
编辑 2
另外,我想自己做这件事。请不要使用库(除非您觉得我可以通过代码挑选并找到有趣的东西)。
编辑 3
一段用 C 编写的示例代码,它接受 2 个参数(样本数组和音高因子),然后返回一个新音频数组,这太棒了!
PS 我已经开始赏金不是因为我认为已经给出的答案是无效的。我只是认为获得有关该主题的更多反馈会很好。
赏金奖
老实说,我希望我可以将赏金分配给几个不同的答案,因为它们有很多我认为非常有帮助的。特别感谢 Daniel 向我传递了一些代码,以及 AShelly 和 Hotpaw2 提供了如此详细的回复。
虽然我最终使用了 datageist 引用的 another SO question 的答案,但最终还是将奖项授予了他。
再次感谢大家!
【问题讨论】:
-
请澄清 EDIT 3. 像 DJ 那样抓唱片会导致文件长度不同。例如如果 DJ 以两倍的速度旋转唱片,则录制该声音的文件的时间长度将是原始长度的一半。这是你想要的吗?
-
@hotpaw2。是的,对此感到抱歉。我已经更正了 EDIT 3。确实它会是长度的一半,而这正是我正在寻找的。谢谢:)
标签: audio signal-processing pitch