Class SpectrogramFingerprinter<T>
- Namespace
- AiDotNet.Audio.Fingerprinting
- Assembly
- AiDotNet.dll
Spectrogram peak-based audio fingerprinter (Shazam-style).
public class SpectrogramFingerprinter<T> : AudioFingerprinterBase<T>, IAudioFingerprinter<T>
Type Parameters
TThe numeric type used for calculations.
- Inheritance
-
SpectrogramFingerprinter<T>
- Implements
- Inherited Members
Remarks
This fingerprinter uses spectral peak detection similar to the Shazam algorithm. It finds prominent peaks in the spectrogram and creates hash codes from peak pairs, providing robustness to noise and speed variations.
For Beginners: This algorithm finds the loudest frequency points in the audio (like mountain peaks on a landscape) and remembers their positions. By comparing peak patterns, it can identify songs even with background noise or slight speed changes.
Constructors
SpectrogramFingerprinter(SpectrogramFingerprintOptions?)
Creates a new spectrogram-based fingerprinter.
public SpectrogramFingerprinter(SpectrogramFingerprintOptions? options = null)
Parameters
optionsSpectrogramFingerprintOptionsConfiguration options.
Properties
Name
Gets the name of the fingerprinting algorithm.
public override string Name { get; }
Property Value
Methods
ComputeSimilarity(AudioFingerprint<T>, AudioFingerprint<T>)
Computes similarity between two fingerprints.
public override double ComputeSimilarity(AudioFingerprint<T> fp1, AudioFingerprint<T> fp2)
Parameters
fp1AudioFingerprint<T>fp2AudioFingerprint<T>
Returns
FindMatches(AudioFingerprint<T>, AudioFingerprint<T>, int)
Finds matching segments between fingerprints.
public override IReadOnlyList<FingerprintMatch> FindMatches(AudioFingerprint<T> query, AudioFingerprint<T> reference, int minMatchLength = 10)
Parameters
queryAudioFingerprint<T>referenceAudioFingerprint<T>minMatchLengthint
Returns
Fingerprint(Tensor<T>)
Generates a fingerprint from audio tensor.
public override AudioFingerprint<T> Fingerprint(Tensor<T> audio)
Parameters
audioTensor<T>
Returns
Fingerprint(Vector<T>)
Generates a fingerprint from audio vector.
public override AudioFingerprint<T> Fingerprint(Vector<T> audio)
Parameters
audioVector<T>