IP Library Granted Patent US 10,936,651
Granted Patent B2
US 10,936,651 · App. 15/115,733 · Granted Mar 2, 2021

Matching audio fingerprints

Inventors: Robert Coover (Orinda, CA); Jeffrey Scott (Berkeley, CA); Konstantinos Antonios Dimitriou (Bavaria, DE)
Assignee: GRACENOTE, INC.
G06F16/683G06F16/61G06F16/63G06F16/65
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,936,651
App. No.
15/115,733
Granted
Mar 2, 2021
Kind
B2
Abstract

A matching machine accordingly accesses a query fingerprint that includes query sub-fingerprints that have been generated from query segments of a portion of query audio. After selecting reference sub-fingerprints for comparison to the query sub-fingerprints, the matching machine identifies a best-matching subset of the reference sub-fingerprints by evaluating total matches between the query sub-fingerprints and different subsets of the reference sub-fingerprints. The match machine then generates a count vector that stores the total counts mapped to respective offsets from a reference point in the reference sub-fingerprints. The matching machine determines a maximum count among the total counts and classifies the reference sub-fingerprints as a match with the query sub-fingerprints based on the maximum count.

Claims (60)

1. 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;

calculating, by the one or more processors, a median of the total counts in the count vector;

calculating, by the one or more processors, a difference between the maximum count and the median of the total counts;

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 difference between the maximum count in the count vector and the median of the total counts, and the additional feature.

2. The method of claim 1 , further including receiving a request that the query audio be identified, the request including the query fingerprint, wherein the accessing of the query fingerprint includes accessing the query fingerprint in the received request that the query audio be identified.

3. The method of claim 1 , further including receiving a request that the query audio be identified, the request including the portion of the query audio to be identified, wherein the accessing of the query fingerprint includes generating the query fingerprint from the portion of the query audio in response to the received request that the query audio be identified.

4. The method of claim 1 , wherein the selecting of the reference sub-fingerprints for comparison includes matching the query sub-fingerprint to the reference sub-fingerprint mapped by the index to the reference point at which the reference segment occurs in the reference audio.

5. The method of claim 1 , wherein the generating of the count vector includes, for each different offset from the reference point at which the reference segment occurs in the reference audio:

aligning the reference sub-fingerprints with the query sub-fingerprints at the different offsets from the reference point;

determining a total count of matches between the query sub-fingerprints and a different subset of the aligned reference sub-fingerprints; and

storing an offset of the different offsets paired with its corresponding total count in the count vector.

6. The method of claim 5 , wherein the generating of the count vector is performed by iteratively performing the aligning, the determining, and the storing for the different offsets within a predetermined range of offsets relative to the reference point at which the reference segment occurs with respect to the reference audio.

7. The method of claim 1 , wherein the different offsets are coarse offsets uniformly spaced apart from each other by multiple sub-fingerprints, the maximum count is a coarse maximum count mapped to a selected coarse offset by the count vector, and further includes updating the count vector by, for each fine offset among different fine offsets from the selected coarse offset:

aligning the reference sub-fingerprints with the query sub-fingerprints at the fine offset from the selected coarse offset;

determining a total count of matches between the query sub-fingerprints and a different subset of the aligned reference sub-fingerprints; and

storing the fine offset paired with its corresponding total count in the count vector; and updating the maximum count among the total counts in the count vector, the updated maximum count corresponding to a fine offset among the different fine offsets from the selected coarse offset.

8. The method of claim 7 , wherein the updating of the count vector is performed by iteratively performing the aligning, the determining, and the storing for the different fine offsets within a predetermined range of fine offsets relative to the selected coarse offset.

9. The method of claim 7 , wherein the different fine offsets are contiguous and form a range of fine offsets centered on the selected coarse offset.

10. The method of claim 1 , further including normalizing the count vector based on a total length of the query fingerprint.

11. The method of claim 10 , wherein the normalizing of the count vector includes dividing each of the total counts of matches in the count vector by a total count of the query sub-fingerprints.

12. The method of claim 1 , further including calculating a standard deviation of the total counts in the count vector, the classifying of the reference sub-fingerprints as the match with the query sub-fingerprints based on the standard deviation of the total counts.

13. The method of claim 12 , further including:

calculating a difference between the maximum count and a median of the total counts; and

calculating a quotient of the difference divided by the standard deviation of the total counts, the classifying of the reference sub-fingerprints as the match with the query sub-fingerprints being based on the quotient of the difference divided by the standard deviation of the total counts.

14. The method of claim 1 , wherein the additional feature includes a noisiness of the count vector.

15. The method of claim 1 , wherein the additional feature includes a symmetry of the count vector.

16. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to at least:

access a query fingerprint that includes query sub-fingerprints generated from query segments of a portion of query audio to be identified;

access 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;

select 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;

generate 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;

calculate a maximum count among the total counts stored in the count vector;

calculate a median of the total counts in the count vector;

calculate a difference between the maximum count and the median of the total counts;

extract an additional feature from the count vector without using the maximum count in the count vector; and

classify the reference sub-fingerprints as a match with the query sub-fingerprints based on the difference between the maximum count in the count vector and the median of the total counts, and the additional feature.

17. The non-transitory machine-readable storage medium of claim 16 , wherein the instructions, when executed, further cause at least one of the one or more processors of the machine to:

access the query fingerprint in response to receipt of a request to identify the query audio, the request received from a client device; and

cause, in response to the classifying of the reference sub-fingerprints as the match, the client device to present a notification that the reference audio matches the query audio.

18. A system comprising:

one or more processors; and

memory storing instructions that, when executed by at least one processor among the one or more processors, cause the system to at least:

