Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python Librosa比较两种声音的相似性_Python_Audio_Librosa - Fatal编程技术网

使用Python Librosa比较两种声音的相似性

使用Python Librosa比较两种声音的相似性,python,audio,librosa,Python,Audio,Librosa,我有大约30个声音片段,每个都是由合成器预设的。我想 比较这些声音,找出哪些声音相似,然后对这些声音进行排序,使每个声音在列表中与两个相似的声音相邻。频率不是我想要寻找的唯一东西。我宁愿两个声调不同的锯波被认为与同一音符的锯波和正弦波相似 例如,这些声音会被认为是相似的 通过使用,我能够对每个声音应用短时傅里叶变换,并从每个声音中创建一个频谱图。仅仅通过观察光谱图,我就能猜出哪些声音可能是相似的,然后通过听实际的声音来确认这个猜测,例如,在下图中 在这类声音中,12和20是相近的 但我想

我有大约30个声音片段,每个都是由合成器预设的。我想 比较这些声音,找出哪些声音相似,然后对这些声音进行排序,使每个声音在列表中与两个相似的声音相邻。频率不是我想要寻找的唯一东西。我宁愿两个声调不同的锯波被认为与同一音符的锯波和正弦波相似

例如,这些声音会被认为是相似的


通过使用,我能够对每个声音应用短时傅里叶变换,并从每个声音中创建一个频谱图。仅仅通过观察光谱图,我就能猜出哪些声音可能是相似的,然后通过听实际的声音来确认这个猜测,例如,在下图中

在这类声音中,12和20是相近的


但我想让这个过程自动化

从我对Librosa的了解来看,我似乎可以通过计算rms、mfcc和质心来确定相似度。但我不知道如何比较我计算的值

rms = [librosa.feature.rms(S=s) for s in S]
centroids = [librosa.feature.spectral_centroid(y=y, sr=sr) for y in midiSamples]
mfccs = [librosa.feature.mfcc(y=y, sr=sr) for y in midiSamples]

在一个非常低的抽象层次上,我甚至不知道如何比较原始的stft变换值(2d数组),除了将它们制作成光谱图并手动确定哪些看起来相似之外。如何编写代码来对stfts、rms、mfcc进行排序。。。因此,类似的声音在排序中彼此并列



我还有一个例子,在这里我运行我的程序,解释我不知道如何处理数据。Sam,我想你可以用机器学习比较两张图片,或者用numpy作为数据数组

这只是一个解决方案的想法(不是完整的答案): 如果可以将两个直方图转换为大小相等的平面阵列 按
numpy.ndarray.flatte

array1 = numpy.array([1.1, 2.2, 3.3])
array2 = numpy.array([1, 2, 3])
diffs = array1 - array2 # array([ 0.1,  0.2,  0.3])
similarity_coefficient = np.sum(diffs)

如果你想把相似性建立在不是音符的声音的特征上,这通常被称为timbre@jonnor是 啊我想知道如何将音色录制成我可以使用的格式。就像一个数组或其他东西一样,数组中的行/列代表的是一个相当复杂的感知概念,一般来说,要与音频的音符分离有点困难。最好是使用一些学习过的模型/嵌入,将其映射到一个仅为timbre@jonnor你说“把它映射到一个低维空间”是什么意思。我已经读了更多关于这方面的内容,看起来MFCC功能对于比较音色很有用。你有没有关于我可以用什么模型来绘制这幅图的建议?输出是一些数字,可能是2-10,只代表音色-这是分离它/独立于音乐本身。在MFCC中,这两件事仍然纠缠在一起。不幸的是,我目前还不知道这方面的模型。那么,根据这一模型对它们进行排序的最佳方法是什么呢?