@cwilso в основном правый.
Но вот альтернатива, которая получит то, что вы хотите (довольно) немного работы, анализа и мышления.
Lowpass фильтрует сигнал, чтобы получить низкие частоты, которые вас интересуют. Уменьшите сигнал. Сохраните этот сигнал в AudioBuffer. Создайте OfflineAudioContext
с AudioBufferSource
и AnalyserNode
. Запустите автономный контекст и возьмите данные частоты из анализатора.
В качестве примера предположим, что контекст работает на частоте 48 кГц. Мы хотим уточнить частоты ниже 3 кГц. Итак, создайте фильтр нижних частот с отсечкой 3 кГц. (Использование одного фильтра IIRFilter или каскада нескольких фильтров biquad.) Возьмите отфильтрованное аудио и отправьте его в AudioWorklet или ScriptProcessor. Этот узел будет децитировать сигнал в 8 раз (48/(2 * 3)), сохраняя только каждый 16-й образец. Соберите достаточно данных и сохраните их в AudioBuffer с частотой дискретизации 6 кГц. Это прореживание приводит к сигналу с полосой пропускания 3 кГц при частоте дискретизации 6 кГц. Таким образом, интересная часть сигнала занимает всю полосу пропускания.
Теперь, когда у нас есть этот буфер, создайте автономный контекст с частотой дискретизации 3 кГц. В этом контексте создайте AudioBufferSourceNode, используя этот буфер, и передайте это в AnalyserNode. Получите данные частоты от анализатора. Если вы использовали, скажем, 1024 балла, каждый бит частоты теперь составляет 3 кГц/1024 или около 3 Гц в ширину. Вы уточнили низкие частоты.
Код не может быть запущен с изображения, поэтому укажите свой код, а не изображение. –