0

我需要将48kHz 的音频文件的脉冲响应应用于 44.1kHz 的音频文件。例如,可能是某人说话。如果我使用正确的术语,我需要将两个音频文件卷积在一起,这样听起来就像有人在大教堂里说话。

我不知道我是如何做到这一点的。我查看了 minim 库,因为它是我记得使用的唯一音频库,并且我找到了一个将低通滤波器的脉冲响应应用于音频文件的示例。有没有办法将两个音频文件卷积在一起以输出新声音?音频处理不是我的强项,所以请不要介意我的无知。谢谢,我正在努力解决这个问题。

4

1 回答 1

0

是的,卷积是你想要的,但首先你的源需要是相同的采样率。一旦您的源具有相同的采样率,您有两种选择来执行 S/R 转换:1. 您可以“直接”进行,这是最直接的方式,但需要 M*N 时间,或者 2. 您可以使用傅里叶变换来做到这一点,这要复杂得多,但速度更快。您还需要实现重叠添加算法。查看 Minim 的文档,在我看来他们使用标准 IIR 滤波器,而不是通过脉冲响应进行卷积,所以我认为这不会有帮助。您必须做很多工作才能在 Minim 使用 FFT 为您提供的之上进行卷积。如果你想走“直接”路线,它看起来像这样:

for( i in 0...input.length )
    for( j in 0...conv.length )
        output[i] += i-j < 0 ? 0 : input[i-j] * conv[j] ;

更多细节在这里:http ://www-rohan.sdsu.edu/~jiracek/DAGSAW/4.3.html或谷歌“离散卷积”

更新:Minim 确实给你卷积:http ://code.compartmental.net/minim/javadoc/ddf/minim/effects/Convolver.html

于 2012-08-20T23:44:18.893 回答