2016-05-10 3 views
2

Мне нужно фильтровать частоты выше 5 кГц в wav-файле. Я сделал некоторые исследования и нашел о алгоритме маслом, но не смог его применить.Фильтрация частот выше предела в wav-файле (фильтр нижних частот)

Предположим, что у меня есть файл с моноканальным wav. Я прочитал его, затем я хочу использовать фильтр нижних частот для фильтрации частот выше 5 кГц.

Что я сделал до сих пор, так это. Я прочитал файл, прочитал фреймы и преобразовал их в числовые значения.

Если я вношу значения изменений> 5000 в 0, достаточно ли этого? Я не думаю, что так, я очень смущен и буду рад услышать любую помощь.

+0

Если вы считаете, что изменение значений> 5000 равно * близко * к тому, что вам нужно, вы действительно должны прочитать теорию выборки, потому что вы находитесь в своей голове. –

+0

Хотя, если вы хотите реализовать его самостоятельно, вы можете применить некоторую кривую к БПФ, а затем сделать обратный БПФ. Но это довольно наивный способ сделать это. – Linuxios

+0

Фильтрация до 5 кГц вполне нормальная. Пожилые люди могут слышать около 12 кГц, молодые люди (не сегодня) до 18 кГц, телефонные разговоры (POTS) имеют пределы около 3-4 кГц. Посмотрите этот пример, который я написал для кого-то еще для фильтрации полос пропускания с помощью FFT, если вы хотите узнать больше, но для практических целей я бы пошел с Linuxious'ом ответом. http://stackoverflow.com/questions/36968418/python-designing-a-time-series-filter-after-fourier-analysis/36975979#36975979 – roadrunner66

ответ

1

Pydub включает lopass фильтр - нет необходимости для вас, чтобы реализовать его самостоятельно:

from pydub import AudioSegment 

song = AudioSegment.from_wav("audio.wav") 
new = song.low_pass_filter(5000) 

Это «документированы» в effects.py.