Дискретна трансформація Фур'є - пошук основного швидко?


9

По-перше, я прошу вибачення за те, що я розробник програмного забезпечення, і я дуже довго не занурювався в чисту математику, тому моє питання може здатися німим. Я сподіваюся, що не.

Контекст розпізнавання кроку в музиці.

Якщо ви візьмете музичну ноту і застосуєте до неї перетворення Фур'є, у вас буде і нескінченна сума амплітуд для заданих частот. Наприклад, якщо я граю на ноті, основоположною якої є , на будь-якому інструменті, після перетворення Фур'є, у мене будуть гармоніки при . Кожна частота матиме задану амплітуду, яка визначає тембр інструменту (фортепіано, голос, труба, ... усі слідують за цим хлібом, але у вас будуть різні амплітуди для кожної гармоніки)FF,2F,3F,,nF

Тепер то , що я хотів би зробити це з даними звуковим сигналом, знайти . Просто це. Це складніше, ніж здається, тому що у вас завжди буде фоновий шум і так далі ... Крім того, не обов'язково частота з найвищою амплітудою!FF

Тож моя ідея пошуку полягає в застосуванні DFT (фактично FFT для швидкості) і знаходження частоти , щоб був максимальним у виході FFT.FFF+2F+3F++nF

Як ви вважаєте, це взагалі можливо? Як ви вважаєте, це можливо за дуже короткий час (скажімо, <5 мілісекунд)?


Можливо, це може бути відповіддю: edaboard.com/thread197897.html

Ну так, але це інший метод, чи не так? ІМХО, це простіше, але набагато менш надійно, оскільки він не може розрізнити гармонічні та негармонічні звуки ...
Дінаїз,

Відповіді:


6

Те, що ви описуєте, дуже схоже на метод гармонійного спектра продукту оцінки тону, описаний у цій статті Стенфордського CCRMA .

FFT не дає вам "нескінченну суму амплітуд", а кінцеву кількість бункерів результатів залежно від довжини FFT.

5 мЗ - це лише 1 період ноти 200 Гц, і лише частка періоду нижче 200 Гц. Розпізнавання музичного кроку зазвичай вимагає слухання або аналізу декількох кількостей періодів періодичності звукового звуку. І багато музики використовують ноти нижче G2. Якщо у вас достатня довжина даних, обчислення оцінки тону з цих даних може зайнятись лише на порядок мікросекунд, а не мілісекунд на сучасному ПК або мобільному пристрої.


Гарна думка. Однак якщо у вас вже є 2F і 3F, вам дійсно не потрібен F, чи не так? У вашому прикладі 2F = 400 Гц і 3F = 600 Гц, тож ви, мабуть, можете дізнатись, що F було 200, навіть не почувши достатньо звуку, щоб мати період 5 мс, чи не так? Також я чув про вейвлет-перетворення. Ви вважаєте, що це кращий метод зробити це?
Дінаїз

@Dinaiz: Залежить від джерела проникливого звуку та від того, чи справді ті фрагменти частоти обертону є нерухомими чи ні. Вейвлет - це зовсім окреме питання.
hotpaw2

Тож цей метод не підходить для пошуку f0 у «майже реальному часі». Чи можна в нинішньому стані мистецтва знайти інструмент f0 за менш ніж кілька мілісекунд за допомогою будь-якого інструменту, або це втрачена причина, і я повинен відмовитися від своїх пошуків? : D
Дінаїз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.