Я читав в Інтернеті шматочки та фрагменти, але просто не можу все це скласти разом. У мене є деякі базові знання про сигнали / DSP речі, які повинні бути достатньою умовою для цього. Мене цікавить врешті-решт кодування цього алгоритму на Java, але я ще не розумію його повністю, тому я тут (це вважається математикою, правда?).
Ось як я думаю, що це працює разом із прогалинами в моїх знаннях.
Почніть зі свого звукового зразка мови, скажімо, файл .wav, який ви можете прочитати у масиві. Назвіть цей масив , де варіюється від (так вибірки). Значення відповідають інтенсивності звуку, я думаю - амплітудам.n 0 , 1 , … , N - 1 N
Розділіть аудіосигнал на окремі "кадри" розміром 10 мс, якщо ви вважаєте, що мовленнєвий сигнал є "нерухомим". Це форма квантування. Отже, якщо швидкість вибірки становить 44,1 кГц, 10 мс дорівнює 441 вибірці або значенню .
Зробіть перетворення Фур'є (FFT для обчислення). Тепер це робиться на всьому сигналі або на кожному окремому кадрі ? Я думаю, що є різниця, оскільки в цілому перетворення Фур'є розглядає всі елементи сигналу, тому з'єднаний з з'єднані з де - менші кадри. У будь-якому випадку, скажімо, ми робимо деякий FFT і закінчуємо на решту цього.F ( x [ n ] ) ≠ F ( x 1 [ n ] ) F ( x 2 [ n ] ) … F ( x N [ n ] ) x i [ n ] X [ k ]
Картографування до масштабу Мела та ведення журналів. Я знаю, як перетворити звичайні номери частот на шкалу Мела. Для кожного з ("вісь x", якщо ви мені дозволите), ви можете зробити формулу тут: http://en.wikipedia.org/wiki/Mel_scale . Але як щодо "y-значень" або амплітуд ? Вони просто залишаються тими ж значеннями, але зміщуються до відповідних плям на новій осі Мела (x-)? Я бачив, що в деякому документі було щось про реєстрацію фактичних значень тому що якщо коли один з цих сигналів вважається шумом, ви не хочете , робота журналу в цьому рівнянні перетворює мультиплікативний шум у аддитивний шум, який, сподіваємось, може бути відфільтрований (?).
Тепер останнім кроком є прийняття DCT вашого зміненого зверху (однак він в кінцевому підсумку стає модифікованим). Потім ви берете амплітуди цього кінцевого результату, і це ваші MFCC. Я читав щось про викидання значень високої частоти.
Тому я намагаюся по-справжньому вияснити, як обчислити цих хлопців крок за кроком, і явно деякі речі ухиляються від мене згори.
Крім того, я чув про використання "фільтрів банків" (масив частотних фільтрів в основному) і не знаю, чи це стосується створення кадрів з вихідного сигналу, чи, можливо, ви робите кадри після FFT?
Нарешті, є щось, що я бачив про MFCC, що мають 13 коефіцієнтів?