Нижчі частоти сильніші у FFT?


15

Я розраховую FFT з мікрофонного входу. Я зауважую, що на низьких частотах завжди, здається, є більша потужність (більша дБ), ніж більш висока.

  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 значень, щоб отримати повний FFT в 4096 байт.
  6. Намалюйте гарне зображення (кольори, відображені в палітрі).

Усереднення (п. 5) проводиться для зниження шуму FFT.

Як показує зображення як зі звуком, так і при вимкненому мікрофоні, на нижчих частотах більше енергії (і більше шуму). Це свідчить про її більш ніж просто проблему з мікрофоном / підопічним.

Мої запитання:
1. Чи очікується це? Чому?
2. Якийсь стандартний спосіб виправити це? Майже схоже на те, що якась магія Math.Tan () може підняти її там, де їй належить.

Моя мета - мати змогу визначити топ-5 частот без нижчих частот, які виграють за замовчуванням.

FFT


Спробуйте спочатку правильне вікно Хеммінга, щоб дізнатись, чи є розбитий фрагмент вікна тим, що викликає цей низькочастотний шум.
hotpaw2

@ Тед Хансен, як ти закінчив "визначити топ 5 частот без нижчих частот" - топ 5 із зважених 1/3 октавних смуг ??
denis

Відповіді:


12

Так, це дуже очікувано. Що ви бачите, це " рожевий " спектр, тобто постійна енергія на відносну пропускну здатність, порівняно з " білою ", яка є постійною енергією на абсолютну пропускну здатність. Для рожевих сигналів енергія між 1-2 кГц така ж, як і для 2-4 кГц (кожен являє собою подвоєння пропускної здатності або "октаву".

Більшість природних аудіосигналів (мова, музика, фільми тощо) мають рожевий спектр. Також більшість акустичних фонових шумів (шум мікрофона, шум HVAC, коливання тиску повітря, загальний фон) мають тенденцію бути рожевими або ще більше перекошеними у бік нижчих частот.

Слухові системи людини теж працюють. У внутрішньому вусі звукові сигнали розбиваються на смуги постійної відносної пропускної здатності (звані "критичні смуги"), які приблизно такі ж, як і третій октавний спектр.

Найкращий спосіб переглянути дані звукового спектру - це побудувати їх на логарифмічній шкалі частот.


Заява про те, що "природні аудіосигнали мають рожевий спектр", не враховують часової шкали. Протягом тривалого часу (~ 10 секунд) я згоден, і, звичайно, протягом декількох хвилин це твердження, як правило, відповідає дійсності. Але спектри тут обчислюються понад 0,55 сек. Якщо вхід є, наприклад, музика, я б очікував набагато більше тональної структури.
mtrw

2
"тональність" більше впливає на тонку структуру спектра. Загальна форма (з точки зору енергії на октаву) все ще буде в основному рожевою для музики, якщо це не щось на зразок "соло для трикутника та тріскача тарілка"
Гільмар

1
@mtrw: Квадратна хвиля, безумовно, є тональною, але високочастотні гармоніки все ж випадають зі швидкістю 1 / f.
ендоліт

8

На кроці 2 формулою має бути input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));, де Nу вашому випадку кількість проб у буфері 24576.

На кроках 4 і 5 я б робив бін-середнє усереднення за значеннями величини у квадраті, а не за значеннями dB. Скажіть, у вас квадратичні величини [4,6]. Їх середнє значення 5, 10*log10(5) ~= 6.99. Середній показник 10*log10(4)і 10*log10(6)є 6.90.

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


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, оскільки це ширина застосованого FFT. Це вікно потрібно застосувати до 4096 зразків, які трансформуються перед кожним фдт.
Яків

@Jacob - ОП обчислює FFT 6 * 4096 балів, а потім усереднює 6 суміжних бункерів, щоб зменшити до 4096 балів.
mtrw

5

1 / f шум виникає у багатьох фізичних, біологічних та економічних системах. Деякі дослідники описують це як всюдисущий.

рожеві та білі шуми

Рожевий шум (зліва) та білий шум (праворуч) на спектрограмі FFT з вертикальною лінією частоти лінійної частоти (на типовому аналізаторі аудіо чи подібного спектра рожевий шум буде рівним, а не похилим вниз, а білий шум піднімається)


6
Шум зліва безумовно рожевий, але справа справа виглядає трохи помаранчевою :-)

Хоча правда, що 1 / f шум є всюдисущим, добре розроблений аналоговий передній кінець для аудіо зазвичай має низький рівень шуму 1 / f вище, скажімо, 10 Гц. Білий шум домінує в цікавих смугах.
mtrw

4

Це очікується? Чому?

Багато природних звуків мають гармоніку , тому у вищих кратних від фундаментальних буде нижча основна частота, а потім менше енергії. Може виникнути зміщення постійного струму, що означатиме дуже багато енергії в самому лівому куті. Іншим впливом є ваша функція вікон, яка спотворює частотну характеристику.

Якийсь стандартний спосіб виправити це? Майже схоже на те, що якась магія Math.Tan () може підняти її там, де їй належить.

Ви можете мати справу зі зміщенням постійного струму, використовуючи високочастотний фільтр. Проста реалізація полягає в тому, щоб відняти середньострокову середню з кожного вибірки (EDIT: або навіть простіше, відкинути нижчі частоти, наприклад, <50 Гц від результату FFT). Ви також можете експериментувати з різними функціями вікна. переконайтесь (як зазначає @mtrw), що ви правильно застосовуєте вікно. Будь-які інші нелінійності у відповіді можна виправити, вимірявши якийсь ідеальний вхід та нормалізуючи цю криву.


Функція вікна не повинна впливати на частотну характеристику, чи не так?
ендоліт

@endolith: це - ви помножуєте свої дані за допомогою функції вікна, а комбінована функція має різну реакцію. Прочитайте пов’язану статтю у Вікіпедії, яка більш детально обговорює це питання. Реалізація зразків реального світу полягає в тому, що зазвичай є якесь вікно (наприклад, прямокутник), і ви можете лише наблизити частотну характеристику (нескінченного) вихідного сигналу через це.
Гай Сіртон

Можливо, ми думаємо про "частотну характеристику" по-різному. Якщо сигнал є нерухомим, і ви застосуєте до нього віконну функцію, спектр повинен мати однакові амплітуди на тих же частотах, незалежно від того, яку функцію вікна ви використовуєте, відрізняючись лише коефіцієнтом масштабу, який впливає на всі частоти однаково. Ширина кожного шипа частоти буде різною, але висота шипів буде однаковою відносно один одного. Функція вікон не діє як фільтр, який послаблює деякі частоти більше, ніж інші.
ендоліт

@endolith: Уявіть нескінченну синусоїду, тепер помножте на вікно cos ^ 2. Ви все одно будете мати компонент на початковій частоті, але його амплітуда буде "вимкнено", і у вас з'являться нові частотні компоненти, що надходять з вікна. Дивіться перший пункт тут: en.wikipedia.org/wiki/Spectral_leakage
Гай Сіртон

Так, але амплітуда "вимкнено" буде однаковою, незалежно від частоти нескінченної синусоїди, ні?
ендоліт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.