Синусоїди та частотний спектр
Чистий тон на частоті f є синусоїдою, x(t) = A·cos(2πft+φ). Трансформа обернений Фурієра розкладає будь-який сигнал на точно комплексні експоненти, які додаються до нього:
X(f) = ∫ x(t)·e^(−i2πft) dt // аналіз: сигнал → спектр x(t) = ∫ X(f)·e^(+i2πft) df // синтез: спектр → сигнал |X(f)|² = потужність спектру на частоті f
Цифрові аудіо зразки цей безперервний сигнал із фіксованим коефіцієнтом f_s — 44,100 Гц для аудіо CD. Теорема Найквастера-Шеннона гарантує, що обмежений за смугою пропускання сигнал може бути ідеально відтворений з вибірок, взятих швидше ніж вдвічі його найвищої частоти; на 44.1 кГц це охоплює частоти до 22,050 Гц, що охоплює весь слуховий діапазон.
X(f) = ∫ x(t)·e^(−i2πft) dt // analysis: signal → spectrum x(t) = ∫ X(f)·e^(+i2πft) df // synthesis: spectrum → signal |X(f)|² = power spectral density at frequency f
Дискретна швидкісність перетворення
Враховуючи N зразків x[0]…x[N−1], DFT (Швидкість перетворення дискретно) виробляє N комплексних значень у частотному діапазоні, де bin k відповідає фізичній частоті f_k = k·f_s/N:
X[k] = Σ_(n=0)^(N-1) x[n]·e^(−i2πkn/N), k = 0…N−1 // computed directly: O(N²) — unusably slow for N ≥ 4096
Коеіль-Тукі FFT (Швидке перетворення Фур'є)
Ключова ідея (Коеіль та Тукі, 1965; також виявлена Гаусом у 1805 році) полягає в роз suddivisione довжини DFT (N) на два DFT довжиною N/2 для парних та непарних індексів, а потім їх об'єднанні за допомогою «потужного фактора»:
X[k] = E[k] + W_N^k · O[k] X[k+N/2] = E[k] − W_N^k · O[k] E[k] = DFT парних індексів, O[k] = DFT непарних індексів W_N^k = e^(−i2πk/N) // потужний фактор Застосовується рекурсивно на стадіях log₂N з «батерфляй» комбінацій N/2, що коштує O(N log₂N) замість O(N²) — прискорення в 682 рази для N = 4096. У практиці вхідні дані спочатку перевертаються бітовим чином, а потім той самий ядро «батерфляй» запускається етап за етапом:
X[k] = E[k] + W_N^k · O[k] X[k+N/2] = E[k] − W_N^k · O[k] E[k] = DFT of even-indexed samples, O[k] = DFT of odd-indexed samples W_N^k = e^(−i2πk/N) // twiddle factor
Вікно та спектрограма
DFT явно припускає періодичність аналізованого блоку. Різкий обріз блоку еквівалентний множенню на прямокутне вікно, яке має широке синус-інтерпольоване спектр, що призводить до витоку енергії в сусідні біни. Використання розширеного вікна – Ханна, Хеммінга, Блекмана-Герріса – пригнічує цей витік за рахунок трохи ширших основних піків. Переміщення віконного DFT вздовж сигналу з перекриттям дає Короткочасний швидкісний перетворення; побудова діаграми її амплітуди як функції часу та частоти-інтенсивності створює спектрограму, де ноти музичних інструментів відображаються горизонтальними лініями, а форми артикуляції – вертикальним смуженням.
Від скрині до реальних застосувань
Визначення висоти звуку (pitch detection) знаходить базову частоту, для якої найсильніша за величиною буде відповідна біна; аудіо стиснення (MP3, AAC) відкидає частотні компоненти, які людський слух не розрізняє, завдяки психоакустичному маскуванню; мелограма – спотворення осі частот для узгодження з людським сприйняттям висоти звуку – є стандартним вхідним представленням для моделей мовлення, таких як Whisper. Все це походить від однієї й тієї ж мережі «Коолі-Тукі» (Cooley-Tukey butterfly network).
Frequently asked questions
Чому нам потрібна FFT замість простого обчислення DFT безпосередньо?
Пряма формула DFT коштує O(N²) множень, що стає непридатним для використання після кількох тисяч зразків. Швидкість Коулі-Тьюкі Fast Fourier Transform рекурсивно розділяє DFT довжиною N на дві DFT довжиною N/2, зменшуючи вартість до O(N log N) – це прискорення в 682 рази при N = 4096 – шляхом обчислення абсолютно тих самих чисел, але значно ефективніше.
Чому DFT реального запису потрібно спочатку вікна?
Застосування DFT до необробленого блоку з різким розрізом математично еквівалентно множенню сигналу на прямокутне вікно, яке має широкий sinc-функціональний спектр, що витісняє енергію від сильних тонів у сусідні біни. Плавкий градієнт, такий як вікна Хенна або Хаммінга, зменшує цей витік енергії, але за рахунок трохи ширшого основного лобу.
Який компроміс у виборі розміру блоку FFT N?
Більший N забезпечує більш високу роздільну здатність по частоті (fs/N Гц на бін), але меншу роздільність по часу, оскільки весь блок розглядається як один момент часу. Аналіз мовлення зазвичай використовує N = 512–2048 (11–46 мс при 44,1 кГц); виявлення музичних тонів часто використовує N = 4096 для більш чітких бінів частоти.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію the simulation