【问题标题】:Comparison of music data [closed]音乐数据比较[关闭]
【发布时间】:2011-02-18 15:50:00
【问题描述】:

我正在寻找有关如何比较音乐的理论、算法和类似的东西。更具体地说,我正在研究如何重复检查具有不同比特率或可能略有不同变化(收音机版本与专辑版本)但听起来相同的音乐曲目。

这方面的用例包括 Grooveshark、Youtube 等服务,它们会在这些服务中获得很多重复曲目。我也对文本比较感兴趣(Britney Spers 与 Britney Spears,它们偏离了多远等),尽管这是次要的,而且我已经有一些关于这方面的资料。

我最感兴趣的是与编解码器无关的比较技术和算法(假设是“原始”流),但对编解码器特定的资源表示赞赏。

我知道诸如 musicbrainz.org 之类的项目,但尚未对其进行进一步调查,如果此类项目对这项工作有所帮助,我会很感兴趣。

【问题讨论】:

  • 如果您要编写一个查看实际音频数据的工具:如果您的音乐收藏是不是很小,除非你注意到一首突然结束的歌曲时写下来,如果你在听音乐时做其他事情,这不太可能)

标签: comparison string-comparison


【解决方案1】:

我在这里写了一个类似的答案:Music Recognition and Signal Processing

在研究界,寻找两个信号之间相似性的问题(直至环境失真,如噪声、节奏、音高或比特率的轻微变化)被称为 audio (or music) fingerprinting。这个话题已经被深入研究了至少十年。这个早期(并且经常被引用)paper by Haitsma and Kalker 清楚地描述了问题并提出了一个简单的解决方案。

在同一首歌曲的两个版本之间寻找音乐相似性的问题被称为cover song identification。这个问题也被大量研究,但仍然被认为是开放的。

也许两个最流行的基于内容的音乐搜索的商业解决方案是MidomiShazam

我相信这可以解决您的问题。查看 Google Scholar 以了解这些问题的最新解决方案。 ISMIR 程序可在线免费获取。

【讨论】:

  • 谢谢,这正是我正在寻找的答案!
【解决方案2】:

就名称比较而言,您可能想看看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];
}

【讨论】:

  • 我知道这个算法,并打算用它来清除“简单”的目标,但是有些艺术家有相同的名字,并且有一个重叠,简单的文本比较不会做,这这就是为什么我要寻找特定于音乐数据领域的东西。
猜你喜欢
  • 2014-07-21
  • 2012-07-13
  • 1970-01-01
  • 2010-09-11
  • 2010-10-10
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多