Яку методологію використовувати для дискримінації різних (музичних?) Тонів


12

Я намагаюся дослідити і з’ясувати, як найкраще напасти на цю проблему. Це стримує обробку музики, обробку зображень та обробку сигналів, і тому існує безліч способів переглянути це. Мені хотілося поцікавитись найкращими способами наближення до нього, оскільки те, що може здатися складним у чистому домі sig-proc, може бути простим (і вже вирішеним) людьми, які займаються обробкою зображень чи музики. У будь-якому випадку проблема полягає в наступному:введіть тут опис зображення

Якщо ви простите моєму малюнку проблеми, ми можемо побачити наступне:

З наведеного малюнка у мене є 3 різних "типи" сигналів. Перший - це імпульс, який на зразок "крокує" по частоті від до , а потім повторюється. Він має конкретну тривалість імпульсу та певний час повторення імпульсу.f1f4

Другий існує лише у , але має меншу довжину імпульсу та більш швидку частоту повторення імпульсу.f1

Нарешті, третій - це просто тон у .f1

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

Деякий додатковий контекст і те, що я до цього часу думав:

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

Точка опрацювання сигналу: одне, на що я звернув увагу, - це робити цепстральний аналіз , а потім, можливо, використовуючи пропускну здатність Габора прокладки черепашки для розрізнення сигналу-3 від інших 2, а потім вимірювати найвищий пік черевної труби в дискримінаційному сигналі- 1 від сигналу-2. Це моє поточне робоче рішення для обробки сигналів.

Точка обробки зображень: Тут я думаю, оскільки я можу насправді створювати зображення відносно спектрограм, можливо, я можу використовувати щось із цього поля? Я не глибоко знайомий з цією частиною, але що робити з виявленням 'лінії' за допомогою Hough Transform , а потім якимось чином 'рахувати' рядки (що, якщо вони не є лініями і краплями?) Та йти звідти? Звичайно, в будь-який момент часу, коли я беру спектрограму, весь імпульс, який ви бачите, може бути зміщений уздовж осі часу, тож це буде мати значення? Не впевнений...

Позиція музичної обробки: Підмножина обробки сигналів напевно, але мені здається, що сигнал-1 має певну, можливо, повторювану (музичну?) Якість, яку люди в музичній програмі бачать весь час і вже вирішили в можливо, дискримінаційні інструменти? Не впевнений, але думка в мене виникла. Можливо, ця точка зору - найкращий спосіб поглянути на це, взявши шматок часової області та дражнивши ці ступінчасті ставки? Знову ж таки, це не моє поле, але я дуже підозрюю, що це щось, що було бачено раніше ... чи можемо ми розглядати всі 3 сигнали як різні типи музичних інструментів?

Я також повинен додати, що у мене є пристойний обсяг даних про навчання, тому, можливо, використання деяких з цих методів може просто дозволити мені зробити деякий видобуток функції, з яким я потім можу використовувати K-Найближчий сусід , але це лише думка.

У будь-якому випадку я зараз стою, будь-яка допомога вдячна.

Дякую!

РЕДАКТИ, засновані на коментарях:

  • Так, , , , - всі заздалегідь відомі. (Дещо дисперсії, але дуже мало. Наприклад, скажемо, що ми знаємо, що = 400 Гц, але він може зайти в 401,32 Хц. Однак відстань до велика, тому може бути 500 Гц порівняно.) Сигнал-1 ЗАВЖДИ наступить на ці 4 відомі частоти. Сигнал-2 ВЖЕ буде мати 1 частоту.f 2 f 3 f 4 f 1 f 2 f 2f1f2f3f4f1f2f2

  • Швидкість повторення імпульсів і довжина імпульсу всіх трьох класів сигналів також всі відомі заздалегідь. (Знову деяка дисперсія, але дуже мало). Деякі застереження, хоча частота повторення імпульсу та довжина імпульсів сигналів 1 і 2 завжди відомі, але вони є діапазоном. На щастя, ці діапазони взагалі не перетинаються.

  • Вхід - це безперервний часовий ряд, що надходить у режимі реального часу, але ми можемо припустити, що сигнали 1, 2 і 3 взаємно виключають, при цьому лише один з них існує в будь-який момент часу. У нас також є велика гнучкість щодо того, скільки часу ви забираєте його на обробку в будь-який момент часу.

  • Дані можуть бути галасливими, так, і в діапазонах, що не є у наших відомих , , , можуть бути хибні тони тощо . Це цілком можливо. Ми можемо припустити, що середньовисокий показник SNR є лише для того, щоб "розпочати" проблему.f 2 f 3 f 4f1f2f3f4


