AcoustID

Ich möchte Euch eine neue Möglichkeit zur Erkennung (Fingerprint) von Musikstücken vorstellen: AcoustID

Der grosse Vorteil von "AcoustID" ist die Tatsache, dass sämtliche benötigten Komponenten "Open Source" sind. Der Quellcode für den Client, den Server und die Datenbank selber stehen öffentlich bei github.com zur Verfügung. Zudem gibt es fertig kompilierte und downloadbare Pakete für Windows, Linux und Mac.

Die einfachste Anwendung zum Erzeugen von AcoustID-Fingerprints ist folgende:
a ) Den passenden Client für das eigene Betriebssystem von dieser Seite http://acoustid.org/chromaprint downloaden.
b ) Unter Windows kann man das aktuell nur mal gerade 700kb grosse chromaprint-fpcalc-0.6-win32.zip in ein beliebiges Verzeichnis entpacken, es enthält nur eine einzige Datei: fpcalc.exe
c ) Dieses Fingerprinting-Programm ruft man in einem CMD-Fenster wie folgt auf:

fpcalc.exe "Dateiname.mp3"

d ) Dabei werden standartmässig 120 Sekunden des Songs analysiert. Details dazu findet man hier: http://oxygene.sk/lukas/2011/01/how-does-chromaprint-work/
Als Ausgabe erhält man 3 Werte:
1.) FILE=Dateiname.mp3
2.) DURATION=259 (die erkannte Liedlänge)
3.) FINGERPRINT=AQADtI-icJEkPMOzSRnc.... (ca. 3600 Zeichen)

e ) Das Problem besteht nun darin, die 'Duration' und den 'Fingerprint' in die entsprechenden id3v2.3-Tags zu schreiben. Sobald ich offiziell vom Author Lukáš Lalinský höre, wie diese Tags heissen müssen, werde ich hier meinen dafür verwendeten Commandline-Batch und die Mp3tag-Aktionsgruppe mit dem Import veröffentlichen.
-> Leider existiert bis heue noch keine Commandline-Möglichkeit, die Werte direkt in die Tracks zu schreiben.

Was nützen denn nun diese Fingerprints?

Nur weil man seine eigenen Tracks dank obigem Verfahren mit Fingerprints versehen hat, nützt einem das noch gar nichts. Bis hierhin wurden auch noch keinerlei externe Datenbanken oder Abgleiche verwendet. Bis hierhin wird alles lokal auf der eigenen Maschine erstellt.

Damit diese Fingerprints einen Nutzen haben, muss mindestens 1 anderer AcoustID-Benutzer den gleichen Fingerprint schon mal erstellt und in die AcoustID-Datenbank hochgeladen haben. Dies sollte man zum grössten Nutzen aller Anderen aber nur mit qualitativ möglichst gut getagten Stücken machen.

Folgendes Verfahren verwendet man um die Metadaten hochzuladen:
WICHTIG: Es werden nur Metadaten der Stücke wie "Artist", "Album", "AlbumArtist", "Bitrate", "Duration", "Fileformat", "Title", "Year", "Trackno", "Discno" und verschiedene ID's übermittelt. Es werden z.B. keine identifizierenden Daten des Benutzers übermittelt. Wer sich selber vergewissern will, kann den entsprechenden Sourcecode hier:
https://github.com/lalinsky/acoustid-finger...r/tagreader.cpp
und
https://github.com/lalinsky/acoustid-finger...ter/tagreader.h
kontrollieren.
Und hier steht, welche Metadaten via Webservice übermittelt werden können:
http://acoustid.org/webservice#submit

Wer sich aber fragt, wieso man sich trotzdem mit einer ID anmelden und einen kostenlosen API-Key für die Übermittlung anfordern muss, sollte den dritten Abschnitt der FAQ http://acoustid.org/faq lesen. Es geht hauptsächlich um anonyme Statistiken und um allfällige Bereinigungsläufe.

Wie funktioniert das mit dem Übermitteln der eigenen Metadaten an AcoustID?

1.) Man lädt sich das GUI-Tool "Fingerprinter" von http://acoustid.org/fingerprinter passend für seine Umgebung (Windows, Linux, Mac) runter.
2.) Dann entpackt man (unter Windows) das rund 7,7MB grosse Zip-Paket in ein beliebiges Verzeichnis.
3.) In diesem Verzeichnis findet man dann 14 *.DLL-Dateien und eine einzige "acoustid-fingerprinter.exe"
4.) Diese "acoustid-fingerprinter.exe" doppelklickt man, copy&pasted seinen hoffentlich inzwischen beantragten, kostenlosen API-Key und wählt ein Verzeichnis mit seinen qualitativ gut getagten Stücken aus.
5.) Dann klickt man auf den Button "Fingerprint" und schaut/hört zu, wie sämtliche Prozessorkerne endlich einmal auf Hochtouren drehen.
6.) Dieser Vorgang und die Übermittlung selber dauern je nach Anzahl zu taggenden Dateien entsprechend. Eine Fortschrittsanzeige hilft dabei.
HINWEIS: Es dauert NICHT 120 Sekunden pro Song bis er analysiert ist. Auf meinem Rechner ist das in knapp 2 Sekunden pro Song erledigt.

Ok, ich habe meinen Beitrag geleistet und meine getaggten Stücke übermittelt. Was hilft das nun?

Wie man aufgrund von Fingerprints seine eigenen Stücke "erkennen" lassen kann, steht detailliert hier beschrieben: http://acoustid.org/webservice

