An audio fingerprinting system and method. A server receives an audio fingerprint
of a first audio piece, searches a database for the audio fingerprint, retrieves
an audio profile vector associated with the audio fingerprint, updates user preference
information based on the audio profile vector, and selects a second audio piece
based on the user preference information. The audio fingerprint is generated by
creating a matrix based on the frequency measurements of the audio piece, and performing
a singular value decomposition of the matrix. To expedite the search of the database
and to increase matching accuracy, a subset of candidates in the database is identified
based on the most prominent musical notes of the audio piece, and the search is
limited to the identified subset. One of the attributes of the audio profile vector
is a particular audio class. An identifier for the audio class is generated based
on an average of audio fingerprints of the audio pieces belonging to the audio class.