音频没有变化

时间:2010-12-09 22:23:52

标签: language-agnostic open-source audio

我正在尝试找到一个正确方向的库或示例代码,以帮助我在保持正常音高的同时改变音频速度。我需要在开源应用程序中使用此功能,因此最好是库本身是开源的。有什么想法让我走上正轨吗?

3 个答案:

答案 0 :(得分:2)

关于Audio timescale-pitch modification的维基百科文章可能会有所帮助。

答案 1 :(得分:2)

如果您需要在音频域中传送信号,按时播放但不能以音高播放: 你必须知道你的信号是由什么组成的。从而在合理的时候合成好的频率。

1 /你已知所有参数,比如模拟合成,你知道你想要合成一个音符,所以你可以将所有振荡器频率调整到这个值:我想这不是你能做什么,任何虚拟/ virtual analog synth可以根据您的需求执行此操作。

2 /你有一个想要控制的源声音 您必须在可以控制的项目中对其进行分解,以便及时和有节奏地限制你的谐波约束:3个解决方案。

一个。 FFT,快速傅立叶变换,为您提供源声音的所有谐波的功率,并由您来扩大某些谐波或其他谐波的时间尺度(真正的烹饪食谱,但真的值得表达)

湾小波,接近FFT,但只要它们发生时就会关注谐波细节,以及它们发生的精确程度。 (想象它像每次在一些有意义的频率上进行FFT优化)

℃。 粒度合成,我认为它是最简单的:它可以使用窗口,(对每个声音片段应用高斯法则),就像原始声音上的窗户云一样,在很多部分中将它解耦,完全可以控制他们的音高和持续时间(应用于声音的窗口的速度和周期)

可能还有很多其他技术,但我不知道。

答案 2 :(得分:1)

基本思想是您需要将时间轴上的信号转换为时间轴和频率轴上的信号。然后适当地修改该信号,然后再转换回来。

加窗快速傅里叶变换是一种常见的方法 - 获取信号的一小段,转换到频域,重复信号的周期性步骤。修改信号基本上意味着在应用逆变换之前重新标记频率和/或时间轴缩放。 Windows可能会重叠一点,因此您可以从一个块混合(交叉淡入淡出)。

另一种可能的方法是使用小波变换,滤波器组或其他一些密切相关的多分辨率方法。其基础是使用积分变换,其中每个频率以适当的比例(相对于波长)进行处理。例如,morlet基础非常类似于正弦+ j.cosine组合的单波长限制变化,这是傅里叶变换的基础。

理论上,这些应该提供更好的结果。由于变换自然具有时间轴和频率轴,因此不需要通过窗口“人工地”生成时间轴。这可以避免窗口傅立叶变换方法有时明显的交叉淡入淡出问题。我猜它可能会有其他人工制品,但我不知道它们是什么。

很抱歉,如果我的术语对多分辨率的东西有误导或错误的话 - 我远非成为专家。