Извлечение аудиофункций
Мне интересно узнать и написать систему, которая будет извлекать функции из аудиофайлов (mp3, wav и т.д.), которые впоследствии могут быть использованы для любых целей. В будущем я надеюсь использовать его для написания некоторого программного обеспечения для сходства музыки.
Существуют ли библиотеки, которые существуют, чтобы помочь? Я знаю libxtract, но не использовал его.
Кроме того, существуют ли библиотеки с низким уровнем c/С++, которые бы хорошо справлялись с аудиопотоками? У меня просто нет опыта в этой области.
Спасибо за помощь,
Эрик
Ответы
Ответ 1
Marsyas - очень полная структура, которая также предлагает извлечение аудио-функции.
Он написан на С++ и предлагает механизм "исправления", который позволяет подключать предопределенные компоненты.
Рамка содержит несколько примеров.
Взгляните на источники, чтобы узнать, как создавать пользовательские экстракторы.
Инструмент командной строки bextract
, который поставляется с Marsyas, может извлечь:
- коэффициенты MFCC
- Частота пересечения нулей
- Спектральный центроид
- ...
Marsyas поддерживает несколько платформ, включая Windows, Linux и Mac OS X (я также видел статью о том, что она также работает на iPhone)
Ответ 2
Для полноты, здесь варианты, о которых я знаю:
Yaafe и libXtract, вероятно, наиболее оптимизированы с точки зрения производительности (см. приведенные ниже тесты). Они оба разделяют промежуточные вычисления между экстракторами признаков. Например, они будут запускать только один FFT для каждого окна, а затем любой экстрактор, который требует БПФ, будет просто ссылаться на этот БПФ. То же самое для функций более высокого уровня. Другие упомянутые выше экстракторы на самом деле не делают этого, потому что они полагаются на архитектуру плагина, то есть каждый экстрактор должен быть автономным.
Sonic Annotator и друзья пользуются плагиновой архитектурой, поэтому вы можете наслаждаться всеми видами экстрактов сторонних разработчиков (включая libXtract, aubio и Essentia). Экосистема Vamp плагин действительно довольно разнообразный и замечательный. Здесь приведен пример кода кода в SDK Vamp Plugin для создания хоста плагинов.
Я очень мало знаю об Essentia, за исключением того, что она более новая, чем другие, и принадлежит отличной группе Music Technology Group в Помпеу-Фабре. Это похоже на большой и хорошо организованный проект. Документация очень хорошая. Они используют его в крупных проектах по анализу музыки (например, Freesound и AcousticBrainz). Ориентация на проект, по-видимому, зависит от производительности и правильности. Определенно стоит посмотреть.
MARSYAS - это целая структура, а не только библиотеки. Документация неплохая. Он находится в активной разработке и является частью MOOC, периодически предлагаемой Джорджем Тзанетакисом на UVic. По-видимому, существует множество приложений и проектов, построенных вокруг MARYSYAS.
CAMEL и Maaate выглядят бездействующими - не видели новых релизов с 2010 и 2012 годов соответственно.
Здесь сравнительный тест (в секундах), сравнивающий Sonic Annotator, Marsyas и YAAFE, выполняющий извлечение функции в течение 40 часов с моно-wav файлами 32 КГц:
S.A. Marsyas YAAFE
MFCC 1506 1168 142
Centroid 724 942 235
Rolloff 731 951 194
ZCR 221 620 57
Total 3182 3681 628
Ответ 3
Существует также libxtract, который предоставляет полный набор из более чем 50 аудиофункций, предназначенных для использования в реальном времени. Это "скудная" библиотека с минимальными зависимостями и обеспечивает привязки для Python и Java. Существует также "внешний объект", который делает функциональность libxtract доступной в компьютерной среде Pure Data в реальном времени.
Каноническая ссылка для libxtract эта статья.
Ответ 4
Хотя это очень старый пост, но, возможно, кто-то достигнет этого после поиска в Интернете. Теперь для анализа звука есть очень хорошие инструментальные средства:
Ответ 5
Сначала прочитайте о БПФ и обработке цифрового сигнала. Затем получите учебник по распознаванию речи, поскольку это зависит от того, что вы хотите сделать - механизм распознавания речи извлекает "функции" из аудио, чтобы определить, что говорить.
Я обнаружил, что Cepstral Coeffic делает отличные "функции" в смысле машинного обучения.
Ответ 6
Ознакомьтесь с веб-сайтом http://www.audiocontentanalysis.org/.
В разделе "Программное обеспечение" вы найдете список с различными библиотеками, связанными с обработкой аудиосигнала, извлечением функций и извлечением информации о музыке.
Кроме того, веб-сайт (и его книга) кажется очень хорошей отправной точкой для погружения во всю тему.