Более низкие частоты сильнее в БПФ?

15

Я рассчитываю БПФ от входа микрофона. Я заметил, что более низкие частоты, кажется, всегда имеют большую мощность (более высокий дБ), чем более высокие частоты.

  1. Я разрезал данные на 24576 байт (4096 * 6).
  2. Применить окно Хемминга: input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. Запустите его через FFTW Process1D().
  4. Преобразовать из комплексных чисел: output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. В среднем из 6 значений получается полное БПФ размером 4096 байт.
  6. Нарисуйте красивую картинку (цвета сопоставлены с палитрой).

Усреднение (п. 5) выполняется для снижения шума БПФ.

Как показано на рисунке как со звуком, так и с выключенным микрофоном, на низких частотах больше энергии (и больше шума). Это указывает на то, что проблема не только в микрофоне / сабе.

Мои вопросы:
1. Ожидается ли это? Почему?
2. Любой стандартный способ исправить это? Похоже, что какая-то магия Math.Tan () может поднять его туда, где он и должен.

Моя цель - определить 5 лучших частот без выигрыша по умолчанию.

FFT

Тедд хансен
источник
Пожалуйста, попробуйте сначала выбрать правильное окно Хэмминга, чтобы увидеть, является ли причиной этого низкочастотного шума разбитый фрагмент окна.
hotpaw2
@ Тедд Хансен, как вы в итоге "определили 5 лучших частот без низких частот" - 5 лучших из взвешенных 1/3 октавных полос ??
Денис

Ответы:

12

Да, это очень ожидается. То, что вы видите, это « розовый » спектр, то есть постоянная энергия на относительную полосу пропускания, по сравнению с « белым », который является постоянной энергией на абсолютную полосу пропускания. Для розовых сигналов энергия между 1-2 кГц такая же, как и с 2-4 кГц (каждый представляет удвоение полосы пропускания или «октаву»).

Большинство естественных аудиосигналов (речь, музыка, фильмы и т. Д.) Имеют розовый цвет. Также большинство акустических фоновых шумов (шум микрофона, шум ОВК, колебания давления воздуха, общий фон) имеют тенденцию быть розовым или даже более искаженным в сторону низких частот.

Слуховые системы человека тоже работают таким образом. Во внутреннем ухе аудиосигналы разбиты на полосы постоянной относительной ширины полосы (называемые «критическими полосами»), которые примерно совпадают с третьим октавным спектром.

Лучший способ взглянуть на данные звукового спектра - это построить их на логарифмической шкале частот.

Hilmar
источник
Утверждение, что «естественные аудиосигналы имеют розовый цвет», не учитывает временную шкалу. В течение длительного времени (~ 10 секунд) я согласен, и, конечно, в течение нескольких минут это утверждение имеет тенденцию быть правдой. Но спектры здесь рассчитываются за 0,55 сек. Если вход, например, музыка, я бы ожидал гораздо более тональной структуры.
mtrw
2
«тональность» влияет больше на тонкую структуру спектра. Общая форма (в единицах энергии на октаву) будет по-прежнему в основном розовой для музыки, если только это не что-то вроде «соло для треугольника и крэш-тарелки»
Hilmar
1
@mtrw: прямоугольная волна, безусловно, является тоном, но высокочастотные гармоники все еще падают со скоростью 1 / f.
Эндолит
8

На шаге 2 формула должна быть input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));где Nваше количество выборок в буфере 24576.

На шагах 4 и 5 я делаю усреднение по бинарным значениям по квадрату значений амплитуды, а не по значениям дБ. Скажем, у вас есть квадрат величины [4,6]. Их среднее значение 5, 10*log10(5) ~= 6.99. Среднее значение 10*log10(4)и 10*log10(6)есть 6.90.

Первой проблемой может быть причина смещения в сторону низких частот, так как это вызовет спектральную утечку, а низкие частоты получат большее загрязнение от линии постоянного тока (что неизбежно является плохой оценкой). Вторая проблема, вероятно, не будет иметь никакого значения на низких частотах, но я думаю, что становится ближе к цели вашего измерения.

mtrw
источник
fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610журнал10(5)(10журнал10(4)+10журнал10(6))/2
В вашем объяснении выше я полагаю, что вы хотите, чтобы ширина окна (N) составляла 4096, поскольку это ширина применяемого БПФ. Это окно должно быть применено к 4096 выборкам, трансформируемым перед каждым FFT.
Джейкоб
@Jacob - ОП вычисляет БПФ 6 * 4096 пунктов, затем усредняет 6 смежных бинов, чтобы уменьшить до 4096 пунктов.
mtrw
5

1 / f шум возникает во многих физических, биологических и экономических системах. Некоторые исследователи описывают это как вездесущий.

розовые и белые шумы

Розовый шум (слева) и белый шум (справа) на спектрограмме БПФ с линейной частотой вертикальной оси (на типичном анализаторе аудиосигнала или аналогичного спектра розовый шум будет ровным, не наклонным вниз, а белый шум возрастает)

Алексей Фрунзе
источник
6
Шум слева определенно розовый, но справа он выглядит немного оранжевым :-)
Несмотря на то, что шум 1 / f является повсеместным, хорошо продуманный аналоговый интерфейс для звука обычно имеет низкий уровень шума 1 / f выше, скажем, 10 Гц. Белый шум доминирует в полосах интереса.
mtrw
4

Это ожидается? Почему?

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

Любой стандартный способ исправить это? Похоже, что какая-то магия Math.Tan () может поднять его туда, где он и должен.

Вы можете справиться со смещением постоянного тока, используя фильтр верхних частот. Простая реализация состоит в том, чтобы вычесть долгосрочное среднее из каждой выборки (РЕДАКТИРОВАТЬ: или еще проще, отбросить более низкие частоты, например, <50 Гц из вашего результата FFT). Вы также можете поэкспериментировать с различными оконными функциями. убедитесь (как указывает @mtrw), что вы правильно используете окно. Любые другие нелинейности в отклике могут быть исправлены путем измерения некоторого идеального входа и нормализации к этой кривой.

Гай Сиртон
источник
Оконная функция не должна влиять на частотную характеристику, не так ли?
эндолит
@endolith: он умножает ваши данные на функцию управления окнами, а объединенная функция имеет другой ответ. Прочитайте связанную статью Википедии, которая обсуждает это более подробно. Реальность работы с реальными выборками состоит в том, что обычно есть какое-то окно (например, прямоугольник), и из-за этого вы можете только приблизить частотную характеристику (бесконечного) исходного сигнала.
Гай Сиртон
Может быть, мы думаем о «частотной характеристике» по-другому. Если сигнал является стационарным, и вы применяете к нему оконную функцию, спектр должен иметь одинаковые амплитуды на тех же частотах, независимо от того, какую оконную функцию вы используете, отличаясь только масштабным коэффициентом, который одинаково влияет на все частоты. Ширина каждого шипа частоты будет разной, но высота шипов будет одинаковой по отношению друг к другу. Функция управления окнами не действует как фильтр, который ослабляет некоторые частоты больше, чем другие.
эндолит
@endolith: Вообразите бесконечную синусоидальную волну, теперь умноженную на окно cos ^ 2. У вас все еще будет компонент на исходной частоте, но его амплитуда будет «выключена», и у вас будут новые частотные компоненты, выходящие из окна. Смотрите первый абзац здесь: en.wikipedia.org/wiki/Spectral_leakage
Гай Сиртон,
Да, но амплитуда «выкл» будет одинаковой независимо от частоты бесконечной синусоиды, нет?
эндолит