Аналіз частот у реальному часі · Web Audio API · Логарифмічна шкала
Аналізатор спектру в реальному часі на основі AnalyserNode Web Audio API.
Оберіть одне із шести вбудованих аудіоджерел — синусоїду, білий і рожевий шум,
пилоподібний та меандр, а також музичний акорд — і миттєво побачите їхні спектральні
«відбитки пальців» на логарифмічній осі частот у дБ. Маркери утримання піків та
осцилоскоп дають повну картину сигналу в часі й частоті.
FFT (швидке перетворення Фур'є) розкладає будь-який сигнал у часовій області на
частотні складові. Для сигналу, відібраного з частотою fs
і кількістю зразків N, FFT дає N/2 частотних бінів шириною
fs/N Гц кожен. AnalyserNode Web Audio API обчислює
оконне FFT за вікном Блекмана для зменшення спектральних витоків. Подвоєння розміру FFT
удвічі підвищує частотну роздільність, але вдвічі знижує часову — фундаментальний
компроміс між часом і частотою.
Оберіть джерело звуку кнопками вище. Спектр показує частоту (20 Гц–20 кГц, логарифмічна шкала) відносно амплітуди (дБ). Для синусоїди перетягніть повзунок частоти і спостерігайте, як рухається одиничний пік. Переключіться на пилоподібний і побачите основну та парно-непарні гармоніки. Рожевий шум демонструє спад 1/f (~3 дБ/октаву). Збільшуйте розмір FFT для вищої частотної роздільності.
Швидке перетворення Фур'є (1965, Кулі та Тюкі) скоротило обчислення ДПФ від O(N²) до O(N log N) — FFT на 1024 зразках приблизно в 100 разів швидше за наївний ДПФ. Сучасні аудіоеквалайзери, розпізнавання мовлення і «відбитки пальців» музики (Shazam) — усе це побудовано на аналізі FFT. Людське вухо сприймає частоту приблизно логарифмічно, тому аналізатори спектру використовують логарифмічну вісь частот.
Ця симуляція перетворює будь-яке з шести аудіоджерел на живий частотний спектр за допомогою AnalyserNode Web Audio API. Швидке перетворення Фур'є розкладає сигнал у часовій області на частотні складові: для частоти дискретизації fs та розміру FFT N воно повертає N/2 бінів шириною fs/N Гц кожен. Амплітуди відображаються на логарифмічній осі частот (від 20 Гц до 20 кГц) відносно шкали амплітуди в децибелах від -80 до 0 дБ.
Елементи керування дозволяють вибрати джерело (синус, білий шум, рожевий шум, пилоподібний, меандр чи акорд), змінювати частоту синуса від 20 Гц до 8 кГц, обирати розмір FFT від 512 до 4096 зразків та налаштовувати спектральне згладжування від 0 до 0,95. Утримання піків позначає поточні максимуми, а смуга осцилоскопа показує необроблену форму сигналу. Аналіз спектру лежить в основі аудіоеквалайзерів, розпізнавання мовлення та інструментів ідентифікації музики на кшталт Shazam.
Що таке аналізатор спектру FFT?
Це інструмент, який показує, скільки енергії містить сигнал на кожній частоті. Швидке перетворення Фур'є перетворює форму сигналу в часовій області на набір частотних бінів, а аналізатор будує графік їхніх амплітуд. Тут результат малюється наживо у вигляді кольорових смуг уздовж логарифмічної осі частот.
Як ця симуляція генерує звук?
Вона використовує Web Audio API. Синусоїдальні, пилоподібні та меандрові тони надходять від OscillatorNode, акорд накладає три синусоїдальні осцилятори на нотах A4, C5 та E5, а джерела шуму заповнюються вузлом ScriptProcessorNode. Усі джерела підключаються до вузла підсилення, з'єднаного з AnalyserNode, який виконує FFT у кожному кадрі.
Що насправді роблять елементи керування?
Кнопки джерела обирають, який сигнал аналізується. Повзунок частоти (від 20 Гц до 8 кГц) задає висоту синусоїдальних, пилоподібних та меандрових тонів. Селектор розміру FFT змінює роздільність аналізу, а повзунок згладжування усереднює послідовні кадри. Пауза заморожує малювання, а Утримання піків відстежує найвищий рівень, досягнутий у кожному біні.
Розмір FFT задає кількість зразків, що аналізуються за кадр: 512, 1024, 2048 чи 4096. Більший розмір дає більше частотних бінів та тоншу роздільність (кожен бін охоплює fs/N Гц), але покриває довше часове вікно, тож відображення реагує повільніше. Панель статистики показує поточне значення Гц на бін.
Дискретне перетворення Фур'є записується як X[k] = сума по n від x[n] помножене на e^(-i 2 pi k n / N). FFT — це швидкий алгоритм, який обчислює той самий результат за O(N log N) операцій замість O(N у квадраті). Бін k відповідає частоті k помножене на fs та поділене на N.
Сприйняття висоти звуку людиною приблизно логарифмічне, тож кожна октава подвоюється за частотою. Логарифмічна вісь дає однаковий простір екрана кожній октаві, відповідаючи тому, як ми чуємо, та полегшуючи порівняння низького, середнього й високого вмісту. Саме тому лінії сітки припадають на 20, 50, 100, 200, 500 Гц і так далі.
Він задає smoothingTimeConstant вузла AnalyserNode — значення від 0 до 0,95, що змішує поточний спектр із попереднім. Низькі значення дають швидку, тремтливу реакцію, яка виявляє перехідні процеси; високі значення дають стабільніше, усереднене відображення, яке легше читати, але повільніше реагує.
Чиста синусоїда містить енергію на одній частоті, тож показує один пік. Пилоподібний сигнал багатий на гармоніки зі складовими на кожному цілому кратному основної частоти, тож виглядає як низка піків, що спадають за амплітудою. Меандр аналогічно показує непарні гармоніки.
У кожному кадрі код сканує всі біни, знаходить той, що має найбільшу амплітуду, і перетворює його назад на герци за формулою бін помножене на fs та поділене на розмір FFT. Це значення показується як Домінантна частота. Точність обмежена шириною біна, тож більші розміри FFT дають точніше зчитування.
Так, у межах браузерної демонстрації. AnalyserNode виконує справжнє оконне FFT та повідомляє реальні амплітуди в децибелах. Розташування бінів, гармонічна структура та спад рожевого шуму поводяться коректно. Точні амплітуди піків залежать від внутрішньої віконної функції та обраного згладжування, тож сприймайте зчитування як орієнтовні, а не як каліброване вимірювання.
Вони є центральними в аудіоінженерії, де керують еквалізацією та зведенням, та в телекомунікаціях для дослідження радіосигналів. Той самий аналіз FFT живить розпізнавання мовлення, сонар і моніторинг вібрацій, а також сервіси ідентифікації музики на кшталт Shazam, які звіряють записи з базою спектральних відбитків.