Verfasst am: 14.06.2010, 18:19
Titel: Musikerkennung mit DFT oder FFT?
Hallo zusammen
ich bin ein absolute Neuling bei Matlab und versteh grad noch a bisl Bahnhof
UNd zwar hab ich das Problem dass ich eine Musikerkennungsprogramm mit Matlab erstellen soll....
das heißt es müssen um die 20 songs eingelesen werden aus einer Datenbannk und dann wenn das Lied wieder kommt sollte es erkannt werden !?
Bitte helft mir hab echt kein Plan wie ich anfagen soll
_________________
ich hatte mal ein ähnliches Projekt, allerdings spracherkennung, Sprecher mussten einen satz aussprechen und der Sprecher musste erkannt werden.
erstes verfahren war Frequenzanalyse:
ich würde vorschlagen von diesen 20 Lieder machst du FFT. und speicherst sie in einer matrix.
wenn jetzt ein neues lied kommt das du erkennen musst, du machst davon auch FFT und rechnest den LSE( least square error) und zwar mit allen 20 vorlagen die du schon gespeichert hast, und dann vergleichst du diese errors,
und wo der fehler am kleinsten war, das ist das gesuchte Lied.
natürlich zeigt er dir nur den letzten deine variable wird data_fft wird jedes mal überschrieben, füge einen index hinzu data_fft(:,i)... sieh das beispiel dass ich dir vorhin gezeigt habe.
ausserdem finde ich es geschickter beim plot, auch die x-achse anzugeben
sprich deine frequenzachse, aber räume erstmal die aktuellen fehler auf ;)
de plotten is eh nur für mich...is noch nicht so wichtig...
wie gesagt will alle einlesen dann zwischen speichern und dann mit einem track vergleichen den ich einles und dann soll er sagen welcher es is!
_________________
hmmm jetzt fällt mir ein, brauchst du für diesen zweck überhaupt fft, du kannst auch im zeitbereich vergleichen, du kannst ein bestimmten interval vergleichen die ersten 100 werte zumbeispiel...
zu deinem problem gerade weiss ich nicht, gerade hats funktioniert oder?
probier mal diesen code, musst halt pfad und so ändern:
Code:
clear data;
file='C:\Dokumente und Einstellungen\Besitzer\Desktop\ordner';
for i=1:20
audio_input=fullfile(file,['test_Track' num2str(i) '.wav']) ;
data{i,:}=wavread(audio_input);
end
Hey Super funtioniert nicht schlecht nur
haut des vergleichen noch nicht so ganz hin weil er teilweise wenn ich bsp. das Lied 10 auswähle anzeigt dass es Lied neun ist?????
aber ansonsten nicht schlecht
hast du noch ne idee wie man des rauskriegt oder ne bessere trefferwahrscheinlichkeit hat?
_________________
ich glaub ich weiss woran es liegt, wenn man einen song spielen lässt, dann ist in den ersten sekunden nix erst danach fängts an.
und in der if-schleife vergleichen wir die ersten 50 werte, die gefahr ist gross dass bei vielen songs die ersten 50 werte gleich sind.
Lösung: entweder du nimmst mehr werte zum vergleich 1:1000 von mir aus, bis es passt, oder am besten du nimmst werte von der mitte, 500:600 zum beispiel, da ich bezweifle dass die mittleren werte der 20 songs gleich sein können, und spart zeit da wir nur 100 werte gleichen statt 1000 am anfang.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.