Яким буде ваш внесок? 1 / Безперервний потік, у якому ви хочете відокремити виникнення сигналу 1/2 / 3 (проблема сегментації + класифікація) або 2 / окремих зразків лише з одним типом сигналу, який потрібно класифікувати на категорії 1/2/3? Ви описуєте кілька характеристик сигналів: PRT сигналу 1; частота повторення сигналу 2; частота сигналу 3; значення f1 / f2 / f3 / f4. Ці параметри відомі заздалегідь чи змінними? Нарешті, у випадку, якщо ваш вхід має декілька випадків подання цих сигналів до сегменту, яка типова тривалість сегмента?
пікенети

Ще одне питання: з ваших малюнків виглядає, що ви маєте справу з чистими тонами (без гармонік і без шуму). Це так, чи дані набагато брудніші, ніж ваші малюнки?
пікенети

@pichenettes Спасибі, я додав потрібну інформацію в редагуванні.
Космічний

Будемо вдячні подальші дії щодо вашого прогресу та вирішення цього питання. Аналіз залежить в основному від часової мінливості вивчених звуків. якщо вони швидші, ніж вікно Fft, скажімо, що під 256 зразками вам знадобляться високочастотні спектрограми. Чим точніша спектрограма, тим більше ви можете бачити дрібну детальну інформацію у своїх звуках. FFT, ймовірно, добре, після цього питання - просто випадок додавання логічних операторів для класифікації звуків за допомогою простих процедур аналізу шаблонів. проаналізувати тривалість імпульсів, відстань між ними, хордальний характер цілого тощо.
спільно зрозумілий

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

Відповіді:


7

Крок 1

Обчисліть STFT сигналу, використовуючи розмір кадру, менший за тривалість імпульсу. Я припускаю, що цей розмір кадру все ще запропонує достатню частотну дискримінацію між f1, f2, f3 та f4. - індекс кадру, - індекс FFT bin.m kS(m,k)mk

Крок 2

Для кожного кадру STFT обчисліть домінуючу основну частоту, використовуючи щось на зразок YIN, поряд з індикатором "достовірності кроку", таким як глибина DMP "занурення", обчисленої YIN.

Назвемо домінанту f0, оцінену в кадрі і достовірність кроку, виявлену в кадрі .m v ( m ) mf(m)mv(m)m

Зауважте, що якщо ваші дані не такі галасливі, ви можете піти, скориставшись автокореляцією як оцінкою висоти та відношенням більшого вторинного піку автокореляції до як показника достовірності кроку. Однак, YIN - це дешево.r0

Можна також обчислити загальну енергію сигналу кадру FFT .me(m)m

Крок 3

Розглянемо розсувне вікно з кадрів STFT. вибирається таким, що перевищує час повторення імпульсу і в 5-10 разів менше типової довжини сегмента сигналу (наприклад, якщо поява сигналу триває близько 10 секунд, а розмір кадру STFT становить 20 мс, ви можете вибрати ).M M = 50MMM=50

Витягніть такі функції:

  • ( f ( m ) ) m [ k - M , k + M ] , v ( m ) > τσf(k) - стандартне відхилення послідовності(f(m))m[kM,k+M],v(m)>τ
  • ( v ( m ) ) m [ k - M , k + M ]σv(k) - стандартне відхилення послідовності(v(m))m[kM,k+M]
  • ( e ( m ) ) m [ k - M , k + M ]σe(k) - стандартне відхилення послідовності(e(m))m[kM,k+M]

Інтуїтивно вимірює стабільність частоти основного складового компонента сигналу, вимірює мінливість "песистості" сигналу і мінливість амплітуди сигналу.σ v σ eσfσvσe

Це будуть функції, на яких можна базувати своє виявлення. Сигнали типу 1 матимуть високий (мінливий крок) та помірний та (стабільна потужність сигналу). Сигнали типу 2 матимуть низький (стійкий крок) та високий та (змінна сила). Сигнали типу 3 матимуть низький (стійкий крок) та низький та (стійка сила).σ v σ e σ f σ v σ e σ f σ v σ eσfσvσeσfσvσeσfσvσe

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

Крок 4

Для обробки вхідного потоку даних обчисліть STFT, обчисліть функції та класифікуйте кожне вікно STFT-кадрів.M

Якщо ваші дані та класифікатор хороші, ви побачите щось подібне:

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Це досить добре розмежовує час початку та закінчення та тип кожного сигналу.

Якщо ваші дані шумні, повинні бути помилкові неправильно класифіковані кадри:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

Якщо ви бачите багато лайна, як у другому випадку, використовуйте фільтр режимів для даних по сусідству з 3 або 5 виявленнями; або використовувати HMM.

