Распознавание данных, сгруппированных в фигуры


9

Я работаю над проектом на Python, чтобы обнаружить и классифицировать какую-нибудь птичью песню, и я оказался в положении, когда мне нужно преобразовать волновой файл в данные частоты и времени. Это не было большой проблемой, но чтобы классифицировать различные слоги по группам, мне нужно написать что-то, что будет определять, когда кластеры данных принимают определенную форму. Чтобы дать вам представление о том, как выглядят данные, вот изображение того, как данные выглядят при построении графика:

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

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

Кроме того, я предпочитаю Python, но я открыт для программирования на других языках, если у вас есть другой способ сделать это.

Спасибо!


Я не совсем знаком с тем, что я собираюсь предложить, но выглядит как Непрерывное вейвлет-преобразование с вейвлетом, который содержит свойства ваших слогов, на что стоит обратить внимание.
— Хелтонбайкер

Вам нужно найти форму или вы пытаетесь классифицировать птиц? Если да, то используется ли звук скрытой модели Маркова?
— Михаил

Ответы:


2

Два вопроса:

1 / Около 8 с, мы можем наблюдать стабильный шаг в течение 100 мс или около того, затем внезапное увеличение падает до 8,5 с. Является ли вся эта последовательность (от 8 до 8,5 с) единой сущностью, или вы считаете, что две стадии (стабильная, а затем убывающая) представляют собой две сущности?

2 / Вы хотите работать с или без надзора. Знаете ли вы заранее «шаблоны», чтобы искать?

  • Если вы хотите работать без присмотра (скажем, вы собрали записи и нацелены на извлечение из них «структурированного представления»), ваша задача на первом этапе сродни обнаружению голосовой активности. Просто используйте интенсивность сигнала, возможно, в сочетании с метрикой «тональности» (скажем, с отношением максимума автокорреляции в диапазоне ширин, 1 кГц - 5 кГц), чтобы обнаружить сегменты, где присутствует активный сильный тон. Медианный фильтр результирующей последовательности, чтобы сгладить его, а затем пороговое значение, чтобы получить различные сегменты. Как только вы разбили свой сигнал на сегменты, вы можете делать с ними интересные вещи. Например, вы можете извлечь для каждого из них траекторию основного тона (последовательность с самым сильным пиком частоты для каждого кадра FFT или что-то более устойчивое, извлеченное с помощью оценки истинного основного тона), используйте DTW для вычисления матрицы попарных расстояний между каждым блоком и используйте алгоритм кластеризации (k-средних, агломерационная кластеризация), чтобы идентифицировать группы одинаковых шаблонов основного тона (сегменты 8: 8,5 и 10: 10,5). Вероятно, что неконтролируемый подход будет чрезмерно сегментирован - например, 7.6: 8.5 и 9.6: 10.5 будут распознаны как повторение двух одинаковых блоков, в то время как для вас они могут быть принципиально одним шаблоном, но вы можете использовать что-то вродеSequitur, чтобы иметь один уровень структуры выше.

  • Если у вас есть предопределенный словарь «шаблонов», которым вы хотите пометить свой сигнал, вам лучше следовать типу подходов, используемых для распознавания речи, с тем единственным отличием, что распознавание речи не учитывает высоту тона, в то время как в вашем информация о кейсе - единственная информация, которую следует учитывать! Система распознавания речи решает задачи сегментации и распознавания в одной операции декодирования FST.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.