Audio::Chromaprint - Interface to the Chromaprint library
use Path::Tiny qw< path >;
my $cp = Audio::Chromaprint->new();
$cp->start( 44_100, 1 ); # sample rate (Hz), 1 audio stream
$cp->feed( path('file.wav')->slurp_raw );
say "Fingerprint hash: ", $cp->get_fingerprint_hash;
Chromaprint is the core component of the AcoustID project. It's a client-side library that implements a custom algorithm for extracting fingerprints from any audio source.
You can read more about Chromaprint on its website.
This binding was done against 1.4.3. While it should work for newer versions, please let us know if you are experiencing issues with newer versions.
Integer representing the Chromaprint algorithm.
The default is 2. (This is the default in Chromaprint.)
An integer representing the silence threshold.
Accepting a number between 0 and 32,767 (without a comma).
my $chromaprint = Audio::Chromaprint->new(
'algorithm' => 1, # optional, default is 2
'silence_threshold' => 1_000, # optional,
$chromaprint->start( $sample_rate, $num_streams );
Start the computation of a fingerprint with a new audio stream.
First argument is the sample rate (in integer) of the audio stream (in Hz).
Second argument is number of channels in the audio stream (1 or 2).
$chromaprint->set_option( $key => $value );
Setting an option to Chromaprint.
In version 1.4.3 only the silence_threshold is available, which we also expose during instantiation under new.
my $version = $chromaprint->get_version();
Returns a string representing the version.
Feed data to Chromaprint to analyze. The size definitions are handled in the module, so you only send the data, no need for more.
You can use Path::Tiny to do this easily using the slurp_raw:
use Path::Tiny qw< path >;
my $file = path('some_file.wav');
my $data = $file->slurp_raw();
Process any remaining buffered audio data.
This has to be run before you can get the fingerprints.
my $fingerprint = $chromaprint->get_fingerprint();
Provides a compressed string representing the fingerprint of the file. You might prefer using get_fingerprint_hash.
my $fingerprint_hash = $chromaprint->get_fingerprint_hash();
Provides a hash string, representing the fingerprint for the file.
my $raw_fingerprint = $chromaprint->get_raw_fingerprint();
Return the calculated fingerprint as an array of 32-bit integers.
my $fingerprint_size = $chromaprint->get_fingerprint_size();
Return the length of the current raw fingerprint.
Clear the current fingerprint, but allow more data to be processed.
my $num_of_channels = $chromaprint->get_num_channels();
Get the number of channels that is internally used for fingerprinting.
my $sample_rate = $chromaprint->get_sample_rate();
Get the sampling rate that is internally used for fingerprinting.
my $item_duration = $chromaprint->get_item_duration();
Get the duration of one item in the raw fingerprint in samples.
my $item_duration_ms = $chromaprint->get_item_duration_ms();
Get the duration of one item in the raw fingerprint in milliseconds.
my $delay = $chromaprint->get_delay();
Get the duration of internal buffers that the fingerprinting algorithm uses.
my $delay_ms = $chromaprint->get_delay_ms();
We do not yet support the following methods.
Sawyer X <firstname.lastname@example.org>
Graham Ollis <email@example.com>
This software is Copyright (c) 2019 by Sawyer X.
This is free software, licensed under:
The MIT (X11) License
To install Audio::Chromaprint, copy and paste the appropriate command in to your terminal.
perl -MCPAN -e shell
For more information on module installation, please visit the detailed CPAN module installation guide.