• Stars
    star
    868
  • Rank 50,829 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created about 13 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

C library for generating audio fingerprints used by AcoustID

Chromaprint

Chromaprint is an audio fingerprint library developed for the AcoustID project. It's designed to identify near-identical audio and the fingerprints it generates are as compact as possible to achieve that. It's not a general purpose audio fingerprinting solution. It trades precision and robustness for search performance. The target use cases are full audio file identifcation, duplicate audio file detection and long audio stream monitoring.

Building

The most common way to build Chromaprint is like this:

$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TOOLS=ON .
$ make
$ sudo make install

This will build Chromaprint as a shared library and also include the fpcalc utility (which is used by MusicBrainz Picard, for example). For this to work, you will need to have the FFmpeg libraries installed.

See below for other options.

FFT Library

Chromaprint can use multiple FFT libraries -- FFmpeg, FFTW3, KissFFT or vDSP (macOS).

FFmpeg is preferred on all systems except for macOS, where you should use the standard vDSP framework. These are the fastest options.

FFTW3 can be also used, but this library is released under the GPL license, which makes also the resulting Chromaprint binary GPL licensed.

KissFFT is the slowest option, but it's distributed with a permissive license and it's very easy to build on platforms that do not have packaged versions of FFmpeg or FFTW3. We ship a copy of KissFFT, so if the build system is unable to find another FFT library it will use that as a fallback.

You can explicitly set which library to use with the FFT_LIB option. For example:

$ cmake -DFFT_LIB=kissfft .

FFmpeg

FFmpeg is as a FFT library and also for audio decoding and resampling in fpcalc. If you have FFmpeg installed in a non-standard location, you can use the FFMPEG_ROOT option to specify where:

$ cmake -DFFMPEG_ROOT=/path/to/local/ffmpeg/install .

While we try to make sure things work also with libav, FFmpeg is preferred.

API Documentation

You can use Doxygen to generate a HTML version of the API documentation:

$ make docs
$ $BROWSER docs/html/index.html

Unit Tests

The test suite can be built and run using the following commands:

$ cmake -DBUILD_TESTS=ON .
$ make check

In order to build the test suite, you will need the sources of the Google Test library.

Related Projects

Bindings, wrappers and reimplementations in other languages:

Integrations:

If you know about a project that is not listed here, but should be, please let me know.

Standing on the Shoulders of Giants

I've learned a lot while working on this project, which would not be possible without having information from past research. I've read many papers, but the concrete ideas implemented in this library are based on the following papers:

More Repositories

1

mbdata

MusicBrainz SQLAlchemy Models
PLpgSQL
93
star
2

acoustid-server

AcoustID's web site and API
Python
62
star
3

acoustid-index

Minimalistic search engine searching in audio fingerprints from Chromaprint
C++
60
star
4

acoustid-fingerprinter

GUI application for submitting audio fingerprints to AcoustID
C++
34
star
5

ffmpeg-build

Static audio-only FFmpeg builds for Chromaprint packages
Shell
27
star
6

go-acoustid

Experimental AcoustID backend in Go
PLpgSQL
11
star
7

pg_acoustid

PostgreSQL extension for working with AcoustID fingerprints
C
11
star
8

musicbrainz-acoustid

MOVED TO https://bitbucket.org/acoustid/musicbrainz-acoustid
JavaScript
7
star
9

notebooks

Jupyter Notebook
6
star
10

gst-chromaprint

Chromaprint plug-in for GStreamer (OBSOLETE, now included in gst-plugins-bad)
C
5
star
11

acoustid-priv

Audio identification service for working with private music catalogs
Go
4
star
12

acoustid-priv-tools

Command line tools for AcoustID.biz private API
Python
3
star
13

acoustid-search

AcoustID's internal audio fingerprint storage and search service
Python
3
star
14

docker-postgresql

Docker image with PostgreSQL used in AcoustID production
Mustache
2
star
15

acoustid-legacy-search

Internal audio fingerprint search service implemented on top of AcoustID's legacy architecture
Python
1
star
16

mbdata-graphql

GraphQL server for accessing MusicBrainz data
Python
1
star
17

chromaprint-build

Docker image for building Chromaprint
1
star
18

mbslave

MusicBrainz Database Mirror
PLpgSQL
1
star
19

chromaprint-ubuntu-ppa

Ubuntu packaging of Chromaprint for the AcoustID PPA
Makefile
1
star