nkululeko 0.95.0__py3-none-any.whl → 0.95.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,93 +0,0 @@
1
- # opensmileset.py
2
- import os
3
-
4
- import opensmile
5
- import pandas as pd
6
-
7
- import nkululeko.glob_conf as glob_conf
8
- from nkululeko.feat_extract.featureset import Featureset
9
-
10
-
11
- class Opensmileset(Featureset):
12
- def __init__(self, name, data_df, feats_type=None, config_file=None):
13
- super().__init__(name, data_df, feats_type)
14
- self.featset = self.util.config_val("FEATS", "set", "eGeMAPSv02")
15
- try:
16
- self.feature_set = eval(f"opensmile.FeatureSet.{self.featset}")
17
- # 'eGeMAPSv02, ComParE_2016, GeMAPSv01a, eGeMAPSv01a':
18
- except AttributeError:
19
- self.util.error(f"something is wrong with feature set: {self.featset}")
20
- self.featlevel = self.util.config_val("FEATS", "level", "functionals")
21
- try:
22
- self.featlevel = self.featlevel.replace("lld", "LowLevelDescriptors")
23
- self.featlevel = self.featlevel.replace("functionals", "Functionals")
24
- self.feature_level = eval(f"opensmile.FeatureLevel.{self.featlevel}")
25
- except AttributeError:
26
- self.util.error(f"something is wrong with feature level: {self.featlevel}")
27
-
28
- def extract(self):
29
- """Extract the features based on the initialized dataset or re-open them when found on disk."""
30
- store = self.util.get_path("store")
31
- store_format = self.util.config_val("FEATS", "store_format", "pkl")
32
- storage = f"{store}{self.name}.{store_format}"
33
- extract = eval(
34
- self.util.config_val("FEATS", "needs_feature_extraction", "False")
35
- )
36
- no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False"))
37
- if extract or not os.path.isfile(storage) or no_reuse:
38
- self.util.debug("extracting openSmile features, this might take a while...")
39
- smile = opensmile.Smile(
40
- feature_set=self.feature_set,
41
- feature_level=self.feature_level,
42
- num_workers=self.n_jobs,
43
- verbose=True,
44
- )
45
- if isinstance(self.data_df.index, pd.MultiIndex):
46
- self.df = smile.process_index(self.data_df.index)
47
- self.df = self.df.set_index(self.data_df.index)
48
- else:
49
- self.df = smile.process_files(self.data_df.index)
50
- self.df.index = self.df.index.droplevel(1)
51
- self.df.index = self.df.index.droplevel(1)
52
- self.util.write_store(self.df, storage, store_format)
53
- try:
54
- glob_conf.config["DATA"]["needs_feature_extraction"] = "False"
55
- except KeyError:
56
- pass
57
- else:
58
- self.util.debug(f"reusing extracted OS features: {storage}.")
59
- self.df = self.util.get_store(storage, store_format)
60
-
61
- def extract_sample(self, signal, sr):
62
- smile = opensmile.Smile(
63
- feature_set=self.feature_set,
64
- feature_level=opensmile.FeatureLevel.Functionals,
65
- )
66
- feats = smile.process_signal(signal, sr)
67
- return feats.to_numpy()
68
-
69
- # def filter(self):
70
- # # use only the features that are indexed in the target dataframes
71
- # self.df = self.df[self.df.index.isin(self.data_df.index)]
72
- # try:
73
- # # use only some features
74
- # selected_features = ast.literal_eval(
75
- # glob_conf.config["FEATS"]["os.features"]
76
- # )
77
- # self.util.debug(f"selecting features from opensmile: {selected_features}")
78
- # sel_feats_df = pd.DataFrame()
79
- # hit = False
80
- # for feat in selected_features:
81
- # try:
82
- # sel_feats_df[feat] = self.df[feat]
83
- # hit = True
84
- # except KeyError:
85
- # pass
86
- # if hit:
87
- # self.df = sel_feats_df
88
- # self.util.debug(
89
- # "new feats shape after selecting opensmile features:"
90
- # f" {self.df.shape}"
91
- # )
92
- # except KeyError:
93
- # pass