2 Punkte von GN⁺ 2023-12-06 | 1 Kommentare | Auf WhatsApp teilen
  • Um einen Song anhand von nur wenigen Sekunden Mikrofonaufnahme zu finden, vergleicht Shazam nicht das gesamte Audio, sondern erstellt einen Audio-Fingerprint und sucht damit in einer Datenbank
  • Ein Verfahren, das die Wellenform direkt verschiebt und vergleicht, ist bei 10 Millionen Songs sowie wegen Mikrofonrauschen, Lautstärkeänderungen und Frequenzeffekten praktisch nicht geeignet
  • Der Kernablauf besteht darin, Audio in ein Spectrogram umzuwandeln, starke Frequenz-Peaks zu finden und anschließend Peak-Paare als Hashes zu speichern, um sie schnell vergleichen zu können
  • Peaks bleiben auch bei Rauschen relativ gut erhalten und reduzieren die gespeicherte Datenmenge; sie müssen jedoch zeitlich und über die Frequenzen gleichmäßig verteilt sein, damit ein Song an jeder beliebigen Stelle erkannt werden kann
  • In der Erkennungsphase werden die Differenzen Track time - Sample time übereinstimmender Hashes in einem Histogramm gebündelt; der Song, der in einem Bin die größte Häufung aufweist, wird als Ergebnis gewählt

Das Problem, das Shazam lösen muss

  • Shazam ist eine App, die einen in der Umgebung abgespielten Song einige Sekunden lang aufnimmt, ihn in einer Datenbank sucht und das Ergebnis anzeigt
  • Bevor Shazam eine App wurde, war es ein telefonnummernbasierter Dienst
    • Nutzer riefen eine Nummer an und mussten das Mikrofon ihres Mobiltelefons in Richtung der Musik halten
    • Nach 30 Sekunden legte Shazam auf und schickte Informationen zum gehörten Song per SMS
    • Die Gesprächsqualität von Mobiltelefonen im Jahr 2002 machte die Song-Erkennung zusätzlich schwieriger
  • In einem kleinen Beispiel könnte man ein Audiofragment Schritt für Schritt über den gesamten Track schieben und prüfen, ob es übereinstimmt
    • Wenn man aber nicht weiß, um welchen Song es sich handelt, steigt der Aufwand bei der Suche in einer Datenbank mit 10 Millionen Songs stark an
  • Reale Mikrofon-Samples können durch Hintergrundgeräusche, Frequenzeffekte und Lautstärkeänderungen eine veränderte Wellenform haben, sodass ein einfacher Sliding-Vergleich nicht gut funktioniert

Gesamtaufbau des Systems

  • Der Shazam-Ansatz ist in die Abläufe register und recognise unterteilt
    • register ist der Ablauf, bei dem Songs gespeichert werden, damit sie später gefunden werden können
    • recognise ist der Ablauf, bei dem ermittelt wird, zu welchem Song ein kurzer Audioausschnitt gehört
  • Beide Abläufe durchlaufen dieselben Vorverarbeitungsschritte
    • Berechnung des Spectrograms des Audios
    • Finden der Peaks, also der stärksten Frequenzanteile im Spectrogram
    • Gruppieren der Peaks zu Paaren und Erzeugen von Hashes
  • Der register-Ablauf speichert die berechneten Hashes in der Datenbank
  • Der recognise-Ablauf vergleicht die aus neuem Audio erzeugten Hashes mit den Hashes in der Datenbank und identifiziert den Song in der Matching-Phase

