Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# Musikanalyse - Was sagen mir die Werte? (https://www.delphipraxis.net/155483-musikanalyse-sagen-mir-die-werte.html)

TurboMartin 27. Okt 2010 21:02

AW: Musikanalyse - Was sagen mir die Werte?
 
Vielleicht ist für dich noch der mufin player eine hilfe für dich. Auf welcher Technik das genau funktioniert weiß ich nicht genau, steht aber glaube ich ein wenig in den FAQ, entwickelt wurde die Technik, wenn ich mich nicht stark täusche von einem Fraunhofer.

Mithrandir 27. Okt 2010 21:13

AW: Musikanalyse - Was sagen mir die Werte?
 
Danke, dass Ding kenne ich schon. Es nutzt die AudioID-Technik des Frauenhofer Instituts. Und wirklich herausfinden, wie es funktioniert, war mich bislang nicht möglich. Dennoch danke für den Hinweis. ;)

Mithrandir 9. Nov 2010 19:39

AW: Musikanalyse - Was sagen mir die Werte?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm - irgendwie sind meine Mathekenntnisse arg beschränkt.

Basierend auf dieser Doktorarbeit (pdf) ist Mirage entstanden. Mirage ist ein Banshee-Plugin, was Lieder auf ihre Ähnlichkeit zueinander untersucht und daraus Playlisten erstellen kann.

Zitat:
Zitat:

Mirage is an implementation of the latest research in automatic playlist generation and music similarity. Mirage analyzes your music collection and computes acoustic similarity models for each song. After your music collection has been analyzed, Mirage is able to automatically generate playlists of similar music.

Mirage uses the latest artificial intelligence/music information retrieval techniques to compute a similarity model for each song. This process includes the computation of

* an FFT,
* the Mel Cepstrum Frequency Coefficients for psycho-acoustic modeling
* and a multidimensional Gaussian Model to finally represent a song with a timbre/similarity model.

After your whole music collection is analyzed each song has a similarity/timbre model attached to it. You can then start generating playlists by selecting a song (the seed song) you want the playlist to start with and Mirage searches all its models for similar songs. To do so the Gaussian models computed in the previous step are compared using the an optimized Kullback Leibler divergence.
Eigentlich genau das, was ich brauche. Nur stelle ich mich etwas dämlich bei der Umsetzung an. Der Quelltext ist für Mono geschrieben, in C#. Eigentlich perfekt, nur wird an vielen Stellen unsafe-Code genutzt, den ich nicht 1:1 übernehmen kann, ohne eine Fehlermeldung zu bekommen, dass sich der Array-Index außerhalb des gültigen Bereichs befindet. Es ist also noch einiges zu tun. Wer Ideen hat, darf sich gerne äußern. Ich stecke momentan in einer Sackgasse... :? Im Anhang findet sich mein aktueller Stand der Dinge...

Das Projekt muss kompilliert werden, bevor es genutzt werden kann, da ihr im Quelltext die Pfade zu zwei Musikdateien angeben müsst - njoar, und dann braucht ihr zwischen 2 und 3 Minuten Geduld, um einen Wert zu bekommen, der irgendwie nixsagend ist... :gruebel:

Mithrandir 18. Nov 2010 19:57

AW: Musikanalyse - Was sagen mir die Werte?
 
Liste der Anhänge anzeigen (Anzahl: 4)
Yes!

*hust*

:mrgreen:

Meine Implementation des MIRAGE-Plugins ist fertig. Das Testprogramm ist kompiliert und verlangt die Auswahl zweier Lieder. Das Programm unterstützt noch kein Threading, daher friert die Anwendung ein. Der ganze Vorgang dauert auf meinem Core2Duo mit 1.66 Ghz nur 5 - 10 Sekunden.

Wichtig: Das Lied muss länger als 2 Minuten sein. Alles andere wird noch nicht geprüft.

Als Ergebnis bekommt ihr einen Wert. Je kleiner der Wert ist, desto näher sind sich die beiden Lieder. Zwischen 0 und 10 bedeutet, dass sich die Lieder recht ähnlich sind. Werte größer >50 stehen für komplett unterschiedliche Lieder.

Angehängt hab ich euch das kompillierte .NET-Projekt sowie den Visual Studio 2010 Source. Es wird .NET Version 4 vorausgesetzt.

//Edit: Nochmal zwei Beispiele für euch:


Hurts - Wonderful Life vs. B.O.B - Airplanes

Anhang 32615


Jeff Buckley - Hallelujah vs. Megadeth - The Punishment Due

Anhang 32614

BUG 18. Nov 2010 20:30

AW: Musikanalyse - Was sagen mir die Werte?
 
Stichprobenartig sieht das gut aus, zumindest wird Ähnlichkeit gut erkannt.

