rcParams['figure.figsize'] = (16, 4) #wide graphs by default from essentia.streaming import * filenames = [] filenames.append("media/01 Everlasting Light.wav") filenames.append("media/02 The Wilhelm Scream.wav") filenames.append("media/1-01 Central Texas.wav") src = MonoLoader(filename = filenames[0]) fc = FrameCutter(frameSize = 2048, hopSize = 2048) #avoiding overlap pool = essentia.Pool() w = Windowing() spec = Spectrum() centroid = Centroid() src.audio >> fc.signal fc.frame >> w.frame >> spec.frame spec.spectrum >> centroid.array centroid.centroid >> (pool, 'lowlevel.centroid') essentia.reset(src) src.configure(filename = filenames[0]) essentia.run(src) ssm = [] centroids = pool['lowlevel.centroid'] for centroid_i in centroids: for centroid_j in centroids: cc = abs(centroid_i - centroid_j) ssm.append(cc) score = (len(ssm) - sum(ssm)) / len(ssm) ssm = array(ssm).reshape(len(centroids), len(centroids)) imshow(ssm, cmap=cm.gray_r, interpolation='nearest') colorbar() title('The Black Keys - Everlasting Light\nSelf-Similarity Score: {}'.format(score)) essentia.reset(src) pool.clear() src.configure(filename = filenames[1]) essentia.run(src) ssm = [] centroids = pool['lowlevel.centroid'] for centroid_i in centroids: for centroid_j in centroids: cc = abs(centroid_i - centroid_j) ssm.append(cc) score = (len(ssm) - sum(ssm)) / len(ssm) ssm = array(ssm).reshape(len(centroids), len(centroids)) imshow(ssm, interpolation='nearest', cmap=cm.gray_r) colorbar() title('James Blake - The Wilhelm Scream\nSpectral Centroid Self-Similarity Score: {}'.format(score)) essentia.reset(src) pool.clear() src.configure(filename = filenames[2]) essentia.run(src) ssm = [] centroids = pool['lowlevel.centroid'] for centroid_i in centroids: for centroid_j in centroids: cc = abs(centroid_i - centroid_j) ssm.append(cc) score = (len(ssm) - sum(ssm)) / len(ssm) ssm = array(ssm).reshape(len(centroids), len(centroids)) imshow(ssm, interpolation='nearest', cmap=cm.gray_r) colorbar() title('The Dead Texan - Central Texas\nSelf-Similarity Score: {}'.format(score))