Hier hoffe ich auf Script-Künstler in diesem Forum, welche die bekannten und äusserst effektiven Websourcen so anpassen oder neue erstellen können, dass man auch neue, ungetaggte Stücke aufgrund eines erzeugten Fingerprints erkennen lassen kann.

Wenn man sich beispielsweise dieses Stück in MusicBrainz ansieht:
http://musicbrainz.org/recording/cd2e7c47-...7c-a1eb7bf599ff
kann man den dritten Tab "Fingerprints" anklicken.
Dort sieht man neben den vielleicht bereits bekannten PUID* neu auch die AcoustID-Fingerprints.

* Erklärung zu PUID: http://musicbrainz.org/doc/PUID

Klickt man auf die AcoustID in diesem Beispiel:
http://acoustid.org/track/9ff43b6a-4f16-42...c2-92307ca505e0
kommt man zurück auf die AcoustID-Webseite.

Man sieht daraus, dass AcoustID eng mit Musicbrainz und umgekehrt zusammenarbeitet. Ich finde das eine unterstützenswerte Sache.
Aus dem Bauch heraus kann ich mir sehr gut vorstellen, dass einmal mit Fingerprints versehene Stücke sehr viel einfacher und direkter gefunden werden können, als z.B. mit einer Suche über die Titel, den Interpreten, das Album etc.

Nun bin ich gespannt, was IHR zu AcoustID meint?

Ist die AcousticID denn zuverlässig?

Ich könnte mir vorstellen, dass die bei Mp3s aus verschiedenen Quellen variieren:

  • verschiedenes Hintergrundrauschen, je nach Ursprungs Tonträger und Aufnahmemethode.
  • verschiedene Tonqualtiät, je nach Komprimierungsverfahren.

Was ist mit leichten Variationen des selben Stückes? Ich meine keine Remixes sondern:

  • remastered Versions.
  • oft unterscheiden sich eigentlich identische Stücke auf verschiedenen CDs um einige Sekunden,
    • weil Pausen am Schluss hinzugefügt wurden
    • weil das Stück einen Fade-Out verpasst gekriegt hat
    • weil die Stücke auf der CD leicht inneinander übergeblendet sind

Ich verstehe die verwendeten Erkennungs-Mechanismen auch nicht vollständig. In der (englischen) Erklärung steht was von "...transforming frequencies into musical notes. We are only interested in notes, not octaves...". Wie stark das bei Variationen hilft, kann ich schlecht beurteilen.

Lies auf der gleichen Seite auch mal die Kommentare. Da hat es noch zusätzliche Erklärungen was in etwa möglich ist.

Aber eins ist schon klar: Eine 100% perfekte Erkennung für jeden erdenklicken Song gibts kaum - ausser jeder dieser Songs würde mit einem Fingerprint versehen und in die DB hochgeladen. :wink:

Probier's einfach mal aus. Die Resutate interessieren sicher nicht nur mich.

Ich habe zwei Mp3tag Exportskripte und eine Aktionengruppe hergestellt.

  • Export.CMD.20140110.FPCALC.CreateTextfiles
    ... das Exportskript erzeugt eine ausführbare CMD Datei;

  • Export.CMD.20140110.FPCALC.DeleteTextfiles
    ... das Exportskript erzeugt eine ausführbare CMD Datei;

  • Import.FPCALC.Filename.Duration.Fingerprint.mta
    ... die Aktionengruppe verteilt die von FPCALC.EXE erzeugten Daten in Tagfelder.

Die beiden Exportskripte erzeugen jeweils eine CMD Datei, passend für die zuvor in Mp3tag ausgewählten Dateien.

Im ersten Schritt muss das Exportskript "Export.CMD.20140109.FPCALC.CreateTextfiles" ausgeführt werden und daran anschließend das erzeugte CMD Skript, mit dem das Kommandozeilenprogramm FPCALC.EXE gegen die Dateien ausgeführt wird.

Dabei wird jeweils für eine Mediendatei eine Textdatei im selben Ordner erzeugt.
Diese Textdatei vom Typ "fp.txt" enthält drei "Schlüssel=Wert" Paare:

  • FILE=Dateiname.Typ
  • DURATION=259 (Sekunden, abgerundet)
  • FINGERPRINT=AQADtI-icJEkPMOzSRnc.... (ca. 4 kB Zeichen)

Im zweiten Schritt muss Mp3tag mithilfe der Aktionengruppe
"Import.FPCALC.Filename.Duration.Fingerprint.mta" die zuvor erzeugten Fingerprint Daten in die jeweils zugehörige Mediendatei einbetten in die Tagfelder FP_FILE, FP_DURATION, FP_FINGERPRINT.

Im dritten Schritt muss das Exportskript "Export.CMD.20140109.FPCALC.DeleteTextfiles" ausgeführt werden und daran anschließend das erzeugte CMD Skript, mit dem die zuvor erzeugten Textdateien vom Typ "fp.txt" aus den Ordnern entfernt werden.

Soweit erst einmal die Arbeitsgrundlage für die noch folgenden Arbeitsschritte.

Wer macht nun weiter?
Wer ist fähig und willens, den Websource Teil herzustellen?

20130109.Mp3tag.Export.FPCALC.100.rar ( 3.12K ) Number of downloads: 1

20140110.Mp3tag.Export.FPCALC.101.rar ( 3.68K ) Number of downloads: 76

20140215.Mp3tag.Export.FPCALC.103.rar (6.16 KB)
DD.20140110.2025.CET, DD.20150501.0940.CEST

20140215.Mp3tag.Export.FPCALC.103.rar (6.16 KB)

Beiträge zum Thema "Ähnlichkeitssuche" wurden in ein neues Thema verschoben:
/t/15374/1