-
Notifications
You must be signed in to change notification settings - Fork 3
/
wav_experiment.m
64 lines (52 loc) · 1.46 KB
/
wav_experiment.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
files = getAllFiles('data/training');
%% Build training and test matrices
trainingSet = zeros(numel(files), 5040);
trainingLabels = zeros(numel(files), 1);
counter = 0;
for i = 1:numel(files)
filename = char(files(i));
rev = fliplr(filename);
label = rev(12);
if strcmp(label, 'O')
continue;
elseif strcmp(label, 'Z')
label = '0';
end
counter = counter + 1;
trainingLabels(counter) = str2double(label);
[y, fs] = readwav(filename);
if length(y) > 5040
trainingSet(counter,:) = y(1:5040);
else
trainingSet(counter,1:length(y)) = y;
end
end
trainingSet = trainingSet(1:counter,:);
trainingLabels = trainingLabels(1:counter);
files = getAllFiles('data/test');
testSet = zeros(numel(files), 5040);
testLabels = zeros(numel(files), 1);
counter = 0;
for i = 1:numel(files)
filename = char(files(i));
rev = fliplr(filename);
label = rev(12);
if strcmp(label, 'O')
continue;
elseif strcmp(label, 'Z')
label = '0';
end
counter = counter + 1;
testLabels(counter) = str2double(label);
[y, fs] = readwav(filename);
if length(y) > 5040
testSet(counter,:) = y(1:5040);
else
testSet(counter,1:length(y)) = y;
end
end
testSet = testSet(1:counter,:);
testLabels = testLabels(1:counter);
%% Classifying with SVM
svm = svmtrain(trainingLabels, trainingSet);
[predictedLabels, accuracy] = svmpredict(testLabels, testSet, svm);