Повторная выборка после фильтрации последовательных блоков с начальными условиями (чтобы избежать разрыва) - PullRequest
0 голосов
/ 05 апреля 2019

На самом деле я работаю над графическим эквалайзером в реальном времени на python. Я использую модуль pyaudio, scipy, numpy. Мой эквалайзер основан на банке фильтров третьей октавной полосы от 25 Гц до 20 кГц (то есть 30 полос). Этот банк фильтров делит входной сигнал на 30 отфильтрованных сигналов (с центром на центральной частоте каждой третьей октавной полосы). Также потоковая передача реализована блок за блоком.

Я использовал filtfilt из scipy.signal модуля, но у меня были некоторые разрывы между каждым блоком (какой-то слышимый щелчок). Итак, я следовал за проблемой непрерывности при применении фильтра БИХ на последовательных таймфреймах , и он хорошо работает для высоких частот.

Но для низких частот мне нужно выполнить следующие шаги:

1) входной сигнал понижающей дискретизации (чтобы сохранить фильтр хорошего определения);

2) фильтрация с lfilter_zi для сохранения непрерывности между каждым блоком (для потоковой передачи);

3) повышение частоты дискретизации отфильтрованного сигнала.

Моя проблема заключается в повышении частоты дискретизации, потому что это нарушает непрерывность между каждым блоком.

...