Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:logbuch

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss16:logbuch [2016/09/19 21:51]
burgshrimps [Eintrag 14/07/2016]
ss16:logbuch [2016/09/30 11:43] (aktuell)
zoppl [Eintrag 07/07/16]
Zeile 517: Zeile 517:
   * Verstehen des Prinzips der Hash-Funktion   * Verstehen des Prinzips der Hash-Funktion
   * Beispielcode von Hash-Fingerprinting angeschaut: https://​github.com/​worldveil/​dejavu/​blob/​master/​dejavu/​fingerprint.py ​   * Beispielcode von Hash-Fingerprinting angeschaut: https://​github.com/​worldveil/​dejavu/​blob/​master/​dejavu/​fingerprint.py ​
-  * Problem erkannt: komische Zeit-Werte im Plot für die lokalen Maxima+  * Problem erkannt: komische Zeit-Werte im Plot für die lokalen Maxima. Stellte sich letztendlich als kein Problem heraus. Es muss nur umgedacht werden 
 +  * Arbeiten an der Datenbank
  
 <code python> <code python>
Zeile 700: Zeile 701:
  
   * Funktion für Fingerprints geschrieben   * Funktion für Fingerprints geschrieben
-  * Fingerprints werden per Pickle gespeichert und können so zum vergleichen wieder abgerufen werden+  * Fingerprints werden per Pickle gespeichert und können so zum vergleichen wieder abgerufen werden, d.h. nur Vergleiche zwischen einzelnen Dateien möglich -> Optimierungsbedraf
   * jetzt fehlt eigentlich auch nur noch das genannte vergleichen   * jetzt fehlt eigentlich auch nur noch das genannte vergleichen
  
Zeile 932: Zeile 933:
  
   * aktuellste Version   * aktuellste Version
 +  * die Datenbank ist jetzt umgesetzt, die aktuelle Wiedergabe wird mit der gesamten Datenbank verglichen. Dies ist auch im roten Text im Programm erklärt
 +  * das Vergleichen wurde umgesetzt, dauert aber etwas länger, da die Funktion recht simpel geschrieben ist und die Datenmengen vergleichweise groß
 +  * das Vergleichen funktioniert folgendermaßen:​
 +    die Aufnahme (5 Sekunden) wird in fingerprints umgewandelt. Wie bereits oben erwähnt, sind diese in Form von Hashes gespeichert,​ also Datenpaketen,​ die einen charakteristischen Punkt und seinen Zeitpunkt im Lied beinhalten. Diese Datenpakete existieren ebenfalls in größerer Anzahl für die Lieder in der Datenbank. Daher werden die Datenpakete der Aufnahme wie ein Fenster über die Datenpakete der Lieder in der Datenbank geschoben und suchen dabei gleiche Datenpakete. Dies geschieht in dem Übereinstimmung von charakteristischen Punkten geprüft wird. Ist dies der Fall, wird die Differenz der beiden Zeitpunkte (Aufnahme und Datenbank) gebildet.
 +Dies muss getan werden, weil die Zeitpunkte in Form von Ganzen Zahlen gespeichert werden. Läuft das Lied um einen Bruchteil einer Sekunde weiter, erhöht sich die Zahl, angefangen bei 1. Wenn man die Differenz nicht bildet, könnte die Aufnahme also nur mit dem Anfang des Liedes übereinstimmen. Um dem entgegenzuwirken,​ bildet man also die Differenz der Zeitpunkte. Diese sollte konstant sein, da die charakteristika ja in gleichem Abstand zueinander stehen sollten (bei gleicher BpM-Zahl). Dies ist jedoch nicht ganz eindeutig, kleine Abweichungen können dabei leicht auftreten. Dementsprechend werden die Übereinstimmungen der charakteristischen Punkte gezählt und die Standardabweichung für die zeitlichen Differenzen gebildet. Für die ch. P. wird ein Mindestwert festgelegt und für die Standardabweichung ein Maximalwert. Werden diese eingehalten,​ ist es ein "​Match",​ die Lieder stimmen überein, ansonsten eben kein Match.
  
 <code python> <code python>
ss16/logbuch.1474314683.txt.gz · Zuletzt geändert: 2016/09/19 21:51 von burgshrimps