Быстрое преобразование Фурье для низкочастотных сигналов в API WebAudio / javascript - PullRequest
0 голосов
/ 12 июня 2018

У меня есть одноканальная волна, поступающая с частотой дискретизации 8000 Гц.

Мне нужно анализировать частоты в диапазоне от 5 Гц до 300 Гц в режиме реального времени с акцентом на сигналы от 10 до60 Гц.

Сначала я подумал о том, чтобы запустить образец 8000 Гц в буфер, собрав около 32000 образцов.Затем запустите на нем преобразование Фурье размером в 32000 окон.

Причина в том, что для низкочастотных сигналов вам нужен больший размер окна (верно?)

Однако, если я пытаюсь отобразить этот сигнал в режиме реального времени, онПохоже, что AudioAnalyserNode не может быть хорошим выбором здесь.Я знаю, что API WebAudio позволил бы мне получать необработанные данные, но в идеале AudioAnalyserNode мог бы запустить новый fft на основе предыдущих 32000 выборок, даже если меньшее количество выборок стало вновь доступным.В этот момент кажется, что данные fft обновляются только раз в четыре секунды.

Нужно ли создавать специальный «рабочий лоток», чтобы дисплей обновлялся чаще, чем раз в 4 секунды?Или какой наименьший размер окна я могу использовать для получения разумных значений в этом диапазоне?32000 достаточно большой размер окна?

Я использую узел анализатора API WebAudio в javascript, но если мне нужно получить необработанные данные, я также хочу заменить библиотеки на другие в javascript.

1 Ответ

0 голосов
/ 12 июня 2018

Используя AnalyserNode, вы можете вызывать getFloatFrequencyData столько раз, сколько захотите.Это вернет БПФ последних fftSize сэмплов.Они сглаживаются вместе.Подробнее см. Интерфейс AnalyserNode

Кроме того, спецификация WebAudio позволяет создавать AudioContext с выбираемой пользователем частотой дискретизации .Вы можете установить частоту дискретизации до 8000 Гц.Тогда ваши БПФ могут иметь более точное разрешение при меньшей сложности.

Однако я не думаю, что какой-либо браузер реализовал эту возможность.

Альтернативой может быть получение поддерживаемой звуковой карты, которая позволяетчастоту дискретизации 8000 Гц и настройте свою систему на использование этого устройства в качестве устройства вывода звука по умолчанию. Тогда у аудиоконтента будет частота дискретизации 8000 Гц.

...