2015-10-17 5 views
1

Я экспериментировал с простым FFT, используя звук p5, а затем визуально отображал полосы спектра.(p5.js) FFT сообщает нижние частоты «слишком громкие» и более высокие частоты «отключить звук»?

Одна вещь, которую я заметил, это то, что низкие частоты кажутся очень высокими почти во всех дорожках, в то время как высокие частоты кажутся немыми.

Так, например, при выполнении БПФ только с 16 полосами большая часть звука происходит только на первых 4 полосах, и кажется, что другие частоты (более высокие) сообщаются как «приглушенные» или слишком тихие.

Вы можете увидеть это в этом примере, например: http://p5js.org/reference/#/p5.FFT, где даже с относительно высокими частотами правая часть спектра остается полностью вниз, низкие частоты, как сообщается, являются самыми высокими, даже жесткими, что вы здесь больше среднего/более высокий тип звука.

Кажется, что какое-то преобразование должно быть применено к результату БПФ, чтобы иметь визуальное представление, которое лучше соответствует тому, что мы слышим?

Я что-то не хватает? Я имею в виду, что я, конечно, не хватает базовой информации о том, как работает FFT и как сообщаются частоты, но я имею в виду, что это общая проблема, которая имеет общее решение?

ответ

1

Человеческая слуховая система в основном является логарифмической базой-2 в природе - каждый последующий octave имеет удвоенную пропускную способность следующего. Вследствие этого подавляющее большинство частотного содержания воспринимаемого человеком звука ниже 1kHz, а мощность сигнала более тонко распределяется между БПФ-бинами на более высоких частотах - именно это показывает ваш график.

Spectrograms - это то, что, как я подозреваю, вы ожидаете увидеть здесь, нанесены с помощью log(F) по оси x и мощности сигнала в дБ по оси Y. Ваш код рисует график с обеих осями линейных.

Кроме того, поскольку вы специально не применяете window function к образцам, используемым для расчета БПФ, то, что вы получаете по умолчанию, это rectangular window - очень далеко от хорошего выбора в этом приложении.

+0

Интересная информация о журнале (F) и дБ по оси Y. Оказывается, p5 имеет возможность получить значения Y в дБ, но я не вижу никакой опции для окна. Возможно, я должен искать другую библиотеку js, чтобы получить лучшее окно, а затем также узнать, как построить график (F) для оси X. Дополнительная информация очень ценится (: – kroe