Berechnung des Spectrograms

  • Die Fourier-Transformation zeigt, welche Frequenzen in einem Audiosignal enthalten sind
    • Wendet man eine Fourier-Transformation auf eine 20-Hz-Sinuswelle an, erscheint in der Nähe von 20 Hz ein großer Spike
    • Da eine Sinuswelle nur eine einzelne Frequenz enthält, wird sie auch als pure tone bezeichnet
  • Das Ergebnis der Fourier-Transformation ist ein frequency spectrum
    • Eine Darstellung mit Fokus auf der Zeitachse ist die Time Domain
    • Eine Darstellung mit Fokus auf der Frequenzachse ist die Frequency Domain
    • Die Y-Achse des frequency spectrum zeigt die Stärke der jeweiligen Frequenzanteile; je stärker ein Anteil ist, desto deutlicher ist er im Time-Domain-Signal zu hören
  • Addiert man mehrere Sinuswellen, werden die Frequenzanteile der einzelnen Wellen kombiniert
    • Addiert man zu einer 20-Hz-Sinuswelle eine 50-Hz-Sinuswelle mit halber Stärke, erscheinen ein 20-Hz-Spike und ein kleinerer 50-Hz-Spike
    • Jedes Audiosignal kann aus solchen Wellen rekonstruiert werden
  • Die Frequency Domain macht Informationen sichtbar, die in der Time Domain schwer zu erkennen sind
    • Selbst wenn durch hinzugefügtes Rauschen die Form in der Time Domain verändert wird, können die wichtigsten Frequenz-Spikes in der Frequency Domain weiterhin deutlich sichtbar sein
  • Wendet man die Fourier-Transformation nur einmal auf den gesamten Song an, sieht man lediglich die Frequenzstärken über das gesamte Stück; die Frequenzen eines echten Songs ändern sich jedoch im Zeitverlauf
    • Teilt man den Song in kleine Abschnitte auf, wendet auf jeden Abschnitt eine Fourier-Transformation an und setzt die Ergebnisse zusammen, erhält man ein Spectrogram
    • Ein Spectrogram stellt Zeit, Frequenz und Stärke gemeinsam dar; die Stärke kann farblich dargestellt werden
  • Im beispielhaften Spectrogram von „Like a Stone“ liegen die hellsten Punkte, also die meisten starken Frequenzen, unterhalb von 5000 Hz
    • Eine solche Verteilung ist in Musik häufig; der Großteil des Frequenzbereichs eines Klaviers liegt bei 27 Hz bis 4186 Hz

Peak-basierter Fingerprint

  • Ein Audio-Fingerprint beginnt damit, im Spectrogram Peaks zu finden
    • Ein Peak ist der stärkste Frequenzanteil zu einem bestimmten Zeitpunkt
    • In Musik kann etwa ein kräftiger Ton in einem Gitarrensolo zu diesem Zeitpunkt der Peak sein
  • Peaks sind gegenüber Rauschen relativ robust
    • Um einen Peak unkenntlich zu machen, müsste das Rauschen stärker sein als dieser Peak
    • Spectrogram-Peaks sind die stärksten Frequenzanteile im Track
  • Speichert man nur Peaks, sinkt die für den Fingerprint benötigte Datenmenge
    • Statt alle Frequenzinformationen zu speichern, bleiben nur die größten Frequenzanteile übrig
    • Weil weniger Daten durchsucht werden müssen, wird die Fingerprint-Suche schneller
  • Peaks müssen sowohl zeitlich als auch über die Frequenzen hinweg gleichmäßig verteilt sein
    • Wenn sie zeitlich nur an einer Stelle konzentriert sind, lassen sich Samples aus den übrigen Abschnitten des Songs nicht erkennen
    • Wenn sie sich auf ein enges Frequenzband konzentrieren, kann ein lautes Geräusch in einem bestimmten Bereich, etwa eine Autohupe, die Peak-Auswahl verändern und diesen Abschnitt schwer erkennbar machen

