Cover Song Identification¶
Cover song identification is a task of identifying when two musical recordings are derived from the same music composition. The cover of a song can be drastically different from the original recording. It can change key, tempo, instrumentation, musical structure or order, etc.
Essentia provides open-source implmentation of some state-of-the-art cover song identification algorithms. The following process-chain is required to use these algorithms.
Tonal feature extraction. Mostly used by chroma features. Here we use HPCP.
Post-processing of the features to achieve invariance (eg. key) [3].
Cross similarity matrix computation ([1] or [2]).
Local sub-sequence alignment to compute the pairwise cover song similarity distance [1].
In this tutorial, we use HPCP
, ChromaCrossSimilarity
and
CoverSongSimilarity
algorithms from essentia.
References:
[1]. Serra, J., Serra, X., & Andrzejak, R. G. (2009). Cross recurrence quantification for cover song identification.New Journal of Physics.
[2]. Serra, Joan, et al (2008). Chroma binary similarity and local alignment applied to cover song identification. IEEE Transactions on Audio, Speech, and Language Processing.
[3]. Serra, J., Gómez, E., & Herrera, P. (2008). Transposing chroma representations to a common key, IEEE Conference on The Use of Symbols to Represent Music and Multimedia Objects.
import essentia.standard as estd
from essentia.pytools.spectral import hpcpgram
Let’s load a query cover song, true-cover reference song and a
false-cover reference song. Here we chose a accapella cover of the
Beatles track Yesterday
as our query song and it’s orginal version
by the Beatles and a cover of another Beatles track Come Together
by
the Aerosmith as the reference tracks. We obtained these audio files
from the covers80 dataset
(https://labrosa.ee.columbia.edu/projects/coversongs/covers80/).
Query cover song
import IPython
IPython.display.Audio('./en_vogue+Funky_Divas+09-Yesterday.mp3')
Reference song (True cover)
IPython.display.Audio('./beatles+1+11-Yesterday.mp3')