Розпізнавання даних, згрупованих у форми


9

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

введіть тут опис зображення

Мені потрібен певний спосіб отримати кожен окремий склад (кожна форма з розділенням по обидва боки) і зберегти їх у змінну або у власні файли, щоб я міг запустити кореляцію Пірсона між ними за допомогою SciPy.

Також я віддаю перевагу Python, але я відкритий для кодування іншими мовами, якщо у вас є інший спосіб це зробити.

Дякую!


Я не повністю знайомий з тим, що я збираюся запропонувати, але виглядає як неперервна вейвлет-трансформація з вейвлетом, що містить властивості складів, на що варто звернути увагу.
heltonbiker

Вам потрібно знайти форму або ви намагаєтеся класифікувати птахів? Якщо так, то використовується звук моделі прихованої Маркової?
Михайло

Відповіді:


2

Два питання:

1 / Близько 8 с. Ми можемо спостерігати стабільний крок протягом 100 м або близько того, а потім раптове збільшення падає до 8,5 с. Чи вся ця послідовність (8s - 8.5s) утворює єдине ціле, чи ви вважаєте два етапи (стабільні та зменшені) двома сутностями?

2 / Ви хочете працювати з наглядом чи без нього. Чи знаєте ви заздалегідь "зразки", які потрібно шукати?

  • Якщо ви хочете працювати без нагляду (скажімо, ви зібрали записи і націлені на витяг з нього "структурованого представлення"), ваша проблема спочатку схожа на виявлення голосової активності. Просто використовуйте інтенсивність сигналу, можливо, в поєднанні з метрикою "тонусності" (скажімо, співвідношення максимуму автокореляції в діапазоні мостів, 1 кГц - 5 кГц тут) для виявлення сегментів, де є активний сильний тональний тон. Медіану відфільтруйте отриману послідовність, щоб згладити її, а потім поріг її, щоб отримати різні сегменти. Після розбиття сигналу на сегменти, ви можете робити цікаві речі з ними. Наприклад, ви можете витягнути для кожної з них траєкторію кроку (послідовність з найсильнішим піком частоти для кожного кадру FFT або щось більш надійне, витягнуте за допомогою справжнього оцінювача тону), використовувати DTW для обчислення матриці попарних відстаней між кожним блоком, а також використовувати алгоритм кластеризації (k-засоби, агломераційне кластеризація) для ідентифікації груп подібних шарів шага (сегменти 8: 8,5 і 10: 10,5). Цілком ймовірно, що непідконтрольний підхід буде пересеченим - наприклад, 7.6: 8.5 та 9.6: 10.5 буде визнано повторенням двох тих же блоків, тоді як для вас вони принципово можуть бути одним єдиним шаблоном, але ви можете використовувати щось подібнеСеквітур мати один рівень структури вище.

  • Якщо у вас є заздалегідь заданий словник "шаблонів", на якому ви хочете позначати свій сигнал, вам краще дотримуватися виду підходів, використовуваних для розпізнавання мовлення, з тією лише основною відмінністю, що розпізнавання мови не враховує крок, хоча і у вашому крок справи - це єдина інформація, яку слід розглядати! Система розпізнавання мови вирішує як завдання сегментації, так і розпізнавання в одній операції декодування FST.

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