2010-05-12 2 views
4

Я ищу теорию, алгоритмы и аналогичные способы сравнения музыки. Более конкретно, я изучаю, как дублировать музыкальные треки, которые имеют разные битрейты или, возможно, несколько разные варианты (версия для радио с версией альбома), но в остальном они звучат одинаково.Сравнение музыкальных данных

Случаи для этого включают такие услуги, как Grooveshark, Youtube и т. Д., Где они получают лот дублирующих треков. Мне также интересны текстовые сравнения (Бритни Спирс и Бритни Спирс, насколько они отклоняются и т. Д.), Хотя это вторично, и у меня уже есть некоторые источники, которые можно продолжить в этой области.

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

Я знаю проекты, такие как musicbrainz.org, но не исследовал их дальше и был бы заинтересован, если такие проекты могут помочь в этом начинании.

+0

Если вы собираетесь написать инструмент, который смотрит на фактические аудиоданные: проверка на внезапные окончания (поврежденные файлы или просто дрянные рипы, где отсутствует конец, трудно найти вручную, если ваша музыкальная коллекция не очень маленькая, если только вы записывайте каждый раз, когда вы замечаете, что песня заканчивается abrubtly, что маловероятно, если вы делаете что-то еще во время прослушивания музыки) – ThiefMaster

ответ

1

Я написал аналогичный ответ здесь: Music Recognition and Signal Processing.

В исследовательском сообществе, задача о нахождении сходства между двумя сигналами (до экологических искажений, таких как шум, легкие вариации темпа, тон, или битрейт) известна как audio (or music) fingerprinting. Эта тема была изучена в течение как минимум десятилетия. Этот ранний (и часто цитируемый) paper by Haitsma and Kalker четко описывает проблему и предлагает простое решение.

Проблема поиска музыкального сходства между двумя версиями одной и той же песни известна как cover song identification. Эта проблема также изучается в значительной степени, но по-прежнему считается открытой.

Возможно, два самых популярных коммерческих решения для музыкального поиска на основе контента - Midomi и Shazam.

Я считаю, что это касается вашего вопроса. Проверьте Google Scholar на недавние решения этих проблем. Работы ISMIR доступны бесплатно онлайн.

+0

Спасибо, это был именно тот ответ, который я искал! –

3

Что касается сравнения имен, вы можете взглянуть на алгоритм Levenshtein distance. Для двух строк он рассчитает измерение расстояния, которое можно использовать в качестве основы для поиска дубликатов.

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

Это даже быстро реализовать, вот C# version:

public int CalculateDistance(string s, string t) { 
    int n = s.Length; //length of s 
    int m = t.Length; //length of t 
    int[,] d = new int[n + 1, m + 1]; // matrix 
    int cost; // cost 

    // Step 1 
    if (n == 0) return m; 
    if (m == 0) return n; 

    // Step 2 
    for (int i = 0; i <= n; d[i, 0] = i++) ; 
    for (int j = 0; j <= m; d[0, j] = j++) ; 
    // Step 3 
    for (int i = 1; i <= n; i++) { 
     //Step 4 
     for (int j = 1; j <= m; j++) { 
      // Step 5 
      cost = (t.Substring(j - 1, 1) == s.Substring(i - 1, 1) ? 0 : 1); 

      // Step 6 
      d[i, j] = System.Math.Min(System.Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost); 
     } 
    } 

    // Step 7 
    return d[n, m]; 
} 
+0

Я знаю алгоритм и намеревался использовать его для отсеивания «легких» целей, однако некоторые художники имеют одинаковые имя и есть перекрытие, где простого сравнения текста не будет, поэтому я ищу что-то конкретное для музыкальных данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^