Manche scheinen aber zu ähnlich bewertet zu werden, obwohl sie vom Stil relativ unterschiedlich sind:

Wert: 9,349607
Fixing my Brain
Listen To Me

Wert: 7,148081
Overreacting
Listen To Me

Namenloser 18. Nov 2010 20:30

AW: Musikanalyse - Was sagen mir die Werte?
 
Hab's gerade mal an ein paar Liedern getestet. Also grob scheint die Einschätzung des Programms meist zu stimmen. Allerdings hatten bei mir zwei verschiedene Lieder einen Albums einen geringeren Abstand (2,irgendwas) als zwei mal das selbe Lied von einmal Original und einmal Remastered (5,irgendwas).
Aber solange man die Werte mit Schwellenwerten von 5-10 vergleicht, denke ich, ist der Algorithmus durchaus brauchbar. Wenn ich mich nicht irre, geht es dir ja eh nur um eine grobe Vorsortierung, da die ursprüngliche Idee ja war, dass das Programm aus dem Nutzerverhalten lernt.
Wobei es natürlich auch bei recht schnellen 5-6 Sekunden, die der Algorithmus braucht, nicht praktikabel ist, eine komplette Musiksammlung auf diese Weise zu scannen. Da müsste man sich wohl noch irgendeine Optimierungsstrategie überlegen (z.B. nur stichprobenartig zu scannen und den Rest zu interpolieren, also z.B. wenn bekannt ist: A ist ähnlich zu B, und B ist ähnlich zu C; dann ist A vermutlich auch ein bisschen ähnlich zu C. Aber wahrscheinlich hast du dir dazu auch schon Gedanken gemacht...

Mithrandir 18. Nov 2010 21:34

AW: Musikanalyse - Was sagen mir die Werte?
 
Zitat:

Zitat von NamenLozer (Beitrag 1062446)
Aber wahrscheinlich hast du dir dazu auch schon Gedanken gemacht...

Wenn man das runterrechnet, braucht man pro Lied 3 Sekunden. Macht bei 100 Liedern 5 Minuten, bei 1000 Liedern 50 Minuten, bei 10.000 Liedern 500 Minuten, vielleicht eher 600, was 10 Stunden entspricht.
Das ist etwas, das kann man imho im Hintergrund berechnen lassen, das sollte nicht das Problem sein. Es wird eine Trefferwahrscheinlichkeit von 75 - 80% angegeben. Die Differenzen können recht schnell berechnet werden. Also alles im machbaren Bereich. ;)

BUG, das Lied ist natürlich sehr - speziell. :mrgreen: Ich werde mir das mal ansehen, vielleicht kann man da noch was optimieren. ;)

Namenloser 18. Nov 2010 22:21

AW: Musikanalyse - Was sagen mir die Werte?
 
Zitat:

Zitat von Mithrandir (Beitrag 1062452)
Zitat:

Zitat von NamenLozer (Beitrag 1062446)
Aber wahrscheinlich hast du dir dazu auch schon Gedanken gemacht...

Wenn man das runterrechnet, braucht man pro Lied 3 Sekunden. Macht bei 100 Liedern 5 Minuten, bei 1000 Liedern 50 Minuten, bei 10.000 Liedern 500 Minuten, vielleicht eher 600, was 10 Stunden entspricht.

Ich war davon ausgegangen, dass immer zwei Dateien miteinander verglichen werden. In diesem Fall wäre die Laufzeit ja quadratisch zur Anzahl der Dateien.

Medium 18. Nov 2010 22:26

AW: Musikanalyse - Was sagen mir die Werte?
 
Du musst schon bei der Zeitberechnung bedenken, dass du immer paarweise Vergleiche hast ;). Das ist dann O(n*(n+1)/2), und bei 100 Liedern schon 3sek*100*(101/2) = 15150 sek = 252,5 min ~= 4,21 std.

BenjaminH 19. Nov 2010 10:37

AW: Musikanalyse - Was sagen mir die Werte?
 
Zitat:

Zitat von Medium (Beitrag 1062458)
Du musst schon bei der Zeitberechnung bedenken, dass du immer paarweise Vergleiche hast ;). Das ist dann O(n*(n+1)/2), und bei 100 Liedern schon 3sek*100*(101/2) = 15150 sek = 252,5 min ~= 4,21 std.

Nicht unbedingt, wenn man weiß, dass Lied1 und Lied2 in derselben Gruppe liegen, dann kann man Lied2 auslassen bei der Überprüfung. Dann ist nurnoch ein Lied aus jeder Klasse zu prüfen. Das können zwar immernoch 100 verschiedene sein, ist aber z.b. deutlich besser als 1000.
Damit liegt der Zeitgewinn bei einigen wenigen Liedern natürlich bei 0. Je mehr du aber hast, desto mehr Zeit gewinnst du gegenüber einem Vergleich mit allen Liedern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz