Логарифмічне перетворення фур'є (LFT) на звуковий сигнал


9

Я намагаюся якомога точніше проаналізувати музику. Звичайно, я спробував FFT, але у мене виникли деякі проблеми.

Я виявив, що низькі частоти мають дуже низьку роздільну здатність, ніж слух людини. Я дуже довго намагався FFT вирішити цю проблему, але навіть аналізуючи 8192 проби / с у частоті вибірки 44100 Гц (означає відсутність роздільної здатності часу), я отримав недостатньо дозвіл на низьких частотах.

Я знайшов мало рішень.

По-перше, квадратична інтерполяція на бункерах FFT.
Але це здається не ідеальним способом. Проблеми цього методу полягають у наступному:

1. "Якщо я хочу визначити частоти між частотними бунками, які три бункери потрібно вибрати, щоб зробити інтерполяцію?"
2. "Навіть я це роблю, фактичної додаткової інформації про результат немає. Я знаю, що інтерполяція - це якийсь хитрий метод ".

По-друге, витягування кожної частотної бункери з потрібною частотою, щоб я міг витягти бункери логарифмічно.
Але є критична проблема обчислювальної вартості: (можливо, перевищує) N ^ 2.

По-третє, LFT (логарифмічна трансформація Фур'є).
Цей запитувач логарифмічно розміщених зразків і дає мені результат саме того, що я шукаю з неймовірно швидкою швидкістю; /programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency

Але я не маю уявлення з цим алгоритмом. Я намагався зрозуміти папір і реалізувати його, але це було неможливо через відсутність моїх англійських та математичних навичок.

Отже, мені потрібна допомога щодо впровадження LFT.

Відповіді:


8

Найпростіше і найбільш прагматичне рішення - використовувати звичайний FFT досить великого розміру, щоб отримати необхідну роздільну здатність при найменшій цікавій частоті. Наприклад, якщо ви хочете роздільну здатність 1 Гц на найменшій цікавій частоті, вам знадобиться вікно FFT на 1 секунду, тобто розмір FFT повинен бути рівний частоті вибірки, наприклад, 44100.

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


Це дивно. Я знаю, що теоретично даних більше немає. Якщо я використовую FFT великого розміру, це правда, що він не в змозі проаналізувати дуже швидкий набір музичного інструменту. І це правда, що я не в змозі отримати більш високу роздільну здатність на низькій частоті. Але як щодо системи слуху людини? Як ця система отримує більш високу роздільну здатність і за часом, і за частотами?

3
Можливо, вам слід розглянути ієрахічний підхід, коли ви зменшуєте кожну наступну октаву на коефіцієнт 2, щоб ви могли використовувати короткі вікна часу на більш високих частотах і довші часові вікна на нижчих частотах? Це було б дещо аналогічно банку слухових фільтрів, де пропускна здатність збільшується з частотою.
Пол Р

Чудовий підхід. Тривалий час Ґерцель на низьких частотах, короткий час Ґерцель на високих частотах? Має сенс. Але це зажадає великих обчислювальних витрат.

Це, ймовірно , більш ефективним , ніж робити один великий FFT, незважаючи на те, що це більш складний. Наприклад, для 4-октавної ієрархії вам можуть знадобитися 4 x 2048 точкових FFT і 3 низькочастотні фільтри для x2 відбору проб вниз. Роздільна здатність найнижчого FFT буде такою ж доброю, як одна FFT 16384 балів за повної швидкості вибірки, але оскільки FFT становить O (n log n), загальна обчислювальна вартість буде значно нижчою.
Пол Р

ага, FFT 2048, нижній зразок x2, FFT 2048, нижній зразок x2 ...., ніж у мене є роздільна здатність часу та частоти, із значно меншими витратами, ніж 16384 FFT. Чудово. І зараз я маю інше рішення: на зразку 16384, Ґерцель щоразу на 32. Отже, накопичуючи, я можу добувати як низькі, так і високі частоти з меншими витратами. Дуже дякую. :)

0

Якщо для аналізу, який ви збираєтесь виконати, потрібна частота сигналів у кожному відрізку, ви можете скористатися Короткочасним перетворенням Фур'є для цього.

Кожен бункер FFT дає складне число, що представляє реальну та уявну складову, або після трохи фази та величини маніпуляцій.

Оскільки частота = dPhi / dt (фаза Phi ==), беручи відповідні бункери з пар послідовних спектрів STFT, можна обчислити частоту.

DSP Dimension має хорошу статтю про процес.


Схоже, я замислююся про ще більш складну проблему. Я можу використовувати FFT, але для аналізу звукових сигналів він не підходить.

3
Подивіться на "постійну Q" версію короткочасного перетворення Фур'є. Таке розташування STFT забезпечує роздільну здатність частоти, яка налаштована логарифмічно для задоволення вимог для різних діапазонів частот.
користувач2718

Я погляну. Я подумав, що це просто проста операція перетворення банку з фільтрами, застосована до результату fft.
Laie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.