AcoustID score mismatch

Hi,

First of all , Thanks so much to everyone working on AcoustID and MusicBrainz. they are awesome projects, and I really appreciate all the hard work that’s gone into them!.

Question : I have been using slice of an AcoustID database dump and acoustid-docker-postgresql image to test a local stack of AcoustID.

I’ve made a fingerprint from a track thats already in the said db slice and tried to match it using the following SQL query,

I do get the correct match but the score from the API and the local Postgres Server differs (for the same query fingerprint). where the API outputs 0.9xx range score and my local DB outputs 0.7XX (0.8xx in case of ‘acoustid_compare3’)

things I’ve tried,

  • using the following parameters

  • - max_offset = 80
    
  • - fp = the query fingerprint, from the below code
    
  • - max_length_diff = 7
    
  • - length = the length from chromaprint fingerprint (duration)
    
  • - removed "WHERE f.score > %(min_score)s
    
  • - removed "subarray(acoustid_extract_query) ..." clause
    
  • prepare the fingerprint using the below pthon code before submitting to compare functions.
    image

  • using a C programme and comparing the fingerprints manually, using pg_acoustid search functions. still the same score as my local postgres container.

  • using different version of the match functions (acoustid_compare2 and acoustid_compare3)

  • different architecture builds. i was trying out on my m1 mac. so I tried on a linux/amd64 arch. still the same result.

  • read through the accoustid-server , and tried to follow the request (/lookup) (FingerprintLookup). from what I can understand the accoustid-server is not doing any modification to the score generated by the DB.

Other info

  • I have only tested using 2024-08-01 data slice.

I would like to know why is my local DB has different score than the API. any help is much appreciated. Thanks in advance

Thanks in advance.

2 Likes

I figured, since I’m using only a small slice of data. its matching against another fingerprint in the database, and the one i’m matching gets cut off from the API response since it’s below 0.9. going to load the entire dataset and check.