Я пытаюсь создать фильтр нижних частот, чтобы отсекать в звуковом файле частоты выше 10 кГц.
Код: Выделить всё
import librosa
import scipy.signal as sig
import numpy as np
import matplotlib.pyplot as plt
filename = librosa.example('nutcracker')
y, sr = librosa.load(filename)
# modeled after example in scipy.signal docs:
sos = sig.butter(10, 11, btype='lowpass', analog=False, output='sos')
filtered = sig.sosfilt(sos, y)
N : int
Порядок фильтра.
Wn : array_like
Критическая частота или частоты. Для фильтров нижних и верхних частот Wn является скаляром; для полосовых и заграждающих фильтров
Wn — это последовательность длиной 2.
Сначала я подумал, что Wn описывается как ' критическая частота` была границей/порогом для фильтра. Однако установка значения больше 1 приводит к ошибке, сообщающей мне, что значение должно быть между 0 и 1.
Вот моя работа/исследования:
- Поиск в Google «критической частоты фильтра нижних частот» приводит к множеству результатов о частотах среза и частотах среза , которые, похоже, напоминают мою первоначальную идею «точки отсечения».
- Я также нашел несколько формул для расчета частота среза основана на «передаточной функции» фильтра, но, очевидно, существует много типов фильтров нижних частот, и каждый из них может иметь свою передаточную функцию.
- В этом связанном вопросе говорится о частотах Найквиста, используемых для расчета Wn. Я знаю, что такое частота дискретизации Найквиста, которая, очевидно, отличается. Статья в Википедии полностью избегает разговоров о том, что такое частота Найквиста концептуально.
Очевидно, что я почти ничего не знаю об обработке сигналов, кроме того, что изучаю на лету. Объясните, пожалуйста, как будто мне 5:
- Каковы первые два аргумента signal.butter()
- Как изменение этих аргументов функционально меняет фильтр?
- Как их вычислить?
Подробнее здесь: https://stackoverflow.com/questions/633 ... lter-using