access a query fingerprint that includes query sub-fingerprints generated from query segments of a portion of query audio to be identified;

access 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;

select 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;

generate 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;

calculate a maximum count among the total counts stored in the count vector;

calculate a median of the total counts in the count vector;

calculate a difference between the maximum count and the median of the total counts;

extract an additional feature from the count vector without using the maximum count in the count vector; and

classify the reference sub-fingerprints as a match with the query sub-fingerprints based on the difference between the maximum count in the count vector and the median of the total counts.

19. The system of claim 18 , wherein the instructions, when executed, cause the system to:

access the query fingerprint in response to receipt of a request to identify the query audio, the request received from a client device; and

cause, in response to the classifying of the reference sub-fingerprints as the match, the client device to present a notification that the reference audio matches the query audio.

Assignments (12)
RELEASE (REEL 054066 / FRAME 0064) Recorded May 11, 2023
From: CITIBANK, N.A.
To: A. C. NIELSEN COMPANY, LLC; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; THE NIELSEN COMPANY (US), LLC; NETRATINGS, LLC
Reel/Frame 063605/0001 →
RELEASE (REEL 053473 / FRAME 0001) Recorded May 11, 2023
From: CITIBANK, N.A.
To: A. C. NIELSEN COMPANY, LLC; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; THE NIELSEN COMPANY (US), LLC; NETRATINGS, LLC
Reel/Frame 063603/0001 →
SECURITY INTEREST Recorded May 8, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: ARES CAPITAL CORPORATION
Reel/Frame 063574/0632 →
SECURITY INTEREST Recorded Apr 28, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: CITIBANK, N.A.
Reel/Frame 063561/0381 →
SECURITY AGREEMENT Recorded Jan 31, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: BANK OF AMERICA, N.A.
Reel/Frame 063560/0547 →
RELEASE (REEL 042262 / FRAME 0601) Recorded Oct 13, 2022
From: CITIBANK, N.A.
To: GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC
Reel/Frame 061748/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENTS LISTED ON SCHEDULE 1 RECORDED ON 6-9-2020 PREVIOUSLY RECORDED ON REEL 053473 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SUPPLEMENTAL IP SECURITY AGREEMENT. Recorded Oct 7, 2020
From: A.C. NIELSEN (ARGENTINA) S.A.; A.C. NIELSEN COMPANY, LLC; ACN HOLDINGS INC.; ACNIELSEN CORPORATION; ACNIELSEN ERATINGS.COM; AFFINNOVA, INC.; ART HOLDING, L.L.C.; ATHENIAN LEASING CORPORATION; CZT/ACN TRADEMARKS, L.L.C.; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; NETRATINGS, LLC; NIELSEN AUDIO, INC.; NIELSEN CONSUMER INSIGHTS, INC.; NIELSEN CONSUMER NEUROSCIENCE, INC.; NIELSEN FINANCE CO.; NIELSEN FINANCE LLC; NIELSEN INTERNATIONAL HOLDINGS, INC.; NIELSEN MOBILE, LLC; NMR INVESTING I, INC.; TCG DIVESTITURE INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC; VIZU CORPORATION; VNU MARKETING INFORMATION, INC.; NMR LICENSING ASSOCIATES, L.P.; NIELSEN HOLDING AND FINANCE B.V.; THE NIELSEN COMPANY B.V.; VNU INTERNATIONAL B.V.
To: CITIBANK, N.A
Reel/Frame 054066/0064 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Jun 9, 2020
From: A. C. NIELSEN COMPANY, LLC; ACN HOLDINGS INC.; ACNIELSEN CORPORATION; ACNIELSEN ERATINGS.COM; AFFINNOVA, INC.; ART HOLDING, L.L.C.; ATHENIAN LEASING CORPORATION; CZT/ACN TRADEMARKS, L.L.C.; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; NETRATINGS, LLC; NIELSEN AUDIO, INC.; NIELSEN CONSUMER INSIGHTS, INC.; NIELSEN CONSUMER NEUROSCIENCE, INC.; NIELSEN FINANCE CO.; NIELSEN FINANCE LLC; NIELSEN INTERNATIONAL HOLDINGS, INC.; NIELSEN MOBILE, LLC; NIELSEN UK FINANCE I, LLC; NMR INVESTING I, INC.; TCG DIVESTITURE INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC; VIZU CORPORATION; VNU MARKETING INFORMATION, INC.; NMR LICENSING ASSOCIATES, L.P.; NIELSEN HOLDING AND FINANCE B.V.; THE NIELSEN COMPANY B.V.; VNU INTERNATIONAL B.V.
To: CITIBANK, N.A.
Reel/Frame 053473/0001 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Apr 13, 2017
From: GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE DIGITAL VENTURES, LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042262/0601 →
RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Feb 8, 2017
From: JPMORGAN CHASE BANK, N.A.
To: GRACENOTE, INC.; CASTTV INC.; TRIBUNE MEDIA SERVICES, LLC; TRIBUNE DIGITAL VENTURES, LLC
Reel/Frame 041656/0804 →
SECURITY AGREEMENT Recorded Aug 12, 2016
From: GRACENOTE, INC.; CASTTV, INC.; TRIBUNE BROADCASTING COMPANY, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 039667/0565 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2016
From: COOVER, ROBERT; SCOTT, JEFFREY; DIMITRIOU, KONSTANTINOS ANTONIOS
To: GRACENOTE, INC.
Reel/Frame 039302/0517 →
Priority Claims (1)
GR 20160100335 · Jun 22, 2016 · national
Continuity (1)
Related Publication 20190108187A1 · Apr 11, 2019
Cited By (2)
US 12,321,382 US 12,405,999