Eine der meistgeladenen und nützlichsten Apps ist Shazam. Das kleine Stück Software nimmt 10 Sekunden eines Musikstücks auf, und gibt hinterher komplette Informationen zum gespielten Stück. Neben dem Titel, dem Interpreten und Infos zum Album gibts dort auch gleich den Link, um das Stück per iTunes zu kaufen, sowie Links zur Diskographie des Künstlers, Youtube-Videos und zum per-twitter-Weiterverbreiten. Man merke auf: Ein Stück Musik wird unter teils lauten Umgebungsgeräuschen, von einem qualitativ grottigen Handymikrofon aufgenommen, und zu allem Überfluss noch mit einer Stimmcodec-Kompression versehen. Und daraus soll Shazam dann Infos über das Stück finden und tut das auch.
Aber wie, verdammt, macht Shazam das? Aus einem kleinen Schnipsel unter Millionen von Titeln herauszufinden, welcher Song der Richtige ist? Immerhin hat Shazam eine schon fast unglaubwürdig hohe Trefferquote, und findet selbst abgefahrene Coverversionen und Remixe relativ sicher. Und das funktioniert so.
Um die Shazam-Datenbank nicht platzen zu lassen, wird ein Spektrografischer Fingerabdruck des Songs erstellt. Der ist im Prinzip ein Frequenz-Intensitäts-Diagramm, in dem nur die jeweils lautesten Töne pro Zeit verzeichnet werden. So reduziert sich die Datenmenge drastisch. Die Peaks werden in ein Koordinatensystem eingetragen, und ergeben so ein sehr individuelles Bild pro Song. Der Einfachheit halber lassen wir mal Berechnungen zur Störungsfilterung und das Problem mit zu lauten Umgebungsgeräuschen weg. Der “Fingerabdruck eines Songs könnte dann – stark vereinfacht – so aussehen:

Was macht Shazam jetzt damit? Wir haben immerhin einen nur wenige Sekunden langen Schnipsel. Man kann sich das jetzt so vorstellen, als führe Shazam den Fingerabdruck ab, und wartet einfach, bis alles passt. So in etwa:

Das funktioniert natürlich so nicht. Würde auch viel zu lange dauern, aber in etwa ist das schon richtig. Nur funktioniert das ganze eben mathematisch. Da haben die Jungs und Mädels, die Shazam entwickelt haben, eine gute Methode gefunden. Im Diagramm werden Punkte als Ankerpunkte festgelegt, die alle eine bestimmte Zielzone um sich herum haben. Aus diesen kleineren Ausschnitten werden Hashsummen berechnet. Jetzt hat man statt einem Diagramm mit hunderten Punkten einfach ein paar charakteristische Zahlenkolonnen. Und die kann man viel einfacher vergleichen. Man sieht also, dass Shazam nicht wirklich Zauberei ist, sondern einfach nur eine gute Idee, die es sich mit der Mathematik gemütlich gemacht hat.
Auf die Idee zu diesem Post bin ich hier gekommen. Ich dachte mir nur, vielleicht ist das auf Deutsch auch ganz sinnvoll. Wer mehr erfahren möchte, kann sich auch das (eher wissenschaftliche) Paper herunterladen, in dem das Ganze zur Genüge erklärt wird.
Sehr cooler Artikel. Ich habe mich auch schon sehr oft gefragt, wie es Shazam schafft eine so hohe Trefferquote zu erreichen. Und wie diese kleine App das eigentlich überhaupt schafft die Lieder herauszufinden.
Jetzt weiß ich es in etwa.
Würde nur mal gern wissen wie man eigene Musik oder Interpreten mit ins Archiv von Shazam laden kann.
Weiß das hier jemand?
Hi Hanjo,
Mir ist nicht bekannt, dass es eine Möglichkeit gibt. Ich gehe fast davon aus, dass Shazam nach und nach die Gracenote-Datenbank indiziert. Wenn man das den Usern überlässt, leidet die Qualität sicher erheblich. Um die Datenbank zu füttern braucht man Aufnahmen in möglichst guter Qualität. Und wenn jeder seine Raubkopien (die ja auch mal eine Sekunde länger oder kürzer sein können als das Original) selbst da reinlaufen lässt, gibts ein großes Tohuwabohu.