Peaks mit einem Maximum Filter finden

  • Um Peaks gleichmäßig zu finden, kann man die Maximum Filter-Technik aus der Bildverarbeitung verwenden
  • Ein Maximum Filter sucht in der Nachbarschaft jedes Pixels den Maximalwert und ersetzt das betreffende Pixel durch diesen lokalen Maximalwert
    • Im Beispiel wird ein 3x3-Bereich um jedes Pixel betrachtet
    • Diese Verarbeitung hat den Effekt, lokale Peaks in die umliegende Region auszuweiten
  • Ein maximum-gefiltertes Spectrogram wirkt wie eine niedrig aufgelöste Version des ursprünglichen Spectrograms
    • Das liegt daran, dass die Peaks des Signals ausgeweitet werden und andere Pixel einnehmen
    • Boxen derselben Farbe entsprechen jeweils einem lokalen Peak im Originalbild
  • Der Maximum Filter hat einen Parameter für die Boxgröße, in der lokale Maxima gesucht werden
    • Mit einer kleinen Box entstehen mehr Peaks
    • Mit einer großen Box entstehen weniger Peaks
  • Die Peak-Positionen werden rekonstruiert, indem man die Stellen findet, an denen die Werte des ursprünglichen und des gefilterten Spectrograms gleich sind
    • Stellen, die keine Peaks sind, werden durch den lokalen Peak-Wert ersetzt und ändern dadurch ihren Wert
    • Nur Stellen, deren Wert unverändert bleibt, sind Peaks
  • Zeichnet man alle Peaks zusammen auf, entsteht eine Constellation Map
    • Der Name kommt daher, dass sie wie ein Bild des Nachthimmels aussieht
  • Die Anzahl der Peaks wirkt sich direkt auf die Größe des Fingerprints aus
    • Wenn Millionen von Songs gespeichert werden müssen, ist es wichtig, Fingerprints klein zu halten
    • Reduziert man die Peaks, sinkt jedoch auch die Genauigkeit, und die Chancen nehmen ab, ein Sample dem richtigen Song zuzuordnen
  • Es gibt zwei Arten, die Anzahl der Peaks zu reduzieren
    • Man verwendet die Top-N-Peaks, wobei N proportional zur Audiolänge sein sollte, damit kurze Songs nicht überrepräsentiert werden
    • Man verwendet alle Peaks oberhalb eines bestimmten Thresholds; das garantiert zwar keine feste Fingerprint-Größe pro Zeiteinheit, kann aber genauer sein

Peak-Paare zu Hashes machen

  • Wenn ein Fingerprint nur eine Sammlung einzelner Spectrogram-Peaks wäre, würden Duplikate schnell zunehmen
    • Stellt man die Frequenz jedes Peaks mit 10 Bit dar, lassen sich 2^10 = 1024 einzelne Frequenzen darstellen
    • Bei Tausenden von Punkten pro Track entstehen viele Wiederholungen
  • Für Fingerprints ist Eindeutigkeit wichtig
    • Je höher die Eindeutigkeit, desto schneller die Suche
    • Sie hilft außerdem dabei, mehr Songs zu erkennen
  • Der Shazam-Ansatz erstellt Hashes nicht aus einzelnen Peaks, sondern aus Peak-Paaren
    • Ein Hash enthält die Frequenzen fA und fB der beiden Peaks sowie den Zeitabstand ΔT zwischen ihnen
    • Wenn jeder Peak 10 Bit Frequenzinformation trägt und auch ΔT mit 10 Bit dargestellt wird, ergibt das insgesamt 30 Bit Information
    • 2^30 = 1.073.741.824 Möglichkeiten sind deutlich mehr als die 1024 Möglichkeiten eines einzelnen Points
  • Für die Paarbildung werden ein Anchor Point und eine Target Zone verwendet
    • Ein Point wird als Anchor Point ausgewählt
    • Für diesen Anchor Point wird die Spectrogram-Target-Zone berechnet
    • Alle Points innerhalb der Target Zone werden mit dem Anchor Point zu Paaren kombiniert
  • Das Shazam-Paper erklärt die Wahl der Target Zone nicht im Detail
    • In der Abbildung des Papers beginnt die Target Zone zeitlich etwas nach dem Anchor Point und liegt um die Frequenz des Anchor Points herum
  • Die erzeugten Paare werden als Hashes in der Datenbank gespeichert
    • Die Bestandteile des Hashes sind fA, fB und ΔT
    • Als zusätzliche Informationen werden Point A time und Track ID gespeichert
    • Point A time und Track ID werden später im Matching verwendet, um eine bestimmte Stelle in einem bestimmten Song zu finden
  • Die Gesamtheit aller Hashes eines bestimmten Tracks bildet den Fingerprint dieses Tracks