Візьміть домашнє повідомлення

Те, на чому ви хочете базувати своє виявлення, не є спектральною ознакою, а узагальненою часовою статистикою спектральних ознак для вікон, які мають ту саму шкалу, що і тривалість вашого сигналу. Ця проблема дійсно вимагає обробки на двох масштабах часу: кадр STFT, на якому ви обчислюєте дуже локальні властивості сигналу (амплітуда, домінуючий крок, сила висоти) і більші вікна, над якими ви заглядаєте на часову мінливість цих властивостей сигналу.


Зауважте, що ви також можете виконати стиль розпізнавання мовлення, якщо ви хочете використовувати HTK або подібне ... Акустична модель: 4 телефони P1, P2, P3, P4 (тон у f1, тон у f2, тон у f3, тон у f4 ) + 1 символ S для тиші. 1 або 2 гаусівці на телефон. Модель слова W1 для сигналу 1: (P1 S P2 S P3 S P4 S) +. Модель слова W2 для сигналу 2: (P1 S) +. Модель слова W3 для сигналу 3: (P1) +. Модель вироку: (W1 | W2 | W3) *. Єдине застереження полягає в тому, що якщо ви використовуєте панель інструментів розпізнавання мовлення, вам доведеться налаштувати її вилучення функції фронтальним кінцем, оскільки MFCC є занадто низькою роздільною здатністю та високою точністю, щоб розрізнити f1 / f2 / f3 / f4.
пікенети

@pichenettes Дякую вам, пішенети, це дуже хороша відповідь - я маю пару спостережень: 1) Що таке "YIN", що ви згадуєте, а що таке "DMF"? Я не міг нічого знайти на них через Google. 2) Що саме таке "впевненість у висоті" як міра? 3) Ви згадуєте, що ви можете використовувати автокореляцію, щоб знайти впевненість у висоті - автокореляцію того, що, рамка часової області або STFT кадру? (Я не розумію цього, мабуть, тому, що я не знаю, що ви маєте на увазі впевненість у тоні). (продовження ...)
Spacey

@pichenettes (продовження) 4) Що стосується функцій, які існують НА ВІКНА, тільки так? Отже, ви обчислюєте три кроки на вікно з (у даному випадку) 101 кадрів? У цьому випадку, коли настає час тренуватися, мій 3-D 'пункт' був зроблений з 3-х балів за 101 ФРАМ, правильно? 5) У вашому кроці 4, коли у вас є число 1,1,1,2,2 тощо, кожне число відповідає тому, як ви класифікували ВІДПОВІДНЕ вікно? Перший '1' був класифікацією вікна, що складається з кадрів від -50 до 50, а другий '1' з вікна, складеного з кадрів -49 до 51, правильно? (Вікно ковзає на 1 кадр щоразу) ...
Spacey

@pichenettes 6) Нарешті, я мав би зазначити, що це повинно використовуватися як «тривога», так що якщо присутній або сигнал-1, або сигнал-2, я отримую сигнал тривоги, але тоді нічого не повинно вимикатися, якщо там нічого немає - чи не повинен бути якийсь поріг, який потрібно збігати, перш ніж він навіть почне пробувати та класифікувати, щоб у вас не було помилкових позитивних результатів? (наприклад, фоновий шум, наприклад). (Я зараз лише дізнаюся про класифікатор Naive Bayes, тому не знайте, чи є його багатокласним). 7) ДЯКУЄТЬСЯ ВЕЛИКИМ ШЛЯХОМ І ДЯКУЄТЬСЯ НА ПРАВДІ! Тисяча та один привіт для вас! :-)
Космічний

1
1 / YIN - класичний алгоритм виявлення кроку для мовних та музичних сигналів. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF - "різниця величини", кількість, обчислена за алгоритмами, як YIN, для оцінки тону. 2 / Алгоритм виявлення кроку, як YIN, дасть оцінку основної частоти та "показник довіри", який вказує, наскільки ймовірно, що повернута крок є правильною відповіддю. На шумних сигналах або сигналах, що демонструють кілька смол, це буде низько, на чистій синусоїді це буде дуже високо.
пікенети

3

Альтернативним підходом можуть бути чотири гетеродинових детектора: Помножте вхідний сигнал на локальні осцилятори 4 частот і фільтр низьких частот на отримані виходи. Кожен вихід представляє вертикальну лінію на вашому малюнку. Ви отримуєте вихід на кожній з 4-х частот як функцію часу. За допомогою фільтра низьких частот ви можете набрати, яке відхилення частоти ви хочете дозволити, а також як швидко ви хочете змінити результати, тобто наскільки гострі краї.

Це буде добре, навіть якщо сигнал досить галасливий.


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