Подтвердить что ты не робот

Анализ аудиосигнала Birdsong - определение того, насколько хорошо сочетаются два клипа

У меня есть ~ 100 аудиофайлов wav с частотой дискретизации 48000 птиц одного и того же вида. Я хотел бы измерить сходство между ними. Я начинаю с волновых файлов, но я знаю (очень немного) больше о работе с изображениями, поэтому я предполагаю, что мой анализ будет сделан на изображениях спектрограмм. У меня есть несколько образцов некоторых птиц из разных дней.

Вот пример данных, а также (извинения за немаркированные оси, x - образец, y - линейная частота, умножая примерно на 10 000 Гц): alt text Эти пение птиц, по-видимому, встречаются в "словах", отдельных сегментах песни, которые, вероятно, являются уровнем, на котором я должен сравнивать; как различия между похожими словами, так и частота и порядок различных слов. alt text

Я хочу попытаться вытащить шум цикады - чирикать цикад с довольно постоянной частотой и, как правило, поэтапно, поэтому это не должно быть слишком сложно. alt text

Кажется, что некоторые пороговые значения могут быть полезны.

Мне говорят, что в большей части существующей литературы используется ручная классификация, основанная на характеристиках песни, таких как Pandora Music Genome Project. Я хочу быть как Echo Nest; используя автоматическую классификацию. Обновление: многие люди изучают это.

Мой вопрос в том, какие инструменты следует использовать для этого анализа? Мне нужно:

  • Фильтр/порог общего шума и сохранение музыки
  • Отфильтровать специфические шумы, например, цикад.
  • Разделить и классифицировать фразы, слоги и/или заметки в пение птиц
  • Создание мер разности/подобия между частями; то, что поднимет различия между птицами, сводя к минимуму различия между разными вызовами одной и той же птицы.

Мое оружие выбора - numpy/scipy, но может ли что-то вроде openCV быть полезным здесь?

Изменить: обновил мою терминологию и переформулировал подход после некоторых исследований, а Стив помог ответить.

4b9b3361

Ответ 1

Должен был сделать этот ответ, поскольку он слишком длинный для комментария.

Я сейчас работаю в этой области, поэтому чувствую, что у меня есть некоторые знания. Очевидно, с моей точки зрения я бы рекомендовал работать со звуком, а не с изображениями. Я также рекомендую использовать MFCC в качестве экстракции вашей функции (которую вы можете представить как коэффициенты, которые суммируют/характеризуют определенные поддиапазоны звуковой частоты [поскольку они есть]).

GMM - это путь.

Для выполнения этой задачи вы должны иметь (желательно много) помеченных/известных данных, в противном случае нет оснований для машинного обучения.

Техничность, которая может вам пригодиться:

'Затем, во время тестирования, вы отправляете запросите вектор MFCC для GMM, и он расскажет вам, какие виды он считает это. '

Точнее, вы отправляете запрос каждому GMM (который, если вы используете их правильно, каждый дает вам вероятность вероятности [вероятности] того конкретного вектор-функции, который испускается этим распределением вероятности). Затем вы сравниваете все оценки правдоподобия, которые вы получаете от всех GMM, и классифицируете на основе самого высокого уровня, который вы получаете.

UBMS

Вместо того, чтобы "отфильтровывать" шум, вы можете просто моделировать все фоновый шум/искажение канала с помощью UBM (Universal Background Model). Эта модель состоит из обучения GMM, использующего все данные обучения, доступные вам (то есть все данные обучения, которые вы использовали для каждого класса). Вы можете использовать это, чтобы получить "отношение правдоподобия" (Pr [x будет испускаться определенной моделью]/Pr [x будет испускаться фоновой моделью (UBM)]), чтобы помочь устранить любое смещение, которое может быть объяснено фоновой моделью сам по себе.

Ответ 2

Интересный вопрос, но довольно широкий. Я рекомендую посмотреть на существующую литературу по автоматической идентификации птиц. (Да, на нем работает куча людей.)

Эта статья (править: извините, мертвая ссылка, но эта глава Dufour и др. 2014 может быть еще более четкой) использует базовую двухэтапный метод распознавания образов, который я бы рекомендовал сначала попробовать: извлечение функции (в документе используются MFCC), затем классификация (в документе используется GMM). Для каждого кадра во входном сигнале вы получаете вектор MFCC (от 10 до 30). Эти векторы MFCC используются для обучения GMM (или SVM) вместе с соответствующими метками видов птиц. Затем во время тестирования вы отправляете запрос MFCC-вектору в GMM, и он расскажет вам, какие виды он считает.

Хотя некоторые из них применяют методы обработки изображений к проблемам классификации аудио/отпечатков пальцев (например, этот документ Google Research), я не рекомендую эти методы для вашей проблемы или подобные ей из-за раздражающих временных вариаций.

"Какие инструменты следует использовать для этого анализа?" Среди многих других:

  • извлечение функции: MFCC, обнаружение начала.
  • классификация: GMM, SVM
  • Google

Извините за неполный ответ, но это широкий вопрос, и в этой проблеме есть больше, чем можно кратко ответить здесь.

Ответ 3

Вы, по-видимому, уже выполняете STFT или что-то похожее на создание этих изображений, поэтому я предлагаю построить полезные сводки этих смешанных структур времени/частоты. Я помню систему, созданную для немного другой цели, которая способна эффективно использовать данные звуковой волны, разбивая ее на небольшое количество (< 30) бункеров по времени и амплитуде и просто подсчитывая количество выборок, которые упали в каждом бен. Возможно, вы сможете сделать что-то подобное, либо в области времени/амплитуды, либо во временной/частотной области.

Ответ 4

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

Вы можете попробовать мою библиотеку: pyAudioAnalysis, которая обеспечивает высокоуровневые обертки для классификации звука и кластеризации звука.