Matching-Verfahren

  • Der recognise-Ablauf erstellt aus dem Sample einen Fingerprint und vergleicht ihn mit den bereits in der Datenbank gespeicherten Fingerprints
  • Der Matching-Algorithmus läuft in vier Schritten ab
    • Alle Hashes aus der Datenbank abrufen, die mit dem Sample-Fingerprint übereinstimmen
    • Die Hashes nach Song gruppieren
    • Für jeden Song prüfen, ob die Hashes zeitlich ausgerichtet sind
    • Den Track auswählen, der die meisten ausgerichteten Hashes hat
  • abracadabra speichert das 3-Tupel (fA, fB, ΔT) nicht direkt für die Suche, sondern als einzelnen Wert, den hash(fA, fB, ΔT) zurückgibt
    • Statt für jeden Hash drei Werte zu suchen, kann ein einzelner Wert gesucht werden
  • Jedem Hash in der Datenbank ist eine Track ID zugeordnet, wodurch eine Gruppierung nach Songs möglich ist
    • Nach dieser Gruppierung kann jeder Kandidaten-Track bewertet werden
  • Wenn ein Sample zu einem Song passt, sollten die Hashes im Sample gut zu einem Abschnitt des Originals ausgerichtet sein
    • Rauschen kann im Sample Peaks erzeugen, die wie Peaks zu anderen Zeitpunkten aussehen
    • Hashes können auch zu einem falschen Song passen
  • Ob die Ausrichtung stimmt, prüft man, indem für jeden matching Hash der Wert Track time - Sample time berechnet wird
    • Echte matching Hashes teilen sich denselben Differenzwert
    • Im Beispiel sind die Zeilen mit dem Differenzwert 10 true matches, während andere Differenzwerte false matches sind
  • Aus den Differenzwerten wird ein Histogramm erstellt, und der größte Bin wird als Score des Songs verwendet
    • Bei einem schlechten Match bleiben alle Bin-Werte niedrig
    • Bei einem guten Match entsteht in einem Bin ein großer Spike
  • Man wählt nicht einfach den Song mit den meisten matching Hashes aus, weil es einen Bias zugunsten langer Songs gibt
    • Lange Songs haben mit höherer Wahrscheinlichkeit mehr Matches als kurze Songs
    • Auf Spotify gibt es auch Tracks mit über vier Stunden Länge, was die Ergebnisse stark verzerren könnte

abracadabra und weiterführende Materialien

  • abracadabra ist ein Open-Source-Projekt, das den Ansatz aus dem Shazam-Paper implementiert
    • Im Python-Code kann man die Schritte Spectrogram, Peak-Suche, Hashing und Matching nachvollziehen
    • Es kann auch als Library in anderen Projekten verwendet werden
  • Verwandte Implementierungen und Materialien

