【发布时间】:2016-09-05 11:40:28
【问题描述】:
我需要在 wav 文件中过滤 5Khz 以上的频率。我做了一些研究,发现了巴特沃斯算法,但无法应用。
假设我有一个单声道 wav 文件。我看了,然后想用低通滤波器过滤5Khz以上的频率。
到目前为止,我所做的就是这样。我读取文件,读取帧并将它们转换为数值。
from pydub import AudioSegment
song = AudioSegment.from_wav("audio.wav")
frame_count = int(song.frame_count())
all_frames = [song.get_frame(i) for i in range(frame_count)]
def sample_to_int(sample):
return int(sample.encode("hex"), 16)
int_freqs = [sample_to_int(frame) for frame in all_frames]
如果我将值 >5000 更改为 0 是否足够?我不这么认为,我很困惑,很高兴听到任何帮助。
【问题讨论】:
-
如果您认为更改值 > 5000 甚至 接近 到您需要的值,那么您真的应该阅读抽样理论,因为您太过头了。跨度>
-
虽然如果您想自己实现它,您可以将某种曲线应用于 FFT,然后进行逆 FFT。但这是一种非常幼稚的做法。
-
过滤到 5kHz 是很正常的。老年人可以听到大约 12 kHz,年轻人(今天可能不是)到 18 kHz,电话交谈(POTS)的限制在 3-4 kHz 左右。如果您想了解更多信息,请查看我为其他人编写的使用 FFT 进行带通滤波的示例,但出于实际目的,我会选择 Linuxious 的答案。 stackoverflow.com/questions/36968418/…
-
@roadrunner66:正常,是的。不过,除非您将其用于效果,否则听起来并不那么好:)。
标签: python audio signal-processing fft frequency