---
title: 'Between: 2021/07/01 en 2021/07/31 - 0110.be'
canonical: https://0110.be/date/2021/7
markdown_url: https://0110.be/date/2021/7.md
page: 0
posts_per_page: 30
total_posts: 1
filters:
  year: 2021
  month: 7
previous:
next:
---

# Between: 2021/07/01 en 2021/07/31 - 0110.be

## [Updates for Panako - an acoustic fingerprinting system](https://0110.be/posts/Updates_for_Panako_-_an_acoustic_fingerprinting_system.md)

- Published: 2021-07-11T00:00:00Z
- Updated: 2025-11-29T14:28:25Z
- Author: Joren
- ID: 482
- Canonical: https://0110.be/posts/Updates_for_Panako_-_an_acoustic_fingerprinting_system

- Tags: [Code](https://0110.be/tags/Code.md), [UGent](https://0110.be/tags/UGent.md)

Panako is an acoustic fingerprinting system I developed a couple of years ago. With acoustic fingerprinting systems it is possible to find duplicates in digital music archives and compare meta-data or identify unlabelled audio fragments. In the margins of my post-doc project working with large music archives, I have found the time to update Panako significantly. The *updates simplify, improve and speed up* Panako.

<center>
<img src="https://0110.be/files/attachments/482/general_acoustic_fingerprinting_schema.svg" alt="General content based audio search scheme" style="width:80%"/>\
<small>Fig. General content based audio search scheme.</small>

</center>
The main algorithms are simplified. There is also a reduction of dependencies and a refocus to core functionality. This also simplifies building the software. The retrieval characteristics are improved, mainly thanks to the use of a fine-grained Gabor transform. Also new is the near-exact hashing construct which helps with off-by-one issues when matching time bins. The key-value store used is now [LMDB](http://www.lmdb.tech/doc/), which speeds up the query performance of Panako significantly. The updates should make Panako stand the test of time somewhat better.

<div class="post-meta" style="text-align:center;display:block;float:right;margin-left:10px;width:50%;" >
<img src="https://0110.be/files/attachments/482/tp_rate.svg" style="max-width:500px;">\
<small><b>Fig.</b> The top one true positive rate for 20s query fragments. The audio playback is speed modified from 84 to 116% with respect to the indexed reference audio. The original query length is 20s, if it is slowed down by 10% it takes, evidently, 22s. Note the improvement of the 2021 version of Panako (blue) vs the 2014 version (light-gray). As a baseline the standard algorithm (wang 2003) is included as well. For the 2021 Panako algorithm, audio recognition performance suffers (below 80) when playback speed is changed more than 10.</small>

</div>
A more complete list of updates can be found below and on the [Panako GitHub repository](https://github.com/JorenSix/Panako):

<blockquote>
<i>
-   The number of dependencies has been drastically cut by removing support for multiple key-value stores.
-   The key-value store has been changed to a faster and simpler system (from [MapDB](https://mapdb.org) to [LMDB](http://www.lmdb.tech/doc)).
-   The SyncSink functionality has been moved to another project (with Panako as dependency).
-   The main algorithms have been replaced with simpler and better working versions:
    -   Olaf is a new implementation of the classic Shazam algorithm.
    -   The algoritm described in the Panako paper was also replaced. The core ideas are still the same. The main change is the use of a [Gabor transform](https://en.wikipedia.org/wiki/Gabor_transform) to go from time domain to the spectral domain (previously a constant-q transform was used). The gabor transform is implemented by [JGaborator](https://github.com/JorenSix/JGaborator) which in turn relies on [The Gaborator](https://gaborator.com/) C library via JNI.
-   Folder structure has been simplified.
-   The UI which was mainly used for debugging has been removed.
-   A new set of helper scripts are added in the `scripts` directory. They help with evaluation, parsing results, checking results, building panako, creating documentation,...
-   Changed the default panako location to \~/.panako, so users can install and use panako more easily (without need for sudo rights)
</i>
</blockquote>

<div style="text-align:center">
<img src="https://0110.be/files/attachments/482/panako_interactive_session.svg" alt="An interactive CLI session with Panako"/><br>
<small>Fig: An interactive CLI session with Panako.</small>
</div>


---
