d@0
|
1 /*
|
d@0
|
2 ==============================================================================
|
d@0
|
3
|
d@0
|
4 FeatureData.cpp
|
d@0
|
5 Created: 28 Aug 2014 6:41:48pm
|
d@0
|
6 Author: david.ronan
|
d@0
|
7
|
d@0
|
8 ==============================================================================
|
d@0
|
9 */
|
d@0
|
10
|
d@0
|
11 #include "FeatureData.h"
|
d@0
|
12 #include <algorithm>
|
d@0
|
13
|
d@0
|
14 FeatureData::FeatureData(){}
|
d@0
|
15 FeatureData::~FeatureData(){}
|
d@0
|
16
|
d@0
|
17 void FeatureData::PoolData(float timefactor)
|
d@0
|
18 {
|
d@0
|
19 //TODO: Remove hardcoded value
|
d@0
|
20 int modval = (int)(timefactor / 0.05); //50 millisecs
|
d@0
|
21 int index = 0;
|
d@0
|
22 int remainderindex = 0;
|
d@0
|
23
|
d@0
|
24 std::vector<float> peak;
|
d@0
|
25 std::vector<float> rms;
|
d@0
|
26 std::vector<float> crestFactor;
|
d@0
|
27 std::vector<float> zcr;
|
d@0
|
28 std::vector<float> centroid;
|
d@0
|
29 std::vector<float> spread;
|
d@0
|
30 std::vector<float> skewness;
|
d@0
|
31 std::vector<float> kurtosis;
|
d@0
|
32 std::vector<float> brightness;
|
d@0
|
33 std::vector<float> rolloff85;
|
d@0
|
34 std::vector<float> rolloff95;
|
d@0
|
35 std::vector<float> spectralentropy;
|
d@0
|
36 std::vector<float> flatness;
|
d@0
|
37 std::vector<float> spectralcf;
|
d@0
|
38 std::vector<float> spectralflux;
|
d@0
|
39
|
d@0
|
40 std::vector<float> mfcc1;
|
d@0
|
41 std::vector<float> mfcc2;
|
d@0
|
42 std::vector<float> mfcc3;
|
d@0
|
43 std::vector<float> mfcc4;
|
d@0
|
44 std::vector<float> mfcc5;
|
d@0
|
45 std::vector<float> mfcc6;
|
d@0
|
46 std::vector<float> mfcc7;
|
d@0
|
47 std::vector<float> mfcc8;
|
d@0
|
48 std::vector<float> mfcc9;
|
d@0
|
49 std::vector<float> mfcc10;
|
d@0
|
50 std::vector<float> mfcc11;
|
d@0
|
51 std::vector<float> mfcc12;
|
d@0
|
52
|
d@0
|
53 std::vector<float> dmfcc1;
|
d@0
|
54 std::vector<float> dmfcc2;
|
d@0
|
55 std::vector<float> dmfcc3;
|
d@0
|
56 std::vector<float> dmfcc4;
|
d@0
|
57 std::vector<float> dmfcc5;
|
d@0
|
58 std::vector<float> dmfcc6;
|
d@0
|
59 std::vector<float> dmfcc7;
|
d@0
|
60 std::vector<float> dmfcc8;
|
d@0
|
61 std::vector<float> dmfcc9;
|
d@0
|
62 std::vector<float> dmfcc10;
|
d@0
|
63 std::vector<float> dmfcc11;
|
d@0
|
64 std::vector<float> dmfcc12;
|
d@0
|
65
|
d@0
|
66 for(size_t i = 1; i <= m_ObservationData.size(); i++)
|
d@0
|
67 {
|
d@0
|
68 peak.push_back(m_ObservationData[i -1].GetPeak());
|
d@0
|
69 rms.push_back(m_ObservationData[i -1].GetRMS());
|
d@0
|
70 crestFactor.push_back(m_ObservationData[i -1].GetCrestFactor());
|
d@0
|
71 zcr.push_back(m_ObservationData[i -1].GetZCR());
|
d@0
|
72 centroid.push_back(m_ObservationData[i -1].GetCentroid());
|
d@0
|
73 spread.push_back(m_ObservationData[i -1].GetSpread());
|
d@0
|
74 skewness.push_back(m_ObservationData[i -1].GetSkewness());
|
d@0
|
75 kurtosis.push_back(m_ObservationData[i -1].GetKurtosis());
|
d@0
|
76 brightness.push_back(m_ObservationData[i -1].GetBrightness());
|
d@0
|
77 rolloff85.push_back(m_ObservationData[i -1].GetRollOff85());
|
d@0
|
78 rolloff95.push_back(m_ObservationData[i -1].GetRollOff95());
|
d@0
|
79 spectralentropy.push_back(m_ObservationData[i -1].GetSpectralEntropy());
|
d@0
|
80 flatness.push_back(m_ObservationData[i -1].GetFlatness());
|
d@0
|
81 spectralcf.push_back(m_ObservationData[i -1].GetSpectralCF());
|
d@0
|
82 spectralflux.push_back(m_ObservationData[i -1].GetSpectralFlux());
|
d@0
|
83 mfcc1.push_back(m_ObservationData[i -1].GetMFCCs()[0]);
|
d@0
|
84 mfcc2.push_back(m_ObservationData[i -1].GetMFCCs()[1]);
|
d@0
|
85 mfcc3.push_back(m_ObservationData[i -1].GetMFCCs()[2]);
|
d@0
|
86 mfcc4.push_back(m_ObservationData[i -1].GetMFCCs()[3]);
|
d@0
|
87 mfcc5.push_back(m_ObservationData[i -1].GetMFCCs()[4]);
|
d@0
|
88 mfcc6.push_back(m_ObservationData[i -1].GetMFCCs()[5]);
|
d@0
|
89 mfcc7.push_back(m_ObservationData[i -1].GetMFCCs()[6]);
|
d@0
|
90 mfcc8.push_back(m_ObservationData[i -1].GetMFCCs()[7]);
|
d@0
|
91 mfcc9.push_back(m_ObservationData[i -1].GetMFCCs()[8]);
|
d@0
|
92 mfcc10.push_back(m_ObservationData[i -1].GetMFCCs()[9]);
|
d@0
|
93 mfcc11.push_back(m_ObservationData[i -1].GetMFCCs()[10]);
|
d@0
|
94 mfcc12.push_back(m_ObservationData[i -1].GetMFCCs()[11]);
|
d@0
|
95
|
d@0
|
96 if(i % modval == 0)
|
d@0
|
97 {
|
d@0
|
98 std::vector<float> peaksubset(peak.begin() + index, peak.begin() + index + modval);
|
d@0
|
99 std::vector<float> rmssubset(rms.begin() + index, rms.begin() + index + modval);
|
d@0
|
100 std::vector<float> crestfactorsubset(crestFactor.begin() + index, crestFactor.begin() + index + modval);
|
d@0
|
101 std::vector<float> zcrsubset(zcr.begin() + index, zcr.begin() + index + modval);
|
d@0
|
102 std::vector<float> centroidsubset(centroid.begin() + index, centroid.begin() + index + modval);
|
d@0
|
103 std::vector<float> spreadsubset(spread.begin() + index, spread.begin() + index + modval);
|
d@0
|
104 std::vector<float> skewnesssubset(skewness.begin() + index, skewness.begin() + index + modval);
|
d@0
|
105 std::vector<float> kurtosissubset(kurtosis.begin() + index, kurtosis.begin() + index + modval);
|
d@0
|
106 std::vector<float> brightnesssubset(brightness.begin() + index, brightness.begin() + index + modval);
|
d@0
|
107 std::vector<float> rolloff85subset(rolloff85.begin() + index, rolloff85.begin() + index + modval);
|
d@0
|
108 std::vector<float> rolloff95subset(rolloff95.begin() + index, rolloff95.begin() + index + modval);
|
d@0
|
109 std::vector<float> spectralentropysubset(spectralentropy.begin() + index, spectralentropy.begin() + index + modval);
|
d@0
|
110 std::vector<float> flatnesssubset(flatness.begin() + index, flatness.begin() + index + modval);
|
d@0
|
111 std::vector<float> spectralcfsubset(spectralcf.begin() + index, spectralcf.begin() + index + modval);
|
d@0
|
112 std::vector<float> spectralfluxsubset(spectralflux.begin() + index, spectralflux.begin() + index + modval);
|
d@0
|
113
|
d@0
|
114 std::vector<float> mfcc1subset(mfcc1.begin() + index, mfcc1.begin() + index + modval);
|
d@0
|
115 std::vector<float> mfcc2subset(mfcc2.begin() + index, mfcc2.begin() + index + modval);
|
d@0
|
116 std::vector<float> mfcc3subset(mfcc3.begin() + index, mfcc3.begin() + index + modval);
|
d@0
|
117 std::vector<float> mfcc4subset(mfcc4.begin() + index, mfcc4.begin() + index + modval);
|
d@0
|
118 std::vector<float> mfcc5subset(mfcc5.begin() + index, mfcc5.begin() + index + modval);
|
d@0
|
119 std::vector<float> mfcc6subset(mfcc6.begin() + index, mfcc6.begin() + index + modval);
|
d@0
|
120 std::vector<float> mfcc7subset(mfcc7.begin() + index, mfcc7.begin() + index + modval);
|
d@0
|
121 std::vector<float> mfcc8subset(mfcc8.begin() + index, mfcc8.begin() + index + modval);
|
d@0
|
122 std::vector<float> mfcc9subset(mfcc9.begin() + index, mfcc9.begin() + index + modval);
|
d@0
|
123 std::vector<float> mfcc10subset(mfcc10.begin() + index, mfcc10.begin() + index + modval);
|
d@0
|
124 std::vector<float> mfcc11subset(mfcc11.begin() + index, mfcc11.begin() + index + modval);
|
d@0
|
125 std::vector<float> mfcc12subset(mfcc12.begin() + index, mfcc12.begin() + index + modval);
|
d@0
|
126
|
d@0
|
127 std::vector<float> dmfcc1subset(m_deltamfccs[0].begin() + index, m_deltamfccs[0].begin() + index + modval);
|
d@0
|
128 std::vector<float> dmfcc2subset(m_deltamfccs[1].begin() + index, m_deltamfccs[1].begin() + index + modval);
|
d@0
|
129 std::vector<float> dmfcc3subset(m_deltamfccs[2].begin() + index, m_deltamfccs[2].begin() + index + modval);
|
d@0
|
130 std::vector<float> dmfcc4subset(m_deltamfccs[3].begin() + index, m_deltamfccs[3].begin() + index + modval);
|
d@0
|
131 std::vector<float> dmfcc5subset(m_deltamfccs[4].begin() + index, m_deltamfccs[4].begin() + index + modval);
|
d@0
|
132 std::vector<float> dmfcc6subset(m_deltamfccs[5].begin() + index, m_deltamfccs[5].begin() + index + modval);
|
d@0
|
133 std::vector<float> dmfcc7subset(m_deltamfccs[6].begin() + index, m_deltamfccs[6].begin() + index + modval);
|
d@0
|
134 std::vector<float> dmfcc8subset(m_deltamfccs[7].begin() + index, m_deltamfccs[7].begin() + index + modval);
|
d@0
|
135 std::vector<float> dmfcc9subset(m_deltamfccs[8].begin() + index, m_deltamfccs[8].begin() + index + modval);
|
d@0
|
136 std::vector<float> dmfcc10subset(m_deltamfccs[9].begin() + index, m_deltamfccs[9].begin() + index + modval);
|
d@0
|
137 std::vector<float> dmfcc11subset(m_deltamfccs[10].begin() + index, m_deltamfccs[10].begin() + index + modval);
|
d@0
|
138 std::vector<float> dmfcc12subset(m_deltamfccs[11].begin() + index, m_deltamfccs[11].begin() + index + modval);
|
d@0
|
139
|
d@0
|
140 float avgpeak = Average(peaksubset);
|
d@0
|
141 float avgrms = Average(rmssubset);
|
d@0
|
142 float avgcrestFactor = Average(crestfactorsubset);
|
d@0
|
143 float avgzcr = Average(zcrsubset);
|
d@0
|
144 float avgcentroid = Average(centroidsubset);
|
d@0
|
145 float avgspread = Average(spreadsubset);
|
d@0
|
146 float avgskewness = Average(skewnesssubset);
|
d@0
|
147 float avgkurtosis = Average(kurtosissubset);
|
d@0
|
148 float avgbrightness = Average(brightness);
|
d@0
|
149 float avgrolloff85 = Average(rolloff85subset);
|
d@0
|
150 float avgrolloff95 = Average(rolloff95subset);
|
d@0
|
151 float avgspectralentropy = Average(spectralentropysubset);
|
d@0
|
152 float avgflatness = Average(flatnesssubset) ;
|
d@0
|
153 float avgspectralcf = Average(spectralcfsubset);
|
d@0
|
154 float avgspectralflux = Average(spectralfluxsubset);
|
d@0
|
155 std::vector<float> avgmfcc;
|
d@0
|
156 std::vector<float> avgdmfcc;
|
d@0
|
157 avgmfcc.push_back(Average(mfcc1subset));
|
d@0
|
158 avgmfcc.push_back(Average(mfcc2subset));
|
d@0
|
159 avgmfcc.push_back(Average(mfcc3subset));
|
d@0
|
160 avgmfcc.push_back(Average(mfcc4subset));
|
d@0
|
161 avgmfcc.push_back(Average(mfcc5subset));
|
d@0
|
162 avgmfcc.push_back(Average(mfcc6subset));
|
d@0
|
163 avgmfcc.push_back(Average(mfcc7subset));
|
d@0
|
164 avgmfcc.push_back(Average(mfcc8subset));
|
d@0
|
165 avgmfcc.push_back(Average(mfcc9subset));
|
d@0
|
166 avgmfcc.push_back(Average(mfcc10subset));
|
d@0
|
167 avgmfcc.push_back(Average(mfcc11subset));
|
d@0
|
168 avgmfcc.push_back(Average(mfcc12subset));
|
d@0
|
169
|
d@0
|
170 avgdmfcc.push_back(Average(dmfcc1subset));
|
d@0
|
171 avgdmfcc.push_back(Average(dmfcc2subset));
|
d@0
|
172 avgdmfcc.push_back(Average(dmfcc3subset));
|
d@0
|
173 avgdmfcc.push_back(Average(dmfcc4subset));
|
d@0
|
174 avgdmfcc.push_back(Average(dmfcc5subset));
|
d@0
|
175 avgdmfcc.push_back(Average(dmfcc6subset));
|
d@0
|
176 avgdmfcc.push_back(Average(dmfcc7subset));
|
d@0
|
177 avgdmfcc.push_back(Average(dmfcc8subset));
|
d@0
|
178 avgdmfcc.push_back(Average(dmfcc9subset));
|
d@0
|
179 avgdmfcc.push_back(Average(dmfcc10subset));
|
d@0
|
180 avgdmfcc.push_back(Average(dmfcc11subset));
|
d@0
|
181 avgdmfcc.push_back(Average(dmfcc12subset));
|
d@0
|
182
|
d@0
|
183 ObservationData obs = ObservationData(avgrms, avgpeak, avgcrestFactor, avgzcr, avgcentroid, avgspread, avgskewness, avgkurtosis, avgbrightness, avgrolloff85, avgrolloff95, avgspectralentropy, avgflatness, avgspectralcf, avgspectralflux, avgmfcc, avgdmfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
184 obs.SetLowEnergy(m_ObservationData[i-1].GetLowEnergy());
|
d@0
|
185 m_PooledObservationDataAverage.push_back(obs);
|
d@0
|
186
|
d@0
|
187 std::vector<float> stdmfcc;
|
d@0
|
188 std::vector<float> stddmfcc;
|
d@0
|
189 stdmfcc.push_back(Deviation(mfcc1,avgmfcc[0]));
|
d@0
|
190 stdmfcc.push_back(Deviation(mfcc2,avgmfcc[1]));
|
d@0
|
191 stdmfcc.push_back(Deviation(mfcc3,avgmfcc[2]));
|
d@0
|
192 stdmfcc.push_back(Deviation(mfcc4,avgmfcc[3]));
|
d@0
|
193 stdmfcc.push_back(Deviation(mfcc5,avgmfcc[4]));
|
d@0
|
194 stdmfcc.push_back(Deviation(mfcc6,avgmfcc[5]));
|
d@0
|
195 stdmfcc.push_back(Deviation(mfcc7,avgmfcc[6]));
|
d@0
|
196 stdmfcc.push_back(Deviation(mfcc8,avgmfcc[7]));
|
d@0
|
197 stdmfcc.push_back(Deviation(mfcc9,avgmfcc[8]));
|
d@0
|
198 stdmfcc.push_back(Deviation(mfcc10,avgmfcc[9]));
|
d@0
|
199 stdmfcc.push_back(Deviation(mfcc11,avgmfcc[10]));
|
d@0
|
200 stdmfcc.push_back(Deviation(mfcc12,avgmfcc[11]));
|
d@0
|
201
|
d@0
|
202 stddmfcc.push_back(Deviation(m_deltamfccs[0], avgdmfcc[0]));
|
d@0
|
203 stddmfcc.push_back(Deviation(m_deltamfccs[1], avgdmfcc[1]));
|
d@0
|
204 stddmfcc.push_back(Deviation(m_deltamfccs[2], avgdmfcc[2]));
|
d@0
|
205 stddmfcc.push_back(Deviation(m_deltamfccs[3], avgdmfcc[3]));
|
d@0
|
206 stddmfcc.push_back(Deviation(m_deltamfccs[4], avgdmfcc[4]));
|
d@0
|
207 stddmfcc.push_back(Deviation(m_deltamfccs[5], avgdmfcc[5]));
|
d@0
|
208 stddmfcc.push_back(Deviation(m_deltamfccs[6], avgdmfcc[6]));
|
d@0
|
209 stddmfcc.push_back(Deviation(m_deltamfccs[7], avgdmfcc[7]));
|
d@0
|
210 stddmfcc.push_back(Deviation(m_deltamfccs[8], avgdmfcc[8]));
|
d@0
|
211 stddmfcc.push_back(Deviation(m_deltamfccs[9], avgdmfcc[9]));
|
d@0
|
212 stddmfcc.push_back(Deviation(m_deltamfccs[10], avgdmfcc[10]));
|
d@0
|
213 stddmfcc.push_back(Deviation(m_deltamfccs[11], avgdmfcc[11]));
|
d@0
|
214
|
d@0
|
215 obs = ObservationData(Deviation(rmssubset, avgrms), Deviation(peaksubset, avgpeak), Deviation(crestfactorsubset, avgcrestFactor), Deviation(zcrsubset, avgzcr), Deviation(centroidsubset, avgcentroid), Deviation(spreadsubset, avgspread), Deviation(skewnesssubset, avgskewness), Deviation(kurtosissubset, avgkurtosis), Deviation(brightnesssubset, avgbrightness), Deviation(rolloff85subset, avgrolloff85), Deviation(rolloff95subset, avgrolloff95), Deviation(spectralentropysubset, avgspectralentropy), Deviation(flatnesssubset, avgflatness), Deviation(spectralcfsubset, avgspectralcf), Deviation(spectralfluxsubset, avgspectralflux), stdmfcc, stddmfcc, 0, 0);
|
d@0
|
216 obs.SetLowEnergy(0); //
|
d@0
|
217 m_PooledObservationDataStd.push_back(obs);
|
d@0
|
218
|
d@0
|
219 std::vector<float> maxmfcc;
|
d@0
|
220 std::vector<float> maxdmfcc;
|
d@0
|
221 maxmfcc.push_back(Max(mfcc1subset));
|
d@0
|
222 maxmfcc.push_back(Max(mfcc2subset));
|
d@0
|
223 maxmfcc.push_back(Max(mfcc3subset));
|
d@0
|
224 maxmfcc.push_back(Max(mfcc4subset));
|
d@0
|
225 maxmfcc.push_back(Max(mfcc5subset));
|
d@0
|
226 maxmfcc.push_back(Max(mfcc6subset));
|
d@0
|
227 maxmfcc.push_back(Max(mfcc7subset));
|
d@0
|
228 maxmfcc.push_back(Max(mfcc8subset));
|
d@0
|
229 maxmfcc.push_back(Max(mfcc9subset));
|
d@0
|
230 maxmfcc.push_back(Max(mfcc10subset));
|
d@0
|
231 maxmfcc.push_back(Max(mfcc11subset));
|
d@0
|
232 maxmfcc.push_back(Max(mfcc12subset));
|
d@0
|
233
|
d@0
|
234 maxdmfcc.push_back(Max(dmfcc1subset));
|
d@0
|
235 maxdmfcc.push_back(Max(dmfcc2subset));
|
d@0
|
236 maxdmfcc.push_back(Max(dmfcc3subset));
|
d@0
|
237 maxdmfcc.push_back(Max(dmfcc4subset));
|
d@0
|
238 maxdmfcc.push_back(Max(dmfcc5subset));
|
d@0
|
239 maxdmfcc.push_back(Max(dmfcc6subset));
|
d@0
|
240 maxdmfcc.push_back(Max(dmfcc7subset));
|
d@0
|
241 maxdmfcc.push_back(Max(dmfcc8subset));
|
d@0
|
242 maxdmfcc.push_back(Max(dmfcc9subset));
|
d@0
|
243 maxdmfcc.push_back(Max(dmfcc10subset));
|
d@0
|
244 maxdmfcc.push_back(Max(dmfcc11subset));
|
d@0
|
245 maxdmfcc.push_back(Max(dmfcc12subset));
|
d@0
|
246
|
d@0
|
247 obs = ObservationData(Max(rmssubset), Max(peaksubset), Max(crestfactorsubset), Max(zcrsubset), Max(centroidsubset), Max(spreadsubset), Max(skewnesssubset), Max(kurtosissubset), Max(brightnesssubset), Max(rolloff85subset), Max(rolloff95subset), Max(spectralentropysubset), Max(flatnesssubset), Max(spectralcfsubset), Max(spectralfluxsubset), maxmfcc, maxdmfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
248 obs.SetLowEnergy(m_ObservationData[i-1].GetLowEnergy());
|
d@0
|
249 m_PooledObservationDataMax.push_back(obs);
|
d@0
|
250
|
d@0
|
251 std::vector<float> minmfcc;
|
d@0
|
252 std::vector<float> mindmfcc;
|
d@0
|
253 minmfcc.push_back(Min(mfcc1subset));
|
d@0
|
254 minmfcc.push_back(Min(mfcc2subset));
|
d@0
|
255 minmfcc.push_back(Min(mfcc3subset));
|
d@0
|
256 minmfcc.push_back(Min(mfcc4subset));
|
d@0
|
257 minmfcc.push_back(Min(mfcc5subset));
|
d@0
|
258 minmfcc.push_back(Min(mfcc6subset));
|
d@0
|
259 minmfcc.push_back(Min(mfcc7subset));
|
d@0
|
260 minmfcc.push_back(Min(mfcc8subset));
|
d@0
|
261 minmfcc.push_back(Min(mfcc9subset));
|
d@0
|
262 minmfcc.push_back(Min(mfcc10subset));
|
d@0
|
263 minmfcc.push_back(Min(mfcc11subset));
|
d@0
|
264 minmfcc.push_back(Min(mfcc12subset));
|
d@0
|
265
|
d@0
|
266 mindmfcc.push_back(Min(dmfcc1subset));
|
d@0
|
267 mindmfcc.push_back(Min(dmfcc2subset));
|
d@0
|
268 mindmfcc.push_back(Min(dmfcc3subset));
|
d@0
|
269 mindmfcc.push_back(Min(dmfcc4subset));
|
d@0
|
270 mindmfcc.push_back(Min(dmfcc5subset));
|
d@0
|
271 mindmfcc.push_back(Min(dmfcc6subset));
|
d@0
|
272 mindmfcc.push_back(Min(dmfcc7subset));
|
d@0
|
273 mindmfcc.push_back(Min(dmfcc8subset));
|
d@0
|
274 mindmfcc.push_back(Min(dmfcc9subset));
|
d@0
|
275 mindmfcc.push_back(Min(dmfcc10subset));
|
d@0
|
276 mindmfcc.push_back(Min(dmfcc11subset));
|
d@0
|
277 mindmfcc.push_back(Min(dmfcc12subset));
|
d@0
|
278
|
d@0
|
279 obs = ObservationData(Min(rmssubset), Min(peaksubset), Min(crestfactorsubset), Min(zcrsubset), Min(centroidsubset), Min(spreadsubset), Min(skewnesssubset), Min(kurtosissubset), Min(brightnesssubset), Min(rolloff85subset), Min(rolloff95subset), Min(spectralentropysubset), Min(flatnesssubset), Min(spectralcfsubset), Min(spectralfluxsubset), minmfcc, mindmfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
280 obs.SetLowEnergy(m_ObservationData[i-1].GetLowEnergy());
|
d@0
|
281 m_PooledObservationDataMin.push_back(obs);
|
d@0
|
282
|
d@0
|
283 //TODO: Think about this
|
d@0
|
284 index += modval;
|
d@0
|
285 remainderindex = i;
|
d@0
|
286 }
|
d@0
|
287 }
|
d@0
|
288
|
d@0
|
289 //Get the end of the audio
|
d@0
|
290 std::vector<float> peaksubset(peak.begin() + remainderindex, peak.end());
|
d@0
|
291 std::vector<float> rmssubset(rms.begin() + + remainderindex, rms.end());
|
d@0
|
292 std::vector<float> crestFactorsubset(crestFactor.begin() + remainderindex, crestFactor.end());
|
d@0
|
293 std::vector<float> zcrsubset(zcr.begin() + remainderindex, zcr.end());
|
d@0
|
294 std::vector<float> centroidsubset(centroid.begin() + remainderindex, centroid.end());
|
d@0
|
295 std::vector<float> spreadsubset(spread.begin() + remainderindex, spread.end());
|
d@0
|
296 std::vector<float> skewnesssubset(skewness.begin() + remainderindex, skewness.end());
|
d@0
|
297 std::vector<float> kurtosissubset(kurtosis.begin() + remainderindex, kurtosis.end());
|
d@0
|
298 std::vector<float> brightnesssubset(brightness.begin() + remainderindex, brightness.end());
|
d@0
|
299 std::vector<float> rolloff85subset(rolloff85.begin() + remainderindex, rolloff85.end());
|
d@0
|
300 std::vector<float> rolloff95subset(rolloff95.begin() + remainderindex, rolloff95.end());
|
d@0
|
301 std::vector<float> spectralentropysubset(spectralentropy.begin() + remainderindex, spectralentropy.end());
|
d@0
|
302 std::vector<float> spectralcfsubset(spectralcf.begin() + remainderindex, spectralcf.end());
|
d@0
|
303 std::vector<float> spectralfluxsubset(spectralflux.begin() + remainderindex, spectralflux.end());
|
d@0
|
304 std::vector<float> flatnesssubset(flatness.begin() + remainderindex, flatness.end());
|
d@0
|
305
|
d@0
|
306 std::vector<float> mfcc1subset(mfcc1.begin() + remainderindex, mfcc1.end());
|
d@0
|
307 std::vector<float> mfcc2subset(mfcc2.begin() + remainderindex, mfcc2.end());
|
d@0
|
308 std::vector<float> mfcc3subset(mfcc3.begin() + remainderindex, mfcc3.end());
|
d@0
|
309 std::vector<float> mfcc4subset(mfcc4.begin() + remainderindex, mfcc4.end());
|
d@0
|
310 std::vector<float> mfcc5subset(mfcc5.begin() + remainderindex, mfcc5.end());
|
d@0
|
311 std::vector<float> mfcc6subset(mfcc6.begin() + remainderindex, mfcc6.end());
|
d@0
|
312 std::vector<float> mfcc7subset(mfcc7.begin() + remainderindex, mfcc7.end());
|
d@0
|
313 std::vector<float> mfcc8subset(mfcc8.begin() + remainderindex, mfcc8.end());
|
d@0
|
314 std::vector<float> mfcc9subset(mfcc9.begin() + remainderindex, mfcc9.end());
|
d@0
|
315 std::vector<float> mfcc10subset(mfcc10.begin() + remainderindex, mfcc10.end());
|
d@0
|
316 std::vector<float> mfcc11subset(mfcc11.begin() + remainderindex, mfcc11.end());
|
d@0
|
317 std::vector<float> mfcc12subset(mfcc12.begin() + remainderindex, mfcc12.end());
|
d@0
|
318
|
d@0
|
319 std::vector<float> dmfcc1subset(m_deltamfccs[0].begin() + remainderindex, m_deltamfccs[0].end());
|
d@0
|
320 std::vector<float> dmfcc2subset(m_deltamfccs[1].begin() + remainderindex, m_deltamfccs[1].end());
|
d@0
|
321 std::vector<float> dmfcc3subset(m_deltamfccs[2].begin() + remainderindex, m_deltamfccs[2].end());
|
d@0
|
322 std::vector<float> dmfcc4subset(m_deltamfccs[3].begin() + remainderindex, m_deltamfccs[3].end());
|
d@0
|
323 std::vector<float> dmfcc5subset(m_deltamfccs[4].begin() + remainderindex, m_deltamfccs[4].end());
|
d@0
|
324 std::vector<float> dmfcc6subset(m_deltamfccs[5].begin() + remainderindex, m_deltamfccs[5].end());
|
d@0
|
325 std::vector<float> dmfcc7subset(m_deltamfccs[6].begin() + remainderindex, m_deltamfccs[6].end());
|
d@0
|
326 std::vector<float> dmfcc8subset(m_deltamfccs[7].begin() + remainderindex, m_deltamfccs[7].end());
|
d@0
|
327 std::vector<float> dmfcc9subset(m_deltamfccs[8].begin() + remainderindex, m_deltamfccs[8].end());
|
d@0
|
328 std::vector<float> dmfcc10subset(m_deltamfccs[9].begin() + remainderindex, m_deltamfccs[9].end());
|
d@0
|
329 std::vector<float> dmfcc11subset(m_deltamfccs[10].begin() + remainderindex, m_deltamfccs[10].end());
|
d@0
|
330 std::vector<float> dmfcc12subset(m_deltamfccs[11].begin() + remainderindex, m_deltamfccs[11].end());
|
d@0
|
331
|
d@0
|
332 float avgpeak = Average(peaksubset);
|
d@0
|
333 float avgrms = Average(rmssubset);
|
d@0
|
334 float avgcrestFactor = Average(crestFactorsubset);
|
d@0
|
335 float avgzcr = Average(zcrsubset);
|
d@0
|
336 float avgcentroid = Average(centroidsubset);
|
d@0
|
337 float avgspread = Average(spreadsubset);
|
d@0
|
338 float avgskewness = Average(skewnesssubset);
|
d@0
|
339 float avgkurtosis = Average(kurtosissubset);
|
d@0
|
340 float avgbrightness = Average(brightness);
|
d@0
|
341 float avgrolloff85 = Average(rolloff85subset);
|
d@0
|
342 float avgrolloff95 = Average(rolloff95subset);
|
d@0
|
343 float avgspectralentropy = Average(spectralentropysubset);
|
d@0
|
344 float avgflatness = Average(flatnesssubset);
|
d@0
|
345 float avgspectralcf = Average(spectralcfsubset);
|
d@0
|
346 float avgspectralflux = Average(spectralfluxsubset);
|
d@0
|
347
|
d@0
|
348 std::vector<float> avgmfcc;
|
d@0
|
349 std::vector<float> avgdeltamfcc;
|
d@0
|
350 avgmfcc.push_back(Average(mfcc1subset));
|
d@0
|
351 avgmfcc.push_back(Average(mfcc2subset));
|
d@0
|
352 avgmfcc.push_back(Average(mfcc3subset));
|
d@0
|
353 avgmfcc.push_back(Average(mfcc4subset));
|
d@0
|
354 avgmfcc.push_back(Average(mfcc5subset));
|
d@0
|
355 avgmfcc.push_back(Average(mfcc6subset));
|
d@0
|
356 avgmfcc.push_back(Average(mfcc7subset));
|
d@0
|
357 avgmfcc.push_back(Average(mfcc8subset));
|
d@0
|
358 avgmfcc.push_back(Average(mfcc9subset));
|
d@0
|
359 avgmfcc.push_back(Average(mfcc10subset));
|
d@0
|
360 avgmfcc.push_back(Average(mfcc11subset));
|
d@0
|
361 avgmfcc.push_back(Average(mfcc12subset));
|
d@0
|
362
|
d@0
|
363 avgdeltamfcc.push_back(Average(dmfcc1subset));
|
d@0
|
364 avgdeltamfcc.push_back(Average(dmfcc2subset));
|
d@0
|
365 avgdeltamfcc.push_back(Average(dmfcc3subset));
|
d@0
|
366 avgdeltamfcc.push_back(Average(dmfcc4subset));
|
d@0
|
367 avgdeltamfcc.push_back(Average(dmfcc5subset));
|
d@0
|
368 avgdeltamfcc.push_back(Average(dmfcc6subset));
|
d@0
|
369 avgdeltamfcc.push_back(Average(dmfcc7subset));
|
d@0
|
370 avgdeltamfcc.push_back(Average(dmfcc8subset));
|
d@0
|
371 avgdeltamfcc.push_back(Average(dmfcc9subset));
|
d@0
|
372 avgdeltamfcc.push_back(Average(dmfcc10subset));
|
d@0
|
373 avgdeltamfcc.push_back(Average(dmfcc11subset));
|
d@0
|
374 avgdeltamfcc.push_back(Average(dmfcc12subset));
|
d@0
|
375
|
d@0
|
376 ObservationData obs = ObservationData(avgrms, avgpeak, avgcrestFactor, avgzcr, avgcentroid, avgspread, avgskewness, avgkurtosis, avgbrightness, avgrolloff85, avgrolloff95, avgspectralentropy, avgflatness, avgspectralcf, avgspectralflux, avgmfcc, avgdeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
377 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
378 m_PooledObservationDataAverage.push_back(obs);
|
d@0
|
379
|
d@0
|
380 std::vector<float> stdmfcc;
|
d@0
|
381 std::vector<float> stddeltamfcc;
|
d@0
|
382 stdmfcc.push_back(Deviation(mfcc1subset,avgmfcc[0]));
|
d@0
|
383 stdmfcc.push_back(Deviation(mfcc2subset,avgmfcc[1]));
|
d@0
|
384 stdmfcc.push_back(Deviation(mfcc3subset,avgmfcc[2]));
|
d@0
|
385 stdmfcc.push_back(Deviation(mfcc4subset,avgmfcc[3]));
|
d@0
|
386 stdmfcc.push_back(Deviation(mfcc5subset,avgmfcc[4]));
|
d@0
|
387 stdmfcc.push_back(Deviation(mfcc6subset,avgmfcc[5]));
|
d@0
|
388 stdmfcc.push_back(Deviation(mfcc7subset,avgmfcc[6]));
|
d@0
|
389 stdmfcc.push_back(Deviation(mfcc8subset,avgmfcc[7]));
|
d@0
|
390 stdmfcc.push_back(Deviation(mfcc9subset,avgmfcc[8]));
|
d@0
|
391 stdmfcc.push_back(Deviation(mfcc10subset,avgmfcc[9]));
|
d@0
|
392 stdmfcc.push_back(Deviation(mfcc11subset,avgmfcc[10]));
|
d@0
|
393 stdmfcc.push_back(Deviation(mfcc12subset,avgmfcc[11]));
|
d@0
|
394
|
d@0
|
395 stddeltamfcc.push_back(Deviation(dmfcc1subset,avgdeltamfcc[0]));
|
d@0
|
396 stddeltamfcc.push_back(Deviation(dmfcc2subset,avgdeltamfcc[1]));
|
d@0
|
397 stddeltamfcc.push_back(Deviation(dmfcc3subset,avgdeltamfcc[2]));
|
d@0
|
398 stddeltamfcc.push_back(Deviation(dmfcc4subset,avgdeltamfcc[3]));
|
d@0
|
399 stddeltamfcc.push_back(Deviation(dmfcc5subset,avgdeltamfcc[4]));
|
d@0
|
400 stddeltamfcc.push_back(Deviation(dmfcc6subset,avgdeltamfcc[5]));
|
d@0
|
401 stddeltamfcc.push_back(Deviation(dmfcc7subset,avgdeltamfcc[6]));
|
d@0
|
402 stddeltamfcc.push_back(Deviation(dmfcc8subset,avgdeltamfcc[7]));
|
d@0
|
403 stddeltamfcc.push_back(Deviation(dmfcc9subset,avgdeltamfcc[8]));
|
d@0
|
404 stddeltamfcc.push_back(Deviation(dmfcc10subset,avgdeltamfcc[9]));
|
d@0
|
405 stddeltamfcc.push_back(Deviation(dmfcc11subset,avgdeltamfcc[10]));
|
d@0
|
406 stddeltamfcc.push_back(Deviation(dmfcc12subset,avgdeltamfcc[11]));
|
d@0
|
407
|
d@0
|
408 obs = ObservationData(Deviation(rmssubset, avgrms), Deviation(peaksubset, avgpeak), Deviation(crestFactorsubset, avgcrestFactor), Deviation(zcrsubset, avgzcr), Deviation(centroidsubset, avgcentroid), Deviation(spreadsubset, avgspread), Deviation(skewnesssubset, avgskewness), Deviation(kurtosissubset, avgkurtosis), Deviation(brightnesssubset, avgbrightness), Deviation(rolloff85subset, avgrolloff85), Deviation(rolloff95subset, avgrolloff95), Deviation(spectralentropysubset, avgspectralentropy), Deviation(flatnesssubset, avgflatness), Deviation(spectralcfsubset, avgspectralcf), Deviation(spectralfluxsubset, avgspectralflux), stdmfcc, stddeltamfcc, 0, 0);
|
d@0
|
409 obs.SetLowEnergy(0); //
|
d@0
|
410 m_PooledObservationDataStd.push_back(obs);
|
d@0
|
411
|
d@0
|
412 std::vector<float> maxmfcc;
|
d@0
|
413 std::vector<float> maxdeltamfcc;
|
d@0
|
414 maxmfcc.push_back(Max(mfcc1subset));
|
d@0
|
415 maxmfcc.push_back(Max(mfcc2subset));
|
d@0
|
416 maxmfcc.push_back(Max(mfcc3subset));
|
d@0
|
417 maxmfcc.push_back(Max(mfcc4subset));
|
d@0
|
418 maxmfcc.push_back(Max(mfcc5subset));
|
d@0
|
419 maxmfcc.push_back(Max(mfcc6subset));
|
d@0
|
420 maxmfcc.push_back(Max(mfcc7subset));
|
d@0
|
421 maxmfcc.push_back(Max(mfcc8subset));
|
d@0
|
422 maxmfcc.push_back(Max(mfcc9subset));
|
d@0
|
423 maxmfcc.push_back(Max(mfcc10subset));
|
d@0
|
424 maxmfcc.push_back(Max(mfcc11subset));
|
d@0
|
425 maxmfcc.push_back(Max(mfcc12subset));
|
d@0
|
426
|
d@0
|
427 maxdeltamfcc.push_back(Max(dmfcc1subset));
|
d@0
|
428 maxdeltamfcc.push_back(Max(dmfcc2subset));
|
d@0
|
429 maxdeltamfcc.push_back(Max(dmfcc3subset));
|
d@0
|
430 maxdeltamfcc.push_back(Max(dmfcc4subset));
|
d@0
|
431 maxdeltamfcc.push_back(Max(dmfcc5subset));
|
d@0
|
432 maxdeltamfcc.push_back(Max(dmfcc6subset));
|
d@0
|
433 maxdeltamfcc.push_back(Max(dmfcc7subset));
|
d@0
|
434 maxdeltamfcc.push_back(Max(dmfcc8subset));
|
d@0
|
435 maxdeltamfcc.push_back(Max(dmfcc9subset));
|
d@0
|
436 maxdeltamfcc.push_back(Max(dmfcc10subset));
|
d@0
|
437 maxdeltamfcc.push_back(Max(dmfcc11subset));
|
d@0
|
438 maxdeltamfcc.push_back(Max(dmfcc12subset));
|
d@0
|
439
|
d@0
|
440 obs = ObservationData(Max(rmssubset), Max(peaksubset), Max(crestFactorsubset), Max(zcrsubset), Max(centroidsubset), Max(spreadsubset), Max(skewnesssubset), Max(kurtosissubset), Max(brightnesssubset), Max(rolloff85subset), Max(rolloff95subset), Max(spectralentropysubset), Max(flatnesssubset), Max(spectralcfsubset), Max(spectralfluxsubset), maxmfcc, maxdeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
441 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
442 m_PooledObservationDataMax.push_back(obs);
|
d@0
|
443
|
d@0
|
444 std::vector<float> minmfcc;
|
d@0
|
445 std::vector<float> mindeltamfcc;
|
d@0
|
446 minmfcc.push_back(Min(mfcc1subset));
|
d@0
|
447 minmfcc.push_back(Min(mfcc2subset));
|
d@0
|
448 minmfcc.push_back(Min(mfcc3subset));
|
d@0
|
449 minmfcc.push_back(Min(mfcc4subset));
|
d@0
|
450 minmfcc.push_back(Min(mfcc5subset));
|
d@0
|
451 minmfcc.push_back(Min(mfcc6subset));
|
d@0
|
452 minmfcc.push_back(Min(mfcc7subset));
|
d@0
|
453 minmfcc.push_back(Min(mfcc8subset));
|
d@0
|
454 minmfcc.push_back(Min(mfcc9subset));
|
d@0
|
455 minmfcc.push_back(Min(mfcc10subset));
|
d@0
|
456 minmfcc.push_back(Min(mfcc11subset));
|
d@0
|
457 minmfcc.push_back(Min(mfcc12subset));
|
d@0
|
458
|
d@0
|
459 mindeltamfcc.push_back(Min(dmfcc1subset));
|
d@0
|
460 mindeltamfcc.push_back(Min(dmfcc2subset));
|
d@0
|
461 mindeltamfcc.push_back(Min(dmfcc3subset));
|
d@0
|
462 mindeltamfcc.push_back(Min(dmfcc4subset));
|
d@0
|
463 mindeltamfcc.push_back(Min(dmfcc5subset));
|
d@0
|
464 mindeltamfcc.push_back(Min(dmfcc6subset));
|
d@0
|
465 mindeltamfcc.push_back(Min(dmfcc7subset));
|
d@0
|
466 mindeltamfcc.push_back(Min(dmfcc8subset));
|
d@0
|
467 mindeltamfcc.push_back(Min(dmfcc9subset));
|
d@0
|
468 mindeltamfcc.push_back(Min(dmfcc10subset));
|
d@0
|
469 mindeltamfcc.push_back(Min(dmfcc11subset));
|
d@0
|
470 mindeltamfcc.push_back(Min(dmfcc12subset));
|
d@0
|
471
|
d@0
|
472 obs = ObservationData( Min(rmssubset), Min(peaksubset), Min(crestFactorsubset), Min(zcrsubset), Min(centroidsubset), Min(spreadsubset), Min(skewnesssubset), Min(kurtosissubset), Min(brightnesssubset), Min(rolloff85subset), Min(rolloff95subset), Min(spectralentropysubset), Min(flatnesssubset), Min(spectralcfsubset), Min(spectralfluxsubset), minmfcc, mindeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
473 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
474 m_PooledObservationDataMin.push_back(obs);
|
d@0
|
475
|
d@0
|
476 ///////Whole
|
d@0
|
477
|
d@0
|
478 avgpeak = Average(peak);
|
d@0
|
479 avgrms = Average(rms);
|
d@0
|
480 avgcrestFactor = Average(crestFactor);
|
d@0
|
481 avgzcr = Average(zcr);
|
d@0
|
482 avgcentroid = Average(centroid);
|
d@0
|
483 avgspread = Average(spread);
|
d@0
|
484 avgskewness = Average(skewness);
|
d@0
|
485 avgkurtosis = Average(kurtosis);
|
d@0
|
486 avgbrightness = Average(brightness);
|
d@0
|
487 avgrolloff85 = Average(rolloff85);
|
d@0
|
488 avgrolloff95 = Average(rolloff95);
|
d@0
|
489 avgspectralentropy = Average(spectralentropy);
|
d@0
|
490 avgflatness = Average(flatness);
|
d@0
|
491 avgspectralcf = Average(spectralcf);
|
d@0
|
492 avgspectralflux = Average(spectralflux);
|
d@0
|
493
|
d@0
|
494 avgmfcc.clear();
|
d@0
|
495 avgmfcc.push_back(Average(mfcc1));
|
d@0
|
496 avgmfcc.push_back(Average(mfcc2));
|
d@0
|
497 avgmfcc.push_back(Average(mfcc3));
|
d@0
|
498 avgmfcc.push_back(Average(mfcc4));
|
d@0
|
499 avgmfcc.push_back(Average(mfcc5));
|
d@0
|
500 avgmfcc.push_back(Average(mfcc6));
|
d@0
|
501 avgmfcc.push_back(Average(mfcc7));
|
d@0
|
502 avgmfcc.push_back(Average(mfcc8));
|
d@0
|
503 avgmfcc.push_back(Average(mfcc9));
|
d@0
|
504 avgmfcc.push_back(Average(mfcc10));
|
d@0
|
505 avgmfcc.push_back(Average(mfcc11));
|
d@0
|
506 avgmfcc.push_back(Average(mfcc12));
|
d@0
|
507
|
d@0
|
508 avgdeltamfcc.clear();
|
d@0
|
509 avgdeltamfcc.push_back(Average(m_deltamfccs[0]));
|
d@0
|
510 avgdeltamfcc.push_back(Average(m_deltamfccs[1]));
|
d@0
|
511 avgdeltamfcc.push_back(Average(m_deltamfccs[2]));
|
d@0
|
512 avgdeltamfcc.push_back(Average(m_deltamfccs[3]));
|
d@0
|
513 avgdeltamfcc.push_back(Average(m_deltamfccs[4]));
|
d@0
|
514 avgdeltamfcc.push_back(Average(m_deltamfccs[5]));
|
d@0
|
515 avgdeltamfcc.push_back(Average(m_deltamfccs[6]));
|
d@0
|
516 avgdeltamfcc.push_back(Average(m_deltamfccs[7]));
|
d@0
|
517 avgdeltamfcc.push_back(Average(m_deltamfccs[8]));
|
d@0
|
518 avgdeltamfcc.push_back(Average(m_deltamfccs[9]));
|
d@0
|
519 avgdeltamfcc.push_back(Average(m_deltamfccs[10]));
|
d@0
|
520 avgdeltamfcc.push_back(Average(m_deltamfccs[11]));
|
d@0
|
521
|
d@0
|
522 for(size_t i =0; i < m_PooledObservationDataAverage.size(); i++)
|
d@0
|
523 {
|
d@0
|
524 obs = ObservationData(avgrms, avgpeak, avgcrestFactor, avgzcr, avgcentroid, avgspread, avgskewness, avgkurtosis, avgbrightness, avgrolloff85, avgrolloff95, avgspectralentropy, avgflatness, avgspectralcf, avgspectralflux, avgmfcc, avgdeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
525 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
526 m_WholeTrackObservationDataAverage.push_back(obs);
|
d@0
|
527
|
d@0
|
528 stdmfcc.clear();
|
d@0
|
529 stdmfcc.push_back(Deviation(mfcc1,avgmfcc[0]));
|
d@0
|
530 stdmfcc.push_back(Deviation(mfcc2,avgmfcc[1]));
|
d@0
|
531 stdmfcc.push_back(Deviation(mfcc3,avgmfcc[2]));
|
d@0
|
532 stdmfcc.push_back(Deviation(mfcc4,avgmfcc[3]));
|
d@0
|
533 stdmfcc.push_back(Deviation(mfcc5,avgmfcc[4]));
|
d@0
|
534 stdmfcc.push_back(Deviation(mfcc6,avgmfcc[5]));
|
d@0
|
535 stdmfcc.push_back(Deviation(mfcc7,avgmfcc[6]));
|
d@0
|
536 stdmfcc.push_back(Deviation(mfcc8,avgmfcc[7]));
|
d@0
|
537 stdmfcc.push_back(Deviation(mfcc9,avgmfcc[8]));
|
d@0
|
538 stdmfcc.push_back(Deviation(mfcc10,avgmfcc[9]));
|
d@0
|
539 stdmfcc.push_back(Deviation(mfcc11,avgmfcc[10]));
|
d@0
|
540 stdmfcc.push_back(Deviation(mfcc12,avgmfcc[11]));
|
d@0
|
541
|
d@0
|
542 stddeltamfcc.clear();
|
d@0
|
543 stddeltamfcc.push_back(Deviation(m_deltamfccs[0],avgdeltamfcc[0]));
|
d@0
|
544 stddeltamfcc.push_back(Deviation(m_deltamfccs[1],avgdeltamfcc[1]));
|
d@0
|
545 stddeltamfcc.push_back(Deviation(m_deltamfccs[2],avgdeltamfcc[2]));
|
d@0
|
546 stddeltamfcc.push_back(Deviation(m_deltamfccs[3],avgdeltamfcc[3]));
|
d@0
|
547 stddeltamfcc.push_back(Deviation(m_deltamfccs[4],avgdeltamfcc[4]));
|
d@0
|
548 stddeltamfcc.push_back(Deviation(m_deltamfccs[5],avgdeltamfcc[5]));
|
d@0
|
549 stddeltamfcc.push_back(Deviation(m_deltamfccs[6],avgdeltamfcc[6]));
|
d@0
|
550 stddeltamfcc.push_back(Deviation(m_deltamfccs[7],avgdeltamfcc[7]));
|
d@0
|
551 stddeltamfcc.push_back(Deviation(m_deltamfccs[8],avgdeltamfcc[8]));
|
d@0
|
552 stddeltamfcc.push_back(Deviation(m_deltamfccs[9],avgdeltamfcc[9]));
|
d@0
|
553 stddeltamfcc.push_back(Deviation(m_deltamfccs[10],avgdeltamfcc[10]));
|
d@0
|
554 stddeltamfcc.push_back(Deviation(m_deltamfccs[11],avgdeltamfcc[11]));
|
d@0
|
555
|
d@0
|
556 obs = ObservationData(Deviation(rms, avgrms), Deviation(peak, avgpeak), Deviation(crestFactor, avgcrestFactor), Deviation(zcr, avgzcr), Deviation(centroid, avgcentroid), Deviation(spread, avgspread), Deviation(skewness, avgskewness), Deviation(kurtosis, avgkurtosis), Deviation(brightness, avgbrightness), Deviation(rolloff85, avgrolloff85), Deviation(rolloff95, avgrolloff95), Deviation(spectralentropy, avgspectralentropy), Deviation(flatness, avgflatness), Deviation(spectralcf, avgspectralcf), Deviation(spectralflux, avgspectralflux), stdmfcc, stddeltamfcc, 0, 0);
|
d@0
|
557 obs.SetLowEnergy(0);
|
d@0
|
558 m_WholeTrackObservationDataStd.push_back(obs);
|
d@0
|
559
|
d@0
|
560 maxmfcc.clear();
|
d@0
|
561 maxmfcc.push_back(Max(mfcc1));
|
d@0
|
562 maxmfcc.push_back(Max(mfcc2));
|
d@0
|
563 maxmfcc.push_back(Max(mfcc3));
|
d@0
|
564 maxmfcc.push_back(Max(mfcc4));
|
d@0
|
565 maxmfcc.push_back(Max(mfcc5));
|
d@0
|
566 maxmfcc.push_back(Max(mfcc6));
|
d@0
|
567 maxmfcc.push_back(Max(mfcc7));
|
d@0
|
568 maxmfcc.push_back(Max(mfcc8));
|
d@0
|
569 maxmfcc.push_back(Max(mfcc9));
|
d@0
|
570 maxmfcc.push_back(Max(mfcc10));
|
d@0
|
571 maxmfcc.push_back(Max(mfcc11));
|
d@0
|
572 maxmfcc.push_back(Max(mfcc12));
|
d@0
|
573 maxdeltamfcc.clear();
|
d@0
|
574 maxdeltamfcc.push_back(Max(m_deltamfccs[0]));
|
d@0
|
575 maxdeltamfcc.push_back(Max(m_deltamfccs[1]));
|
d@0
|
576 maxdeltamfcc.push_back(Max(m_deltamfccs[2]));
|
d@0
|
577 maxdeltamfcc.push_back(Max(m_deltamfccs[3]));
|
d@0
|
578 maxdeltamfcc.push_back(Max(m_deltamfccs[4]));
|
d@0
|
579 maxdeltamfcc.push_back(Max(m_deltamfccs[5]));
|
d@0
|
580 maxdeltamfcc.push_back(Max(m_deltamfccs[6]));
|
d@0
|
581 maxdeltamfcc.push_back(Max(m_deltamfccs[7]));
|
d@0
|
582 maxdeltamfcc.push_back(Max(m_deltamfccs[8]));
|
d@0
|
583 maxdeltamfcc.push_back(Max(m_deltamfccs[9]));
|
d@0
|
584 maxdeltamfcc.push_back(Max(m_deltamfccs[10]));
|
d@0
|
585 maxdeltamfcc.push_back(Max(m_deltamfccs[11]));
|
d@0
|
586
|
d@0
|
587 obs = ObservationData(Max(rms), Max(peak), Max(crestFactor), Max(zcr), Max(centroid), Max(spread), Max(skewness), Max(kurtosis), Max(brightness), Max(rolloff85), Max(rolloff95), Max(spectralentropy), Max(flatness), Max(spectralcf), Max(spectralflux), maxmfcc, maxdeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
588 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
589 m_WholeTrackObservationDataMax.push_back(obs);
|
d@0
|
590
|
d@0
|
591 minmfcc.clear();
|
d@0
|
592 minmfcc.push_back(Min(mfcc1));
|
d@0
|
593 minmfcc.push_back(Min(mfcc2));
|
d@0
|
594 minmfcc.push_back(Min(mfcc3));
|
d@0
|
595 minmfcc.push_back(Min(mfcc4));
|
d@0
|
596 minmfcc.push_back(Min(mfcc5));
|
d@0
|
597 minmfcc.push_back(Min(mfcc6));
|
d@0
|
598 minmfcc.push_back(Min(mfcc7));
|
d@0
|
599 minmfcc.push_back(Min(mfcc8));
|
d@0
|
600 minmfcc.push_back(Min(mfcc9));
|
d@0
|
601 minmfcc.push_back(Min(mfcc10));
|
d@0
|
602 minmfcc.push_back(Min(mfcc11));
|
d@0
|
603 minmfcc.push_back(Min(mfcc12));
|
d@0
|
604
|
d@0
|
605 mindeltamfcc.clear();
|
d@0
|
606 mindeltamfcc.push_back(Min(m_deltamfccs[0]));
|
d@0
|
607 mindeltamfcc.push_back(Min(m_deltamfccs[1]));
|
d@0
|
608 mindeltamfcc.push_back(Min(m_deltamfccs[2]));
|
d@0
|
609 mindeltamfcc.push_back(Min(m_deltamfccs[3]));
|
d@0
|
610 mindeltamfcc.push_back(Min(m_deltamfccs[4]));
|
d@0
|
611 mindeltamfcc.push_back(Min(m_deltamfccs[5]));
|
d@0
|
612 mindeltamfcc.push_back(Min(m_deltamfccs[6]));
|
d@0
|
613 mindeltamfcc.push_back(Min(m_deltamfccs[7]));
|
d@0
|
614 mindeltamfcc.push_back(Min(m_deltamfccs[8]));
|
d@0
|
615 mindeltamfcc.push_back(Min(m_deltamfccs[9]));
|
d@0
|
616 mindeltamfcc.push_back(Min(m_deltamfccs[10]));
|
d@0
|
617 mindeltamfcc.push_back(Min(m_deltamfccs[11]));
|
d@0
|
618
|
d@0
|
619 obs = ObservationData(Min(rms), Min(peak), Min(crestFactor), Min(zcr), Min(centroid), Min(spread), Min(skewness), Min(kurtosis), Min(brightness), Min(rolloff85), Min(rolloff95), Min(spectralentropy), Min(flatness), Min(spectralcf), Min(spectralflux), minmfcc, mindeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
|
d@0
|
620 obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
|
d@0
|
621 m_WholeTrackObservationDataMin.push_back(obs);
|
d@0
|
622 }
|
d@0
|
623
|
d@0
|
624 }
|
d@0
|
625
|
d@0
|
626 void FeatureData::ComputeLowEnergyFeature()
|
d@0
|
627 {
|
d@0
|
628 if(m_ObservationData.size() > 0)
|
d@0
|
629 {
|
d@0
|
630 float averageRMSForTrack = 0.0;
|
d@0
|
631 float sumRMS = 0.0;
|
d@0
|
632 int RMSbelowAvgCount = 0;
|
d@0
|
633 float lowEnergyValue = 0.0;
|
d@0
|
634
|
d@0
|
635 //First get average
|
d@0
|
636 for(size_t i =0; i < m_ObservationData.size(); i++)
|
d@0
|
637 {
|
d@0
|
638 sumRMS += m_ObservationData[i].GetRMS();
|
d@0
|
639 }
|
d@0
|
640
|
d@0
|
641 averageRMSForTrack = sumRMS / m_ObservationData.size();
|
d@0
|
642
|
d@0
|
643 //Count how many frames below average RMS.
|
d@0
|
644
|
d@0
|
645 //Work out the Low Energy Value
|
d@0
|
646 for(size_t i =0; i < m_ObservationData.size(); i++)
|
d@0
|
647 {
|
d@0
|
648 if(m_ObservationData[i].GetRMS() < averageRMSForTrack)
|
d@0
|
649 {
|
d@0
|
650 RMSbelowAvgCount++;
|
d@0
|
651 }
|
d@0
|
652 }
|
d@0
|
653
|
d@0
|
654 lowEnergyValue = (((float)RMSbelowAvgCount / (float)m_ObservationData.size()) * 100);
|
d@0
|
655
|
d@0
|
656 //Set the value for each observation
|
d@0
|
657 for(size_t i =0; i < m_ObservationData.size(); i++)
|
d@0
|
658 {
|
d@0
|
659 m_ObservationData[i].SetLowEnergy(lowEnergyValue);
|
d@0
|
660 }
|
d@0
|
661 }
|
d@0
|
662
|
d@0
|
663 }
|
d@0
|
664
|
d@0
|
665 void FeatureData::ComputeDeltaMFCCs()
|
d@0
|
666 {
|
d@0
|
667 if(m_ObservationData.size() > 0)
|
d@0
|
668 {
|
d@0
|
669 std::vector<float> dmfcc1;
|
d@0
|
670 std::vector<float> dmfcc2;
|
d@0
|
671 std::vector<float> dmfcc3;
|
d@0
|
672 std::vector<float> dmfcc4;
|
d@0
|
673 std::vector<float> dmfcc5;
|
d@0
|
674 std::vector<float> dmfcc6;
|
d@0
|
675 std::vector<float> dmfcc7;
|
d@0
|
676 std::vector<float> dmfcc8;
|
d@0
|
677 std::vector<float> dmfcc9;
|
d@0
|
678 std::vector<float> dmfcc10;
|
d@0
|
679 std::vector<float> dmfcc11;
|
d@0
|
680 std::vector<float> dmfcc12;
|
d@0
|
681
|
d@0
|
682 dmfcc1.push_back(0.0f);
|
d@0
|
683 dmfcc1.push_back(0.0f);
|
d@0
|
684 dmfcc2.push_back(0.0f);
|
d@0
|
685 dmfcc2.push_back(0.0f);
|
d@0
|
686 dmfcc3.push_back(0.0f);
|
d@0
|
687 dmfcc3.push_back(0.0f);
|
d@0
|
688 dmfcc4.push_back(0.0f);
|
d@0
|
689 dmfcc4.push_back(0.0f);
|
d@0
|
690 dmfcc5.push_back(0.0f);
|
d@0
|
691 dmfcc5.push_back(0.0f);
|
d@0
|
692 dmfcc6.push_back(0.0f);
|
d@0
|
693 dmfcc6.push_back(0.0f);
|
d@0
|
694 dmfcc7.push_back(0.0f);
|
d@0
|
695 dmfcc7.push_back(0.0f);
|
d@0
|
696 dmfcc8.push_back(0.0f);
|
d@0
|
697 dmfcc8.push_back(0.0f);
|
d@0
|
698 dmfcc9.push_back(0.0f);
|
d@0
|
699 dmfcc9.push_back(0.0f);
|
d@0
|
700 dmfcc10.push_back(0.0f);
|
d@0
|
701 dmfcc10.push_back(0.0f);
|
d@0
|
702 dmfcc11.push_back(0.0f);
|
d@0
|
703 dmfcc11.push_back(0.0f);
|
d@0
|
704 dmfcc12.push_back(0.0f);
|
d@0
|
705 dmfcc12.push_back(0.0f);
|
d@0
|
706
|
d@0
|
707
|
d@0
|
708 int indexminusone = -1;
|
d@0
|
709 int indexplusone = 1;
|
d@0
|
710 int indexminustwo = -2;
|
d@0
|
711 int indexplustwo = 2;
|
d@0
|
712 //Need to start two samples ahead to gather the entire samples and not have spurious results from the MFCC 0 value
|
d@0
|
713
|
d@0
|
714 for (size_t index = 2; index < (m_ObservationData.size() - 2); index++)
|
d@0
|
715 {
|
d@0
|
716 dmfcc1.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[0] - m_ObservationData[index + indexplusone].GetMFCCs()[0]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[0] - m_ObservationData[index + indexplustwo].GetMFCCs()[0]));
|
d@0
|
717 dmfcc2.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[1] - m_ObservationData[index + indexplusone].GetMFCCs()[1]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[1] - m_ObservationData[index + indexplustwo].GetMFCCs()[1]));
|
d@0
|
718 dmfcc3.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[2] - m_ObservationData[index + indexplusone].GetMFCCs()[2]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[2] - m_ObservationData[index + indexplustwo].GetMFCCs()[2]));
|
d@0
|
719 dmfcc4.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[3] - m_ObservationData[index + indexplusone].GetMFCCs()[3]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[3] - m_ObservationData[index + indexplustwo].GetMFCCs()[3]));
|
d@0
|
720 dmfcc5.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[4] - m_ObservationData[index + indexplusone].GetMFCCs()[4]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[4] - m_ObservationData[index + indexplustwo].GetMFCCs()[4]));
|
d@0
|
721 dmfcc6.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[5] - m_ObservationData[index + indexplusone].GetMFCCs()[5]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[5] - m_ObservationData[index + indexplustwo].GetMFCCs()[5]));
|
d@0
|
722 dmfcc7.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[6] - m_ObservationData[index + indexplusone].GetMFCCs()[6]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[6] - m_ObservationData[index + indexplustwo].GetMFCCs()[6]));
|
d@0
|
723 dmfcc8.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[7] - m_ObservationData[index + indexplusone].GetMFCCs()[7]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[7] - m_ObservationData[index + indexplustwo].GetMFCCs()[7]));
|
d@0
|
724 dmfcc9.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[8] - m_ObservationData[index + indexplusone].GetMFCCs()[8]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[8] - m_ObservationData[index + indexplustwo].GetMFCCs()[8]));
|
d@0
|
725 dmfcc10.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[9] - m_ObservationData[index + indexplusone].GetMFCCs()[9]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[9] - m_ObservationData[index + indexplustwo].GetMFCCs()[9]));
|
d@0
|
726 dmfcc11.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[10] - m_ObservationData[index + indexplusone].GetMFCCs()[10]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[10] - m_ObservationData[index + indexplustwo].GetMFCCs()[10]));
|
d@0
|
727 dmfcc12.push_back(0.1f * (m_ObservationData[index + indexminusone].GetMFCCs()[11] - m_ObservationData[index + indexplusone].GetMFCCs()[11]) + 0.2f * (m_ObservationData[index + indexminustwo].GetMFCCs()[11] - m_ObservationData[index + indexplustwo].GetMFCCs()[11]));
|
d@0
|
728 }
|
d@0
|
729
|
d@0
|
730 dmfcc1.push_back(0.0f);
|
d@0
|
731 dmfcc1.push_back(0.0f);
|
d@0
|
732 dmfcc2.push_back(0.0f);
|
d@0
|
733 dmfcc2.push_back(0.0f);
|
d@0
|
734 dmfcc3.push_back(0.0f);
|
d@0
|
735 dmfcc3.push_back(0.0f);
|
d@0
|
736 dmfcc4.push_back(0.0f);
|
d@0
|
737 dmfcc4.push_back(0.0f);
|
d@0
|
738 dmfcc5.push_back(0.0f);
|
d@0
|
739 dmfcc5.push_back(0.0f);
|
d@0
|
740 dmfcc6.push_back(0.0f);
|
d@0
|
741 dmfcc6.push_back(0.0f);
|
d@0
|
742 dmfcc7.push_back(0.0f);
|
d@0
|
743 dmfcc7.push_back(0.0f);
|
d@0
|
744 dmfcc8.push_back(0.0f);
|
d@0
|
745 dmfcc8.push_back(0.0f);
|
d@0
|
746 dmfcc9.push_back(0.0f);
|
d@0
|
747 dmfcc9.push_back(0.0f);
|
d@0
|
748 dmfcc10.push_back(0.0f);
|
d@0
|
749 dmfcc10.push_back(0.0f);
|
d@0
|
750 dmfcc11.push_back(0.0f);
|
d@0
|
751 dmfcc11.push_back(0.0f);
|
d@0
|
752 dmfcc12.push_back(0.0f);
|
d@0
|
753 dmfcc12.push_back(0.0f);
|
d@0
|
754
|
d@0
|
755 m_deltamfccs.push_back(dmfcc1);
|
d@0
|
756 m_deltamfccs.push_back(dmfcc2);
|
d@0
|
757 m_deltamfccs.push_back(dmfcc3);
|
d@0
|
758 m_deltamfccs.push_back(dmfcc4);
|
d@0
|
759 m_deltamfccs.push_back(dmfcc5);
|
d@0
|
760 m_deltamfccs.push_back(dmfcc6);
|
d@0
|
761 m_deltamfccs.push_back(dmfcc7);
|
d@0
|
762 m_deltamfccs.push_back(dmfcc8);
|
d@0
|
763 m_deltamfccs.push_back(dmfcc9);
|
d@0
|
764 m_deltamfccs.push_back(dmfcc10);
|
d@0
|
765 m_deltamfccs.push_back(dmfcc11);
|
d@0
|
766 m_deltamfccs.push_back(dmfcc12);
|
d@0
|
767 }
|
d@0
|
768 }
|
d@0
|
769
|
d@0
|
770 float FeatureData::Average(std::vector<float> v)
|
d@0
|
771 {
|
d@0
|
772 float sum = 0;
|
d@0
|
773
|
d@0
|
774 for(size_t i = 0; i < v.size(); i++)
|
d@0
|
775 {
|
d@0
|
776 sum += v[i];
|
d@0
|
777 }
|
d@0
|
778
|
d@0
|
779 return sum / (float)v.size();
|
d@0
|
780 }
|
d@0
|
781
|
d@0
|
782 float FeatureData::Deviation(std::vector<float> v, float ave)
|
d@0
|
783 {
|
d@0
|
784 float E = 0;
|
d@0
|
785
|
d@0
|
786 for(size_t i = 0; i < v.size(); i++)
|
d@0
|
787 {
|
d@0
|
788 E += (v[i] - ave) * (v[i] - ave);
|
d@0
|
789 }
|
d@0
|
790
|
d@0
|
791 return sqrt((1 / (float)v.size()) * E);
|
d@0
|
792 }
|
d@0
|
793
|
d@0
|
794 float FeatureData::Max(std::vector<float> v)
|
d@0
|
795 {
|
d@0
|
796
|
d@0
|
797 float max = std::numeric_limits<float>::lowest();
|
d@0
|
798
|
d@0
|
799 for(size_t i = 0; i < v.size(); i++)
|
d@0
|
800 {
|
d@0
|
801 if (v[i] > max)
|
d@0
|
802 max = v[i];
|
d@0
|
803 }
|
d@0
|
804
|
d@0
|
805 return max;
|
d@0
|
806 }
|
d@0
|
807
|
d@0
|
808 float FeatureData::Min(std::vector<float> v)
|
d@0
|
809 {
|
d@0
|
810 float min = std::numeric_limits<float>::max();
|
d@0
|
811
|
d@0
|
812 for(size_t i = 0; i < v.size(); i++)
|
d@0
|
813 {
|
d@0
|
814 if (v[i] < min)
|
d@0
|
815 min = v[i];
|
d@0
|
816 }
|
d@0
|
817
|
d@0
|
818 return min;
|
d@0
|
819 } |