forked from openbci-archive/OpenBCI_Python
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathprocessor.py
91 lines (42 loc) · 2.18 KB
/
processor.py
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
import pydub
import os
import seaborn as sb
from manager import FeatureManager
from features.energy import Energy
from features.fft import FFT
from features.mean import Mean
from features.mfcc import MFCC
from features.zcr import ZCR
from utils.Audio import Audio
sb.set(style="white", palette="muted")
import random
random.seed(20150420)
class Clip:
RATE = 44100 # All recordings in ESC are 44.1 kHz
FRAME = 248 # Frame size in samples
def __init__(self, filename, file_type):
self.filename = os.path.basename(filename)
self.path = os.path.abspath(filename)
self.directory = os.path.dirname(self.path)
self.category = self.directory.split('/')[-1]
self.audio = Audio(self.path, file_type)
with self.audio as audio:
self.featureManager = FeatureManager()
self.featureManager.addRegisteredFeatures(MFCC(self.audio,None, 32, self.FRAME, self.RATE), "mfcc")
self.featureManager.addRegisteredFeatures(FFT(self.audio,None,1024, self.FRAME, self.RATE), "fft")
# TODO recheck
# self.featureManager.addRegisteredFeatures(Energy(self.audio,None,self.FRAME, self.RATE), "energy")
self.featureManager.addRegisteredFeatures(ZCR(self.audio,None,self.FRAME, self.RATE), "zcr")
self.featureManager.addRegisteredFeatures(Mean(self.audio, None, self.FRAME, self.RATE), "mean")
self.featureManager.getRegisteredFeature("mfcc").compute_mfcc()
self.featureManager.getRegisteredFeature("fft").compute_fft()
#TODO recheck
# self.featureManager.getRegisteredFeature("energy").compute_energy()
# self.featureManager.getRegisteredFeature("energy").compute_energy_entropy()
self.featureManager.getRegisteredFeature("zcr").compute_zcr()
self.featureManager.getRegisteredFeature("mean").compute_mean()
self.feature_list = self.featureManager.getRegisteredFeatures()
def __repr__(self):
return '<{0}/{1}>'.format(self.category, self.filename)
def get_feature_vector(self):
return self.featureManager.getRegisteredFeature("fft").get_logamplitude()