首页 > 解决方案 > 使用 numpy 将带通滤波器应用于 .WAV 文件

问题描述

我正在编写一个应该检测歌曲节奏的脚本。为此,我希望它测量脉冲之间的间隔,例如底鼓或类似的东西 - 因为底鼓在我正在测试的歌曲中似乎太少见了,所以我想隔离歌曲中的拍手,这更多常规的。为此,我想将歌曲的频率隔离在 200hz 和 300hz 之间。

我有一些用于低通滤波器的代码,可以在此处找到,但这并不完全有帮助。其他文档仅使用 Matplotlib 在图表上真正绘制过滤后的音频,但我想将过滤后的音频写入另一个 WAV 文件。

    sr,y=scipy.io.wavfile.read(data)
    lo,hi=200,300
    b,a=scipy.signal.butter(N=6, Wn=[2*lo/sr, 2*hi/sr], btype='band')
    x = scipy.signal.lfilter(b,a,y)
    scipy.io.wavfile.write('test.wav', sr, x.astype(np.int16))

我目前已经做到了这一点,但是,它所做的只是根据过滤器使输出更安静。在当前状态下,它使其完全静音。我对音频操作很陌生,所以我不完全确定从这里去哪里。

标签: pythonnumpyscipy

解决方案


推荐阅读