使用Julia在声音上使用fft

时间:2019-05-10 17:59:01

标签: audio julia fft

我刚刚在Julia中写了一些代码:

    SomeClass.printInfo("Mike", 21);

它是读取文件input.wav的代码,然后对声音执行fft,将其分为两个文件,其中output1的频率仅> 800,而output2的频率不超过800。

在下一部分中,我将两个文件合并到output3中。我原本希望与输入类似,但是听起来却很糟糕(我的意思是听起来像输入,但更安静,而且嗡嗡声比预期的大)。

我的问题是我在代码的哪一部分上放开了有关输入的大部分信息,这是一种改进它的方法,以便获得与输入类似的输入3?

1 个答案:

答案 0 :(得分:1)

您似乎不明白fft(快速傅立叶变换)返回什么。它返回一个振幅矢量,而不是频率矢量。向量的分量与正弦波的振幅相对应,该振幅的频率可以使用fftfreq()函数找到,但是一定要为fftfreq()函数提供第二个参数sampFreq变量。

要分解声音,则需要根据fftfreq()告诉您与垃圾箱相对应的频率(fft()返回的矢量中的矢量位置)将不需要的矢量分量清零。 >

通过ifft逆转过程,您仍然会看到声音质量的大幅下降,因为fft通过将信号分成频率维度的频段,基本上可以平均信号的一部分。

在进一步修复代码之前,我建议使用fft()的教程-您可以在其中几个Google中搜索。