Audio fingerprinting
AssigneeGracenote, Inc.
InventorsJinyu Han, Bob Coover
Life of this patent
Estimating the term…
Abstract
A machine may be configured to generate one or more audio fingerprints of one or more segments of audio data. The machine may access audio data to be fingerprinted and divide the audio data into segments. For any given segment, the machine may generate a spectral representation from the segment; generate a vector from the spectral representation; generate an ordered set of permutations of the vector; generate an ordered set of numbers from the permutations of the vector; and generate a fingerprint of the segment of the audio data, which may be considered a sub-fingerprint of the audio data. In addition, the machine or a separate device may be configured to determine a likelihood that candidate audio data matches reference audio data.
Claims21
A method comprising:
- generating a spectral representation of a segment of audio data, the spectral representation indicating energy values for a set of frequencies;
- multiplying each energy value by a corresponding weight factor determined based on an ordinal position of a corresponding frequency within the set of frequencies;
- using a processor, generating a sparse vector that contains a zero value for each frequency in the set of frequencies except for representing a first group of highest energy values from a first portion of the set of frequencies with a common value and representing a second group of highest energy values from a second portion of the set of frequencies with the common value, the first group being determined based on ranked energy values for frequencies above a threshold frequency, the second group being determined based on ranked energy values for frequencies below the threshold frequency;
- generating an ordered set of permutations of the sparse vector, each permutation in the ordered set of permutations being generated in a corresponding manner that repositions instances of the common value to permutate the sparse vector;
- generating an ordered set of numbers from the ordered set of permutations of the sparse vector, each number in the ordered set of numbers representing a corresponding permutation by indicating a position of an instance of the common value within the corresponding permutation;
- and
- generating a fingerprint of the segment of the audio data based on the ordered set of numbers generated from the ordered set of permutations of the sparse vector.
A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising:
- generating a spectral representation of a segment of audio data, the spectral representation indicating energy values for a set of frequencies;
- multiplying each energy value by a corresponding weight factor determined based on an ordinal position of a corresponding frequency within the set of frequencies;
- generating a sparse vector that contains a zero value for each frequency in the set of frequencies except for representing a first group of highest energy values from a first portion of the set of frequencies with a common value and representing a second group of highest energy values from a second portion of the set of frequencies with the common value, the first group being determined based on ranked energy values for frequencies above a threshold frequency, the second group being determined based on ranked energy values for frequencies below the threshold frequency;
- generating an ordered set of permutations of the sparse vector, each permutation in the ordered set of permutations being generated in a corresponding manner that repositions instances of the common value to permutate the sparse vector;
- generating an ordered set of numbers from the ordered set of permutations of the sparse vector, each number in the ordered set of numbers representing a corresponding permutation by indicating a position of an instance of the common value within the corresponding permutation;
- and
- generating a fingerprint of the segment of the audio data based on the ordered set of numbers generated from the ordered set of permutations of the sparse vector.
A system comprising:
- a frequency module configured to generate a spectral representation of a segment of audio data, the spectral representation indicating energy values for a set of frequencies;
- a processor configured by a vector module to:
- multiply each energy value by a corresponding weight factor determined based on an ordinal position of a corresponding frequency within the set of frequencies;
- and
- generate a sparse vector that contains a zero value for each frequency in the set of frequencies except for representing a first group of highest energy values from a first portion of the set of frequencies with a common value and representing a second group of highest energy values from a second portion of the set of frequencies with the common value, the first group being determined based on ranked energy values for frequencies above a threshold frequency, the second group being determined based on ranked energy values for frequencies below the threshold frequency;
- a scrambler module configured to generate an ordered set of permutations of the sparse vector, each permutation in the ordered set of permutations being generated in a corresponding manner that repositions instances of the common value to permutate the sparse vector;
- a coder module configured to generate an ordered set of numbers from the ordered set of permutations of the sparse vector, each number in the ordered set of numbers representing a corresponding permutation by indicating a position of an instance of the common value within the corresponding permutation;
- and
- a fingerprint module configured to generate a fingerprint of the segment of the audio data based on the ordered set of numbers generated from the ordered set of permutations of the sparse vector.
Dependencies are inferred from the claim text.