Извлечение аудио функций - PullRequest
       23

Извлечение аудио функций

23 голосов
/ 22 сентября 2009

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

Существуют ли библиотеки, которые могут помочь? Я знаю о libxtract, но не использовал его.

Кроме того, существуют ли библиотеки низкого уровня c / c ++, которые были бы хороши для работы с аудиопотоками? У меня просто нет опыта в этой области.

Спасибо за помощь,

Eric

Ответы [ 6 ]

18 голосов
/ 19 июля 2011

Для полноты изложения мне известны следующие варианты:

Yaafe и libXtract, вероятно, наиболее высоко оптимизированы с точки зрения производительности (см. Тесты ниже). Они оба разделяют промежуточные вычисления между экстракторами признаков. Например, они будут запускать только одно FFT на окно, а затем любой экстрактор, которому требуется FFT, будет просто ссылаться на это FFT. То же самое для функций более высокого уровня. Другие упомянутые экстракторы на самом деле этого не делают, потому что используют архитектуру плагинов - то есть каждый экстрактор должен быть автономным.

Sonic Annotator и его друзья извлекают выгоду из архитектуры плагинов, поэтому вы можете пользоваться всеми видами сторонних экстракторов функций (включая libXtract, aubio и Essentia). Экосистема плагинов Vamp действительно довольно разнообразна и замечательна. В SDK Vamp Plugin есть полный пример кода для сборки хоста плагина.

Я очень мало знаю об Essentia, за исключением того, что он новее других и прибывает из превосходной группы музыкальных технологий в Помпеу Фабра. Это похоже на большой и хорошо организованный проект. Документация очень хорошая. Они используют его в масштабных проектах по анализу музыки (таких как Freesound и AcousticBrainz). В центре внимания проекта, кажется, на производительности и правильности. Определенно стоит посмотреть.

MARSYAS - это целая структура, а не только библиотеки. Документация довольно хорошая. Он находится в стадии активной разработки и является частью MOOC, периодически предлагаемой Джорджем Цанетакисом в UVic. Кажется, что вокруг MARYSYAS построено довольно много приложений и проектов.

CAMEL, Maaate и FEAPI кажутся бездействующими - с 2010, 2012 и 2013 годов не выпускали новых версий соответственно.

Вот пример (в секундах) сравнения 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

Стоит также отметить, что вы можете запускать код Matlab из C ++, что открывает возможности для использования:

  • MIR Toolbox
  • Timbre Toolbox

Есть также интересный опрос или экстракторы функций 2015 года, с большим количеством информации о производительности, функциях, экосистемах и т. Д .:

https://www.ntnu.edu/documents/1001201110/1266017954/DAFx-15_submission_43_v2.pdf/06508f48-9272-41c8-9381-7639a0240770

15 голосов
/ 30 декабря 2009

Marsyas - это очень полный фреймворк, который также предлагает извлечение аудио функций.
Он написан на C ++ и предлагает механизм «исправления», который позволяет вам соединять вместе предопределенные компоненты.
Фреймворк поставляется с несколькими примерами.
Посмотрите на источники, чтобы узнать, как создавать собственные экстракторы.
Инструмент bextract командной строки, который поставляется с Marsyas, может извлечь:

  • 1011 * коэффициенты MFCC *
  • Скорость пересечения нуля
  • Спектральный центроид
  • ...

Marsyas поддерживает несколько платформ, включая Windows, Linux и Mac OS X (я также видел статью, в которой упоминалось, что он также работает на iPhone)

6 голосов
/ 17 января 2011

Существует также libxtract , который предоставляет полный набор из более чем 50 аудиофункций, предназначенных для использования в режиме реального времени. Это «бережливая» библиотека с минимальными зависимостями, которая предоставляет привязки для Python и Java. Существует также «внешний объект», который делает функциональность libxtract доступной в компьютерной музыкальной среде реального времени Pure Data.

Каноническая ссылка на libxtract - этот документ .

4 голосов
/ 05 января 2015

Хотя это очень старый пост, но, может быть, кто-то доберется сюда после поисков. Теперь есть несколько очень хороших наборов инструментов для анализа аудио:

  1. TarsoDSP https://github.com/JorenSix/TarsosDSP
  2. OpenSmile http://www.audeering.com/research/opensmile
  3. CMU Sphinx http://cmusphinx.sourceforge.net/
3 голосов
/ 30 декабря 2009

Сначала прочитайте о БПФ и цифровой обработке сигналов. Затем получите учебник по распознаванию речи, поскольку он основан именно на том, что вы хотите сделать - механизм распознавания речи извлекает «функции» из звука, чтобы определить, о чем идет речь.

Я обнаружил, что коэффициенты Cepstral делают большие "особенности" в смысле машинного обучения.

2 голосов
/ 26 июня 2014

Проверить сайт http://www.audiocontentanalysis.org/. В разделе «программное обеспечение» вы найдете список различных библиотек, связанных с обработкой аудиосигнала, извлечением функций и поиском музыкальной информации. Кроме того, веб-сайт (и его книга), кажется, очень хорошая отправная точка для погружения во всю тему.

...