我怎样才能检测到(最好用Python)可以用不同比特率编码的重复MP3文件(但它们是同一首歌)和可能不正确的ID3标签?
我知道我可以对文件内容进行MD5校验和,但这对于不同的比特率不起作用.我不知道ID3标签是否对生成MD5校验和有影响.我应该重新编码具有不同比特率的MP3文件,然后我可以进行校验和吗?您有什么推荐的吗?
我正在使用基于 Python 的音频库 librosa 来分析音符开始事件的音乐音轨。有了这些信息,我将这些曲目切成几个更小、非常短的片段/片段——所有这些都基于音符开始事件。
有了这些切片,我正在使用 librosa 内置工具分析它们,用于特征提取,如chromagram或MFCC。输出看起来像:
librosa.feature.chroma_stft(y=y, sr=sr)
array([[ 0.974, 0.881, ..., 0.925, 1. ],
[ 1. , 0.841, ..., 0.882, 0.878],
...,
[ 0.658, 0.985, ..., 0.878, 0.764],
[ 0.969, 0.92 , ..., 0.974, 0.915]])
librosa.feature.mfcc(y=y, sr=sr)
array([[ -5.229e+02, -4.944e+02, ..., -5.229e+02, -5.229e+02],
[ 7.105e-15, 3.787e+01, ..., -7.105e-15, -7.105e-15],
...,
[ 1.066e-14, -7.500e+00, ..., 1.421e-14, 1.421e-14],
[ 3.109e-14, -5.058e+00, ..., 2.931e-14, 2.931e-14]])
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,这些函数输出了一个矩阵,其中包含有关提取特征的信息。所有这些信息(特征、切片开始和结束、文件名)都将存储到(sqlite)数据库中。切片的音频数据将被释放。
这些特征以数字方式描述了分析音频的“类型”/声音,是进行相似性计算的良好基础。
拥有所有这些信息(以及包含数百条分析轨迹的大型数据库),我希望能够随机选择一个切片并将其与数据库中的所有其他切片进行比较,以找到与所选切片最相似的切片 - 基于提取的特征信息。
我需要做什么来比较上面列出的函数的相似度结果?