A method comprising: accessing , by one or more processors, a query fingerprint that includes query sub-fingerprints generated from query segments of a portion of query audio to be identified; accessing , by the one or more processors, a database in which an index maps reference sub-fingerprints generated from reference segments of reference audio to points at which the reference segments occur in the reference audio; selecting , by the one or more processors, the reference sub-fingerprints for comparison to the query sub-fingerprints based on a determination that a query sub-fingerprint among the query sub-fingerprints is a match with a reference sub-fingerprint among the reference sub-fingerprints, the reference sub-fingerprint being mapped by the index to a reference point at which a reference segment among the reference segments occurs in the reference audio; generating , by the one or more processors, a count vector that stores total counts of matches between the query sub-fingerprints and different subsets of the reference sub-fingerprints, each of the different subsets being aligned to the query sub-fingerprints at a different offset from the reference point, each of the different offsets being mapped by the count vector to a different total count among the total counts, wherein the different offsets are spaced apart from each other by a predetermined number of sub-fingerprints; calculating , by the one or more processors, a maximum count among the total counts stored in the count vector; extracting an additional feature from the count vector without using the maximum count in the count vector; and classifying , by the one or more processors, the reference sub-fingerprints as a match with the query sub-fingerprints based on the maximum count in the count vector and the additional feature. accessing , by one or more processors, a query fingerprint that includes query sub-fingerprints generated from query segments of a portion of query audio to be identified; accessing , by the one or more processors, a database in which an index maps reference sub-fingerprints generated from reference segments of reference audio to points at which the reference segments occur in the reference audio; selecting , by the one or more processors, the reference sub-fingerprints for comparison to the query sub-fingerprints based on a determination that a query sub-fingerprint among the query sub-fingerprints is a match with a reference sub-fingerprint among the reference sub-fingerprints, the reference sub-fingerprint being mapped by the index to a reference point at which a reference segment among the reference segments occurs in the reference audio; generating , by the one or more processors, a count vector that stores total counts of matches between the query sub-fingerprints and different subsets of the reference sub-fingerprints, each of the different subsets being aligned to the query sub-fingerprints at a different offset from the reference point, each of the different offsets being mapped by the count vector to a different total count among the total counts, wherein the different offsets are spaced apart from each other by a predetermined number of sub-fingerprints; calculating , by the one or more processors, a maximum count among the total counts stored in the count vector; extracting an additional feature from the count vector without using the maximum count in the count vector; and classifying , by the one or more processors, the reference sub-fingerprints as a match with the query sub-fingerprints based on the maximum count in the count vector and the additional feature. <EOS>