1 Kommentare

 
GN⁺ 2023-12-06
Hacker-News-Kommentare
  • Das Wall Street Journal hat ein gut gemachtes Video, das Shazam erklärt
    https://www.wsj.com/video/series/in-depth-features/how-shaza...
    Chris, Mitgründer von Shazam

    • Ich frage mich, ob Shazam deshalb ein Büro in Rancho Bernardo in San Diego hatte, weil er ursprünglich aus San Diego stammte, bevor er nach Großbritannien ging
      Lawn Love mietete von 2014 bis 2018 die Suite darüber, aber die Entwickler der mobilen Shazam-App in diesem Büro blieben auch nach der Übernahme still, und wir hörten nie das Geräusch von Champagner zum Feiern
  • Als Shazam 2008 herauskam, war der Hash-basierte Ansatz eine clevere Wahl
    Ich hätte zuerst versucht, alle Songs auf möglichst recheneffiziente Weise in Hashes umzuwandeln
    Würde man es heute auf den Markt bringen, wäre die grundlegende F&E-Richtung vermutlich das Trainieren eines Modells, was viel weniger effizient und beim Hosting teurer hätte sein können
    Es ist zwar ein Problem, bei dem man intuitiv meint, ein Modell würde gut funktionieren, aber da die Anzahl der Songs endlich ist, ist ein Hash-Verfahren wahrscheinlich deutlich performanter

    • Genau genommen wird nicht jeder Song in einen einzelnen Hash umgewandelt, sondern jeder Song in Hunderte bis Tausende Hashes
      Die Struktur sucht danach, wie viele der aus einem kurzen Sample stammenden Dutzenden, höchstens niedrigen Hunderte Hashes übereinstimmen, und zwar im Großen und Ganzen fortlaufend
      Auch heute würde man das vermutlich nicht per Modelltraining machen, weil jeden Tag enorm viele neue Songs hinzukommen und man daher ständig neu trainieren müsste
      Hashing wirkt nach wie vor wie der bessere Ansatz, nicht nur bei der Effizienz, sondern auch insgesamt bei der Robustheit
    • Der clevere Ansatz von 1975 war der Parsons-Code, und auch das war im Grunde eine Art Song-Hashing, das man im Kopf berechnen konnte
      Danach konnte man Songs suchen wie Wörter in einem Wörterbuch, und ich hoffe, diese Idee verschwindet nicht so leicht
      [1]: https://en.wikipedia.org/wiki/Parsons_code
    • Kleine Korrektur: Shazam wurde nicht 2008, sondern 2002 als Telefon-Dienst gestartet und schickte die Ergebnisse per SMS
      Die erste Handy-App war 2006 für BREW
      2008 ist nur der Zeitpunkt, zu dem Apple den App Store startete; davor konnten Dritte keine iPhone-Apps entwickeln
    • Ehrlich gesagt gibt es bei einem Tool wie Shazam keinen großen grundsätzlichen Unterschied zwischen einer Datenbank+Hashing-Algorithmus und einem selbstüberwachten Modell
      Beides sind hervorragende Lösungen für Indexierung und Kompression, nur mit unterschiedlicher Datengröße
    • Wenn man das mit einem Modell trainieren würde, frage ich mich, wie man vermeiden könnte, bei jedem neuen Song den gesamten Trainingsprozess erneut laufen zu lassen
      Vielleicht gäbe es eine Möglichkeit, ein Embedding-Modell zu bauen, das für jeden neuen Song einen Embedding-Vektor berechnen kann, ohne komplett neu zu trainieren
  • Shazam ist eines der seltenen Produkte, bei denen das magische Gefühl seit 20 Jahren nicht verschwunden ist
    Es kommt dem, worauf Techniker hinarbeiten sollten, wirklich sehr nahe

    • Für technisch versierte Menschen ist Audio-Fingerprinting ein verständliches, konkretes Problem, aber wenn man ins Detail geht, ohne die bereits gelöste Methode zu kennen, ist es ziemlich schwierig
      Anders als Funktionen wie die Erkennung von Tier- oder Objektbildern, die oberflächlich ähnlich wirken, aber meistens eher seltsame Machine-Learning-Magie sind, fällt es in einen seltenen, aber nachvollziehbaren Problembereich
    • Gleichzeitig ist aus einer App, bei der es „antippen, zuhören und sofort das Ergebnis“ hieß, eine langsame, mit Werbung vollgestopfte aufgeblähte App geworden
      Ich erinnere mich, dass sie auf einem iPhone der vorherigen Generation nicht einmal rechtzeitig lud und ich die App am Ende löschte
    • Google hat das noch eine Stufe weitergetrieben
      Die Funktion Now Playing erkennt Songs kontinuierlich und hält sie im Verlauf fest, und im Google Assistant kann man Songs sogar nur durch Summen suchen
      Es funktioniert nicht zuverlässig, trifft aber manchmal genau ins Schwarze
    • Es ist eher noch magischer geworden
      Als ich einen Song finden wollte, den jemand bei America’s Got Talent sang, war ich überrascht, dass das Ergebnis genau auf diesen Sänger aus AGT zurückkam
      Ich fragte mich, ob sie sogar TV-Sendungen indexieren
    • Techniker streben solche Produkte an
      Aber was soll ein Product Manager schon tun, wenn er das Produkt nicht ständig kaputtmacht, um Bonus und Urlaub zu bekommen
  • Es gibt auch Chromaprint, das etwas anders funktioniert
    Es basiert nicht auf Maxima im Spektrum, sondern auf Mustern von Tonhöhenänderungen
    Chromaprint wird bei AcoustID verwendet, einer großen öffentlichen Datenbank, die Audio-Fingerprints mit MusicBrainz-Aufnahmen verknüpft
    Es ist erstaunlich, wie viel Musik darin enthalten ist, obwohl es längst nicht so viel kommerzielle Unterstützung hat wie Shazam
    [1]: https://oxygene.sk/2011/01/how-does-chromaprint-work/

    • Bei Chromaprint muss man wohl den ganzen Song vergleichen
      Es ist gut für die Duplikaterkennung, aber Shazams Fingerprint-Design ermöglicht es, kurze Ausschnitte einem ganzen Song zuzuordnen
  • Ein hervorragender Artikel, der gut erfasst, was ein Spektrogramm leistet, und für alle, die verstehen wollen, wie Audio-Fingerprinting funktioniert, fast Pflichtlektüre ist
    Auch bei anderen Medien gibt es ähnliche Näherungsalgorithmen; um Hashing in der realen Welt zu verstehen, lohnt es sich, diesen Artikel in Ruhe zu studieren

    • Die allgemeine Spektrogramm-Technik wurde schon vor Shazam von Phillips erfunden
      Was Shazam getan hat, war, sie kombinatorisch zu hashen, um False Positives zu reduzieren
  • Es gibt eine hervorragende Website, die nicht Songs, sondern Genre-Klassifizierung und die durch neue Song-Signaturen entstehenden Verzweigungen in Subgenres per algorithmischem Matching behandelt.
    Ein erstaunliches Material, das als persönliches Nebenprojekt betrieben wird, aber wegen Dingen wie Hosting-Problemen gefährdet zu sein scheint, zu verschwinden.
    Früher gab es Pandoras Music DNA oder ähnliche Funktionen bei LastFM, aber diese Website wirkt wie ein visuelles Beziehungsnetz der gesamten von der Menschheit bis 2023 geschaffenen Musik; würde sie verschwinden, wäre das ein Verlust für das ganze Web.
    Every Noise At Once
    https://everynoise.com

  • Es ist erstaunlich, wie intuitiv diese Methode ist und wie gut sie zu unserem eigenen Wahrnehmungsprozess passt.
    Im Groben identifiziert man Melodiefragmente und versucht dann, sie in der richtigen Reihenfolge abzugleichen.
    Ähnlich wie wir schon nach 5, 7 oder 10 Tönen etwas erkennen können.
    Ich glaube, ich habe auch über andere Verfahren zur Song-Fingerprinting gelesen, die sich etwa auf Lautstärke-Peaks stützen; auch wenn solche Verfahren genauso gut funktionieren können, entsprechen sie überhaupt nicht dem, was unser Gehirn tut.
    Diese Methode ist ziemlich cool, weil sie nicht auf „künstliche Nebenprodukte“ setzt, sondern im Grunde ähnlich funktioniert wie wir.
    Technisch gesehen ist es nicht immer eine Melodie, aber in den meisten Fällen dürfte es eine sein.

  • Ich frage mich, wie Shazam damit umgeht, wenn die Zeitachse nicht linear oder nicht konstant ist.
    Etwa bei Kassetten, Wow und Flutter oder Situationen, in denen es ständig schneller und langsamer wird.
    Soweit ich weiß, ist Fingerprinting sehr zeitempfindlich, und selbst das Zerschneiden in etwa 50-ms-Stücke löst das nicht vollständig.
    Als ich zuletzt nachgesehen habe, war Dynamic Time Warping, die allgemeine Technik für solche Probleme, rechnerisch zu teuer.

  • Das sind verwandte Beiträge. Falls es noch mehr gibt, wäre ich neugierig.
    How Shazam Works (2003 Paper) - https://news.ycombinator.com/item?id=33299853 - Oktober 2022, 1 Kommentar
    Creating Shazam in Java (2010) - https://news.ycombinator.com/item?id=32530056 - August 2022, 36 Kommentare
    Shazam turns 20 - https://news.ycombinator.com/item?id=32520593 - August 2022, 227 Kommentare
    How Shazam Works (2015) - https://news.ycombinator.com/item?id=23806142 - Juli 2020, 7 Kommentare
    Designing an audio adblocker - https://news.ycombinator.com/item?id=18855029 - Januar 2019, 186 Kommentare
    Show HN: A radio/podcast adblocker featuring ML and Shazam-like fingerprinting - https://news.ycombinator.com/item?id=18459058 - November 2018, 2 Kommentare
    Show HN: Shazam-like acoustic fingerprinting of continuous audio streams - https://news.ycombinator.com/item?id=15809291 - November 2017, 76 Kommentare
    How Shazam Works (2015) - https://news.ycombinator.com/item?id=15350729 - September 2017, 13 Kommentare
    Tell HN: Shazam picks up song from my kitchen light - https://news.ycombinator.com/item?id=11593305 - April 2016, 2 Kommentare
    How Shazam works - https://news.ycombinator.com/item?id=9870408 - Juli 2015, 48 Kommentare
    Patent infringement claim re: “Creating Shazam in Java” blogpost (2010) - https://news.ycombinator.com/item?id=9594480 - Mai 2015, 18 Kommentare
    The Shazam Effect (2014) - https://news.ycombinator.com/item?id=9593429 - Mai 2015, 37 Kommentare
    The Shazam Effect - https://news.ycombinator.com/item?id=8634357 - November 2014, 34 Kommentare
    Ask HN: Is there an audio search technology that finds exact and similar audio? - https://news.ycombinator.com/item?id=8420141 - Oktober 2014, 3 Kommentare
    Source code example of the Shazam algorithm - https://news.ycombinator.com/item?id=5724422 - Mai 2013, 16 Kommentare
    Creating Shazam in Java - https://news.ycombinator.com/item?id=5723863 - Mai 2013, 43 Kommentare
    An Industrial-Strength Audio Search Algorithm (Shazam) - https://news.ycombinator.com/item?id=2621103 - Juni 2011, 4 Kommentare
    Shazam's Search for Songs Creates New Music Jobs - https://news.ycombinator.com/item?id=2215295 - Februar 2011, 1 Kommentar
    How does the music-identifying app Shazam work its magic? - https://news.ycombinator.com/item?id=2214992 - Februar 2011, 2 Kommentare
    Implementing Shazam with Java in a weekend - https://news.ycombinator.com/item?id=1702975 - September 2010, 23 Kommentare
    Shazam: not magic after all - https://news.ycombinator.com/item?id=909263 - Oktober 2009, 28 Kommentare

How does the music-identifying app Shazam work its magic? - https://news.ycombinator.com/item?id=893353 - Oktober 2009, 16 Kommentare

  • Das wirkt wie ein umgekehrter Ansatz ähnlicher Ingenieurskunst, bei dem die Popmusikindustrie versucht, genrebasierte Hits zu produzieren.