% Tema PS 2018 % Autor: Andrei Nicolicioiu clear all close all % [audio_train,labels_train, audio_test,labels_test] = load_data(); load('data.mat') % calculam featureurile pentru datasetul de train / test % get_features primeste toate sunetele din set date intr-o matrice % de dimensiune Numar_sunete x Numar_esantioane si returnează toate % featurile acestor sunete intr-o matrice de dimensiune Numar_sunete x (2 * N + 1) % TODO: calculati featurile MFCC si zero-crossing feat_train = get_features(audio_train); feat_test = get_features(audio_test); % antrenam un clasificator lda=fitcdiscr(feat_train,labels_train,'discrimType','pseudoLinear' ); % prezicem clasele pentru datasetul de train si de test pred_train = predict(lda,feat_train); pred_test = predict(lda,feat_test); % calculam acuratetea pe train si test acc_test = mean(pred_test(:) == labels_test(:)); acc_train = mean(pred_train(:) == labels_train(:)); sprintf('Accuracy on train: %0.2f', acc_train); sprintf('Accuracy on test: %0.2f', acc_test); % TODO: verificati calitativ cateva exemple din setul de test. % comparati clasa corecta si clasa presiza cu sunetul auzit % alegem random un fisier audio si verificam daca am clasificat corect labels_name = ["Dog","Rooster", "Rain" , "Waves","Fire","Baby",... "Sneezing","Clock","Helicopter","Chainsow"] r = round(rand() * 100); sound(audio_test(:,r),fs); sprintf('Clasa corecta: %s', labels_name(labels_test(r))) sprintf('Clasa prezisa: %s', labels_name(pred_test(r)))