d@0
|
1 /*
|
d@0
|
2 ==============================================================================
|
d@0
|
3
|
d@0
|
4 AudioSourceFeatureExtractor.h
|
d@0
|
5 Created: 11 Aug 2014 10:41:02am
|
d@0
|
6 Author: david.ronan
|
d@0
|
7
|
d@0
|
8 ==============================================================================
|
d@0
|
9 */
|
d@0
|
10
|
d@0
|
11 #ifndef AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED
|
d@0
|
12 #define AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED
|
d@0
|
13
|
d@0
|
14 #include <vector>
|
d@0
|
15
|
d@0
|
16 #include "FFT.h"
|
d@0
|
17 #include "MFCC.h"
|
d@10
|
18 #include "SpectralContrast.h"
|
d@0
|
19 #include "ObservationData.h"
|
d@0
|
20
|
d@0
|
21 #define MAGNITUDESIZE 512
|
d@0
|
22 #define FFTSIZE 1024
|
d@0
|
23 #define PI 3.14159265359
|
d@7
|
24 #include <memory>
|
d@0
|
25
|
d@0
|
26 class AudioSourceFeatureExtractor
|
d@0
|
27 {
|
d@0
|
28
|
d@0
|
29 public:
|
d@0
|
30
|
d@0
|
31 AudioSourceFeatureExtractor();
|
d@0
|
32 ~AudioSourceFeatureExtractor();
|
d@0
|
33
|
d@0
|
34 void Initialise ( float fSampleRate);
|
d@9
|
35 std::vector<ObservationData> Process (const std::vector<float> data);
|
d@0
|
36 void Finalize();
|
d@0
|
37
|
d@0
|
38 private:
|
d@0
|
39 //Computes the magnitude of FFT
|
d@4
|
40 void VectorDistance(std::vector<float> vIn1, int stride1, std::vector<float>, int stride2, std::vector<float> &vOut, int strideOut, size_t nElements);
|
d@0
|
41
|
d@4
|
42 void SpectralFeatures(std::vector<float> &magnitude, std::vector<float> &previousmagnitude, size_t windowSize, float ¢roid, float &spread, float &skew, float &kurtosis, float &brightness, float &rolloff95, float &rolloff85, float &spectralentropy, float &flatness, float &spectralcf, float &spectralflux);
|
d@0
|
43
|
d@9
|
44 float EstimatePerdiodicity(std::vector<float> data);
|
d@0
|
45
|
d@8
|
46 void EnvelopeCurve(std::vector<float> data, std::vector<float> &out, float sampleRate);
|
d@0
|
47
|
d@8
|
48 void XCorr(std::vector<float> &output, std::vector<float> input1, std::vector<float> input2, size_t maxLag);
|
d@0
|
49
|
d@9
|
50 float EntropyOfEnergy(std::vector<float> data);
|
d@0
|
51
|
d@0
|
52 float Log2(float n);
|
d@0
|
53
|
d@0
|
54 int Sign(float x);
|
d@0
|
55
|
d@0
|
56 std::vector<float> LinSpace(float min, float max, int n);
|
d@0
|
57
|
d@0
|
58 std::vector<float> LogSpace(float min, float max, int n);
|
d@0
|
59
|
d@7
|
60 //void Normalise(float* data, float* &out, size_t len);
|
d@7
|
61
|
d@7
|
62 //void ConvolveFunction(float* &z, float *x, float *y, size_t &lenz, size_t lenx, size_t leny);
|
d@7
|
63
|
d@7
|
64 //void DownSampler(float* data, float* &out, size_t lenIn, size_t &lenOut, float currentSampleRate, float futureSampleRate);
|
d@7
|
65
|
d@7
|
66 //void PDF_getResampleKrnl(std::vector<float> freqVec, float fsProc, int nfft, int nBin, std::vector<float> &outLogFreqVec, std::vector<std::vector<float>> &outKrnl);
|
d@7
|
67
|
d@1
|
68 size_t m_iWriteIdx;
|
d@1
|
69 size_t m_iFlucIdx;
|
d@0
|
70 float m_fSampleRate;
|
d@4
|
71 std::unique_ptr<FFTW> m_fft;
|
d@4
|
72 std::vector<float> m_OutReal;
|
d@4
|
73 std::vector<float> m_OutImag;
|
d@0
|
74 MFCC m_MFCC;
|
d@10
|
75 SpectralContrast m_SpectralContrast;
|
d@4
|
76 std::vector<float> m_fInputBuffer;
|
d@4
|
77 std::vector<float> m_fMagnitudeSpectrum;
|
d@4
|
78 std::vector<float> m_fPreviousMagnitudeSpectrum;
|
d@0
|
79 std::vector<float> m_fFreqBins;
|
d@0
|
80 };
|
d@0
|
81
|
d@0
|
82 #endif // AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED
|