Julia中的高通滤波器

3

我正在使用Julia录制5秒钟的现场音频,想要剪掉所有小于某个特定频率的声音。以下是我到目前为止的录音脚本:

using PortAudio, SampledSignals, LibSndFile, FileIO, Dates

stream = PortAudioStream("HDA Intel PCH: ALC285 Analog (hw:0,0)")

buf = read(stream, 5s)

while true
    save(string("recording_", Dates.format(now(), "yyyymmdd_HHMMSS"), ".wav"), buf, Fs = 48000)

如何过滤掉所有低于10kHz的声音?我一直在查看来自 DSP 包的 Highpass 函数,但我不太明白如何正确应用它。


1
请注意:如果您使用“dateformat"yyyymmdd_HHMMSS"”,则会获得更好的性能,因为它只需要在编译时将格式字符串转换为DateFormat一次,而不是在每个循环迭代中都进行转换。 - BallpointBen
1个回答

2
using DSP

"""
    highpassfilter(signals, fs, cutoff, order=4)
Apply high pass filter to signals, return filtered data
"""
function highpassfilter(signals, fs, cutoff, order=4)
    wdo = 2.0 * cutoff / fs
    filth = digitalfilter(Highpass(wdo), Butterworth(order))
    filtfilt(filth, signals)
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接