nkululeko 0.88.10__py3-none-any.whl → 0.88.12__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.
nkululeko/constants.py CHANGED
@@ -1,2 +1,2 @@
1
- VERSION="0.88.10"
1
+ VERSION="0.88.12"
2
2
  SAMPLING_RATE = 16000
@@ -2,6 +2,7 @@
2
2
 
3
3
  from nkululeko.feat_extract.featureset import Featureset
4
4
  import os
5
+
5
6
  # import pandas as pd
6
7
  import audeer
7
8
  import nkululeko.glob_conf as glob_conf
@@ -10,6 +11,7 @@ import numpy as np
10
11
  import audinterface
11
12
  import torch
12
13
 
14
+
13
15
  class AgenderSet(Featureset):
14
16
  """
15
17
  Embeddings from the wav2vec2. based model finetuned on agender data, described in the paper
@@ -30,8 +32,7 @@ class AgenderSet(Featureset):
30
32
  if not os.path.isdir(model_root):
31
33
  cache_root = audeer.mkdir("cache")
32
34
  model_root = audeer.mkdir(model_root)
33
- archive_path = audeer.download_url(
34
- model_url, cache_root, verbose=True)
35
+ archive_path = audeer.download_url(model_url, cache_root, verbose=True)
35
36
  audeer.extract_archive(archive_path, model_root)
36
37
  cuda = "cuda" if torch.cuda.is_available() else "cpu"
37
38
  device = self.util.config_val("MODEL", "device", cuda)
@@ -62,7 +63,7 @@ class AgenderSet(Featureset):
62
63
  },
63
64
  sampling_rate=16000,
64
65
  resample=True,
65
- num_workers=5,
66
+ num_workers=self.n_jobs,
66
67
  verbose=True,
67
68
  )
68
69
  self.df = hidden_states.process_index(self.data_df.index)
@@ -32,8 +32,7 @@ class AuddimSet(Featureset):
32
32
  if not os.path.isdir(model_root):
33
33
  cache_root = audeer.mkdir("cache")
34
34
  model_root = audeer.mkdir(model_root)
35
- archive_path = audeer.download_url(
36
- model_url, cache_root, verbose=True)
35
+ archive_path = audeer.download_url(model_url, cache_root, verbose=True)
37
36
  audeer.extract_archive(archive_path, model_root)
38
37
  cuda = "cuda" if torch.cuda.is_available() else "cpu"
39
38
  device = self.util.config_val("MODEL", "device", cuda)
@@ -63,7 +62,7 @@ class AuddimSet(Featureset):
63
62
  },
64
63
  sampling_rate=16000,
65
64
  resample=True,
66
- num_workers=5,
65
+ num_workers=self.n_jobs,
67
66
  verbose=True,
68
67
  )
69
68
  self.df = logits.process_index(self.data_df.index)
@@ -30,8 +30,7 @@ class AudmodelSet(Featureset):
30
30
  if not os.path.isdir(model_root):
31
31
  cache_root = audeer.mkdir("cache")
32
32
  model_root = audeer.mkdir(model_root)
33
- archive_path = audeer.download_url(
34
- model_url, cache_root, verbose=True)
33
+ archive_path = audeer.download_url(model_url, cache_root, verbose=True)
35
34
  audeer.extract_archive(archive_path, model_root)
36
35
  cuda = "cuda" if torch.cuda.is_available() else "cpu"
37
36
  device = self.util.config_val("MODEL", "device", cuda)
@@ -61,7 +60,7 @@ class AudmodelSet(Featureset):
61
60
  },
62
61
  sampling_rate=16000,
63
62
  resample=True,
64
- num_workers=5,
63
+ num_workers=self.n_jobs,
65
64
  verbose=True,
66
65
  )
67
66
  self.df = hidden_states.process_index(self.data_df.index)
@@ -38,7 +38,7 @@ class Opensmileset(Featureset):
38
38
  smile = opensmile.Smile(
39
39
  feature_set=self.feature_set,
40
40
  feature_level=self.feature_level,
41
- num_workers=5,
41
+ num_workers=self.n_jobs,
42
42
  verbose=True,
43
43
  )
44
44
  if isinstance(self.data_df.index, pd.MultiIndex):
@@ -22,17 +22,15 @@ class Openxbow(Featureset):
22
22
  self.feature_set = eval(f"opensmile.FeatureSet.{self.featset}")
23
23
  store = self.util.get_path("store")
24
24
  storage = f"{store}{self.name}_{self.featset}.pkl"
25
- extract = self.util.config_val(
26
- "FEATS", "needs_feature_extraction", False)
25
+ extract = self.util.config_val("FEATS", "needs_feature_extraction", False)
27
26
  no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False"))
28
27
  if extract or no_reuse or not os.path.isfile(storage):
29
28
  # extract smile features first
30
- self.util.debug(
31
- "extracting openSmile features, this might take a while...")
29
+ self.util.debug("extracting openSmile features, this might take a while...")
32
30
  smile = opensmile.Smile(
33
31
  feature_set=self.feature_set,
34
32
  feature_level=opensmile.FeatureLevel.LowLevelDescriptors,
35
- num_workers=5,
33
+ num_workers=self.n_jobs,
36
34
  )
37
35
  if isinstance(self.data_df.index, pd.MultiIndex):
38
36
  is_multi_index = True
@@ -51,13 +49,11 @@ class Openxbow(Featureset):
51
49
  # save the smile features
52
50
  smile_df.to_csv(lld_name, sep=";", header=False)
53
51
  # get the path of the xbow java jar file
54
- xbow_path = self.util.config_val(
55
- "FEATS", "xbow.model", "openXBOW")
52
+ xbow_path = self.util.config_val("FEATS", "xbow.model", "openXBOW")
56
53
  # check if JAR file exist
57
54
  if not os.path.isfile(f"{xbow_path}/openXBOW.jar"):
58
55
  # download using wget if not exist and locate in xbow_path
59
- os.system(
60
- f"git clone https://github.com/openXBOW/openXBOW")
56
+ os.system(f"git clone https://github.com/openXBOW/openXBOW")
61
57
  # get the size of the codebook
62
58
  size = self.util.config_val("FEATS", "size", 500)
63
59
  # get the number of assignements
@@ -87,7 +83,7 @@ class Openxbow(Featureset):
87
83
  smile = opensmile.Smile(
88
84
  feature_set=opensmile.FeatureSet.eGeMAPSv02, # always use eGemaps for this
89
85
  feature_level=opensmile.FeatureLevel.Functionals,
90
- num_workers=5,
86
+ num_workers=self.n_jobs,
91
87
  )
92
88
  if isinstance(self.data_df.index, pd.MultiIndex):
93
89
  is_multi_index = True
@@ -16,6 +16,7 @@ class Featureset:
16
16
  self.data_df = data_df
17
17
  self.util = Util("featureset")
18
18
  self.feats_type = feats_type
19
+ self.n_jobs = int(self.util.config_val("MODEL", "n_jobs", "8"))
19
20
 
20
21
  def extract(self):
21
22
  pass
@@ -380,11 +380,11 @@ def compute_features(file_index):
380
380
  )
381
381
 
382
382
  # add pca data
383
- pcaData = run_pca(df) # Run jitter and shimmer PCA
384
- df = pd.concat([df, pcaData], axis=1) # Add PCA data
383
+ pca_data = run_pca(df) # Run jitter and shimmer PCA
384
+ df = pd.concat([df, pca_data], axis=1) # Add PCA data
385
385
  # reload the data so it's all numbers
386
- df.to_csv("processed_results.csv", index=False)
387
- df = pd.read_csv("processed_results.csv", header=0)
386
+ # df.to_csv("processed_results.csv", index=False)
387
+ # df = pd.read_csv("processed_results.csv", header=0)
388
388
  # df.sort_values('voiceID').head(20)
389
389
  # ## Next we calculate the vocal-tract length estimates
390
390
 
nkululeko/models/model.py CHANGED
@@ -3,6 +3,7 @@ import ast
3
3
  import pickle
4
4
  import random
5
5
 
6
+ from joblib import parallel_backend
6
7
  import numpy as np
7
8
  import pandas as pd
8
9
  from sklearn.model_selection import GridSearchCV
@@ -34,6 +35,7 @@ class Model:
34
35
  self.epoch = 0
35
36
  self.logo = self.util.config_val("MODEL", "logo", False)
36
37
  self.xfoldx = self.util.config_val("MODEL", "k_fold_cross", False)
38
+ self.n_jobs = int(self.util.config_val("MODEL", "n_jobs", "8"))
37
39
 
38
40
  def set_model_type(self, type):
39
41
  self.model_type = type
@@ -75,7 +77,8 @@ class Model:
75
77
  ):
76
78
  train_x = feats.iloc[train_index].to_numpy()
77
79
  train_y = targets[train_index]
78
- self.clf.fit(train_x, train_y)
80
+ with parallel_backend("threading", n_jobs=self.n_jobs):
81
+ self.clf.fit(train_x, train_y)
79
82
  truth_x = feats.iloc[test_index].to_numpy()
80
83
  truth_y = targets[test_index]
81
84
  predict_y = self.clf.predict(truth_x)
@@ -141,7 +144,8 @@ class Model:
141
144
  ):
142
145
  train_x = feats.iloc[train_index].to_numpy()
143
146
  train_y = targets.iloc[train_index]
144
- self.clf.fit(train_x, train_y)
147
+ with parallel_backend("threading", n_jobs=self.n_jobs):
148
+ self.clf.fit(train_x, train_y)
145
149
 
146
150
  truth_x = feats.iloc[test_index].to_numpy()
147
151
  truth_y = targets.iloc[test_index]
@@ -171,7 +175,7 @@ class Model:
171
175
  )
172
176
 
173
177
  def train(self):
174
- """Train the model"""
178
+ """Train the model."""
175
179
  # # first check if the model already has been trained
176
180
  # if os.path.isfile(self.store_path):
177
181
  # self.load(self.run, self.epoch)
@@ -204,22 +208,39 @@ class Model:
204
208
  )
205
209
 
206
210
  tuning_params = self.util.config_val("MODEL", "tuning_params", False)
207
- if tuning_params:
208
- # tune the model meta parameters
209
- tuning_params = ast.literal_eval(tuning_params)
210
- tuned_params = {}
211
- try:
212
- scoring = glob_conf.config["MODEL"]["scoring"]
213
- except KeyError:
214
- self.util.error("got tuning params but no scoring")
215
- for param in tuning_params:
216
- values = ast.literal_eval(glob_conf.config["MODEL"][param])
217
- tuned_params[param] = values
218
- self.util.debug(f"tuning on {tuned_params}")
219
- self.clf = GridSearchCV(
220
- self.clf, tuned_params, refit=True, verbose=3, scoring=scoring
221
- )
222
- try:
211
+ with parallel_backend("threading", n_jobs=self.n_jobs):
212
+ if tuning_params:
213
+ # tune the model meta parameters
214
+ tuning_params = ast.literal_eval(tuning_params)
215
+ tuned_params = {}
216
+ try:
217
+ scoring = glob_conf.config["MODEL"]["scoring"]
218
+ except KeyError:
219
+ self.util.error("got tuning params but no scoring")
220
+ for param in tuning_params:
221
+ values = ast.literal_eval(glob_conf.config["MODEL"][param])
222
+ tuned_params[param] = values
223
+ self.util.debug(f"tuning on {tuned_params}")
224
+ self.clf = GridSearchCV(
225
+ self.clf, tuned_params, refit=True, verbose=3, scoring=scoring
226
+ )
227
+ try:
228
+ class_weight = eval(
229
+ self.util.config_val("MODEL", "class_weight", "False")
230
+ )
231
+ if class_weight:
232
+ self.util.debug("using class weight")
233
+ self.clf.fit(
234
+ feats,
235
+ self.df_train[self.target],
236
+ sample_weight=self.classes_weights,
237
+ )
238
+ else:
239
+ self.clf.fit(feats, self.df_train[self.target])
240
+ except KeyError:
241
+ self.clf.fit(feats, self.df_train[self.target])
242
+ self.util.debug(f"winner parameters: {self.clf.best_params_}")
243
+ else:
223
244
  class_weight = self.util.config_val("MODEL", "class_weight", False)
224
245
  if class_weight:
225
246
  self.util.debug("using class weight")
@@ -229,22 +250,8 @@ class Model:
229
250
  sample_weight=self.classes_weights,
230
251
  )
231
252
  else:
232
- self.clf.fit(feats, self.df_train[self.target])
233
- except KeyError:
234
- self.clf.fit(feats, self.df_train[self.target])
235
- self.util.debug(f"winner parameters: {self.clf.best_params_}")
236
- else:
237
- class_weight = self.util.config_val("MODEL", "class_weight", False)
238
- if class_weight:
239
- self.util.debug("using class weight")
240
- self.clf.fit(
241
- feats,
242
- self.df_train[self.target],
243
- sample_weight=self.classes_weights,
244
- )
245
- else:
246
- labels = self.df_train[self.target]
247
- self.clf.fit(feats, labels)
253
+ labels = self.df_train[self.target]
254
+ self.clf.fit(feats, labels)
248
255
 
249
256
  def get_predictions(self):
250
257
  # predictions = self.clf.predict(self.feats_test.to_numpy())
@@ -80,7 +80,7 @@ class CNNModel(Model):
80
80
  # batch size
81
81
  self.batch_size = int(self.util.config_val("MODEL", "batch_size", 8))
82
82
  # number of parallel processes
83
- self.num_workers = int(self.util.config_val("MODEL", "num_workers", 5))
83
+ self.num_workers = self.n_jobs
84
84
 
85
85
  # set up the data_loaders
86
86
 
@@ -100,13 +100,13 @@ class CNNModel(Model):
100
100
  train_set,
101
101
  batch_size=self.batch_size,
102
102
  shuffle=True,
103
- num_workers=self.num_workers,
103
+ num_workers=self.n_jobs,
104
104
  )
105
105
  self.testloader = torch.utils.data.DataLoader(
106
106
  test_set,
107
107
  batch_size=self.batch_size,
108
108
  shuffle=False,
109
- num_workers=self.num_workers,
109
+ num_workers=self.n_jobs,
110
110
  )
111
111
 
112
112
  class Dataset_image(Dataset):
@@ -136,7 +136,7 @@ class CNNModel(Model):
136
136
  test_set,
137
137
  batch_size=self.batch_size,
138
138
  shuffle=False,
139
- num_workers=self.num_workers,
139
+ num_workers=self.n_jobs,
140
140
  )
141
141
 
142
142
  def reset_test(self, df_test, feats_test):
@@ -71,7 +71,7 @@ class MLPModel(Model):
71
71
  # batch size
72
72
  self.batch_size = int(self.util.config_val("MODEL", "batch_size", 8))
73
73
  # number of parallel processes
74
- self.num_workers = int(self.util.config_val("MODEL", "num_workers", 5))
74
+ self.num_workers = self.n_jobs
75
75
  if feats_train.isna().to_numpy().any():
76
76
  self.util.debug(
77
77
  f"Model, train: replacing {feats_train.isna().sum().sum()} NANs"
@@ -64,7 +64,7 @@ class MLP_Reg_model(Model):
64
64
  # batch size
65
65
  self.batch_size = int(self.util.config_val("MODEL", "batch_size", 8))
66
66
  # number of parallel processes
67
- self.num_workers = int(self.util.config_val("MODEL", "num_workers", 5))
67
+ self.num_workers = self.n_jobs
68
68
  # set up the data_loaders
69
69
  if feats_train.isna().to_numpy().any():
70
70
  self.util.debug(
@@ -117,7 +117,7 @@ class MLP_Reg_model(Model):
117
117
  dataset=data_set,
118
118
  batch_size=self.batch_size,
119
119
  shuffle=shuffle,
120
- num_workers=self.num_workers,
120
+ num_workers=self.n_jobs,
121
121
  )
122
122
  return loader
123
123
 
nkululeko/utils/util.py CHANGED
@@ -27,6 +27,7 @@ class Util:
27
27
  "pkl",
28
28
  "eGeMAPSv02",
29
29
  "functionals",
30
+ "n_jobs",
30
31
  ]
31
32
 
32
33
  def __init__(self, caller=None, has_config=True):
@@ -150,7 +151,7 @@ class Util:
150
151
  # self.logged_configs.clear()
151
152
 
152
153
  def get_save_name(self):
153
- """Return a relative path to a name to save the experiment"""
154
+ """Return a relative path to a name to save the experiment."""
154
155
  store = self.get_path("store")
155
156
  return f"{store}/{self.get_exp_name()}.pkl"
156
157
 
@@ -161,7 +162,7 @@ class Util:
161
162
  return f"{store}/pred_{target}_{pred_name}.csv"
162
163
 
163
164
  def is_categorical(self, pd_series):
164
- """Check if a dataframe column is categorical"""
165
+ """Check if a dataframe column is categorical."""
165
166
  return pd_series.dtype.name == "object" or isinstance(
166
167
  pd_series.dtype, pd.CategoricalDtype
167
168
  )
@@ -307,7 +308,7 @@ class Util:
307
308
  self.config[section][key] = str(value)
308
309
 
309
310
  def check_df(self, i, df):
310
- """Check a dataframe"""
311
+ """Check a dataframe."""
311
312
  print(f"check {i}: {df.shape}")
312
313
  print(df.head(1))
313
314
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nkululeko
3
- Version: 0.88.10
3
+ Version: 0.88.12
4
4
  Summary: Machine learning audio prediction experiments based on templates
5
5
  Home-page: https://github.com/felixbur/nkululeko
6
6
  Author: Felix Burkhardt
@@ -192,8 +192,6 @@ type = svm
192
192
  [EXPL]
193
193
  model = tree
194
194
  plot_tree = True
195
- [PLOT]
196
- combine_per_speaker = mode
197
195
  ```
198
196
  Read the [Hello World example](#hello-world-example) for initial usage with Emo-DB dataset.
199
197
 
@@ -361,6 +359,15 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
361
359
  Changelog
362
360
  =========
363
361
 
362
+ Version 0.88.12
363
+ --------------
364
+ * added n_jobs for sklearn processing
365
+ * re_named num_workers n_jobs
366
+
367
+ Version 0.88.11
368
+ --------------
369
+ * removed hack in Praat script
370
+
364
371
  Version 0.88.10
365
372
  --------------
366
373
  * SVM C val defaults to 1
@@ -2,7 +2,7 @@ nkululeko/__init__.py,sha256=62f8HiEzJ8rG2QlTFJXUCMpvuH3fKI33DoJSj33mscc,63
2
2
  nkululeko/aug_train.py,sha256=YhuZnS_WVWnun9G-M6g5n6rbRxoVREz6Zh7k6qprFNQ,3194
3
3
  nkululeko/augment.py,sha256=4MG0apTAG5RgkuJrYEjGgDdbodZWi_HweSPNI1JJ5QA,3051
4
4
  nkululeko/cacheddataset.py,sha256=lIJ6hUo5LoxSrzXtWV8mzwO7wRtUETWnOQ4ws2XfL1E,969
5
- nkululeko/constants.py,sha256=8iRgPx-MBB6fcD0RICfYCOaSZFjH2hPcLRqFhgbTcTU,40
5
+ nkululeko/constants.py,sha256=7-twiCGYx2fTsGKDZex9QsUXRhaudHMRFwoV8HehRcg,40
6
6
  nkululeko/demo.py,sha256=bLuHkeEl5rOfm7ecGHCcWATiPK7-njNbtrGljxzNzFs,5088
7
7
  nkululeko/demo_feats.py,sha256=sAeGFojhEj9WEDFtG3SzPBmyYJWLF2rkbpp65m8Ujo4,2025
8
8
  nkululeko/demo_predictor.py,sha256=zs1bjhpnKuNCPLJeiyDm19ME1NEDOQT3QNeyVKJq9Yc,4882
@@ -49,19 +49,19 @@ nkululeko/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  nkululeko/data/dataset.py,sha256=xaawk5QthuVStWjHWTFBtorcIe71lbPQgC6mHzSXGeI,29286
50
50
  nkululeko/data/dataset_csv.py,sha256=UGEpi__eT2KFS6Fop6N4HkMrzO-u5VP71gt44kwZavo,4588
51
51
  nkululeko/feat_extract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- nkululeko/feat_extract/feats_agender.py,sha256=sHyvxxlWXv1QGYXHGHIYEQK7X39eifSVie0tu-zBG3M,3189
52
+ nkululeko/feat_extract/feats_agender.py,sha256=tMK3_qs8adylNNSR0CS1RjU9RxmpumLqmuyzmc2ZYjA,3184
53
53
  nkululeko/feat_extract/feats_agender_agender.py,sha256=19NoRT0KJ8WoZ3EabTYexXymD7bDy58-H20jYmdqjD0,3498
54
54
  nkululeko/feat_extract/feats_analyser.py,sha256=Y9hMpZ9WsQOrxTP3B1diHnzMeOgwbVpVFWVlIyhHMJs,12722
55
55
  nkululeko/feat_extract/feats_ast.py,sha256=ycJn5eSVOxcEpmeHVk0FPB8q5XiTC8VSKz61L9n0Wa4,4638
56
- nkululeko/feat_extract/feats_auddim.py,sha256=VlzKKXTXa5kjLgQBWyEFy-daIyU1SkOwCCOIhKsWCvE,3162
57
- nkululeko/feat_extract/feats_audmodel.py,sha256=VjBNgAoxsHJhwr6Kwt9CxX6SaCM4RK_OV-GU2W5-bhU,3187
56
+ nkululeko/feat_extract/feats_auddim.py,sha256=ulP_o4SGeQDFTs8YYCGKgccARAo6-wcjPK6-hhGjmn8,3155
57
+ nkululeko/feat_extract/feats_audmodel.py,sha256=aRGTBDKdYaTT_9xDaFZqpuyPhzxSNN_3b1PJDUHtYW4,3180
58
58
  nkululeko/feat_extract/feats_clap.py,sha256=nR6eEIRdsMHcfmD1bNtt5WfDvkxKjvEbukSSrXHm-HU,3489
59
59
  nkululeko/feat_extract/feats_hubert.py,sha256=cLoUzSLjSYBkQnftjacSL7ES3O7Ysh_KrPYvZtLX_TU,5196
60
60
  nkululeko/feat_extract/feats_import.py,sha256=WiU5lCkJsmFNTDyPV0qIh8mJssa6bpgP7AYw_ClKfWM,1674
61
61
  nkululeko/feat_extract/feats_mld.py,sha256=Vvu7GZOkn7Vda8eIOXqHjg78zegkFe3vTUaCXyVM0eA,2021
62
62
  nkululeko/feat_extract/feats_mos.py,sha256=KXNt7QYEfxkvr6UyVhig2aWQBaIvovlrR4gPuP03gmo,4174
63
- nkululeko/feat_extract/feats_opensmile.py,sha256=g6ZsAxjjGGvGfrr5fngWC-NJ8E7CP1kYZwrlodZJzzU,4028
64
- nkululeko/feat_extract/feats_oxbow.py,sha256=CmIG9cbHTJTJVnzgCPdQpYpnlewWExpsr5ZcK8Malyo,4980
63
+ nkululeko/feat_extract/feats_opensmile.py,sha256=oP5ZWuddPN3_Sa59uyVJisCBd6e2By-IZZ9gVo7NtpE,4038
64
+ nkululeko/feat_extract/feats_oxbow.py,sha256=djPH5k_pBzTV7yaY0eD4qVmYAnKoDu3_Cbaypx_V4vM,4932
65
65
  nkululeko/feat_extract/feats_praat.py,sha256=kZrS6srzH7WoWEd2prp1Dxw6g9JklFQGTNq5zzPpHzg,3105
66
66
  nkululeko/feat_extract/feats_snr.py,sha256=9dqZ-4RpK98iJEssM3ttozNd18LWlZYM_QVXvp5xDcs,2829
67
67
  nkululeko/feat_extract/feats_spectra.py,sha256=5Pex8awIQC3cjQRHSu4NQFmg4quamG0RL3V3Yd0pJHs,3670
@@ -71,21 +71,21 @@ nkululeko/feat_extract/feats_trill.py,sha256=K2ahhdpwpjgg3WZS1POg3UMP2U44i8cLZZv
71
71
  nkululeko/feat_extract/feats_wav2vec2.py,sha256=XyxD4NcrF4VFWSeHkXCKWdEOdr8VMzgVUz8N4mwhdyo,5248
72
72
  nkululeko/feat_extract/feats_wavlm.py,sha256=O9cfc39VF5aPJRRATKb37pHT4W11i2cu5O1mY9LOjIA,4755
73
73
  nkululeko/feat_extract/feats_whisper.py,sha256=0N7Vj65OVi2PNoB_NrDjWT5lP6xZNKxFOZZIoxkJvcA,4533
74
- nkululeko/feat_extract/featureset.py,sha256=ll7tyKAdr--TDShyOYJg0FB4I9NqBq0Ni1k_kUJ-2Vw,1541
75
- nkululeko/feat_extract/feinberg_praat.py,sha256=EP9pMALjlKdiYInLQdrZ7MmE499Mq-ISRCgqbqL3Rxc,21304
74
+ nkululeko/feat_extract/featureset.py,sha256=WV4Lm2VXNZlEDOUaS2e3KyId-LP8bOX0jnhWnRtJqfY,1613
75
+ nkululeko/feat_extract/feinberg_praat.py,sha256=_8MwVikn0vjcyv1ygjScfjIJijOr_IN-o2ZQW1VVZtg,21310
76
76
  nkululeko/losses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  nkululeko/losses/loss_ccc.py,sha256=NOK0y0fxKUnU161B5geap6Fmn8QzoPl2MqtPiV8IuJE,976
78
78
  nkululeko/losses/loss_softf1loss.py,sha256=5gW-PuiqeAZcRgfwjueIOQtMokOjZWgQnVIv59HKTCo,1309
79
79
  nkululeko/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- nkululeko/models/model.py,sha256=JXrd0fbU0JhTxUDrs0kOEHF9rtPJBxBeO6zcrHAzk8k,12475
80
+ nkululeko/models/model.py,sha256=LpoJOj1LEFrxpK8WQOfusPBeQfBUnPtAANOKBJoQ8Iw,13010
81
81
  nkululeko/models/model_bayes.py,sha256=WJFZ8wFKwWATz6MhmjeZIi1Pal1viU549WL_PjXDSy8,406
82
- nkululeko/models/model_cnn.py,sha256=NreR2LrKMyBYHyIJEL6wm3UQ4mA5HleZfpUyA5wNYpA,10629
82
+ nkululeko/models/model_cnn.py,sha256=-VTKi9aiI5ubn7-kTQCFkgh1CpPOYEiiHvlvP_zsgAQ,10573
83
83
  nkululeko/models/model_gmm.py,sha256=m1ONBql-T0La8Cv0awB7lPUG-kgbygoWmbuqzDzmj-Y,1337
84
84
  nkululeko/models/model_knn.py,sha256=KlnrJfwiVnmXZrAaYGFrKA2f5sznvTzSJQ8-5etOP0k,599
85
85
  nkululeko/models/model_knn_reg.py,sha256=j7YFfVm6xOR2d9yBYdQiwwqYfqkX0JynX_qLCvkr1fk,610
86
86
  nkululeko/models/model_lin_reg.py,sha256=0D7mSnSwK82lNWDMwHYRyq3FmGa6y-DHDGg4qUe85q4,422
87
- nkululeko/models/model_mlp.py,sha256=VE0CI19qMyRbI-THDkMeJ7JbWf4z7CmZ4MMs1FIQgtM,10557
88
- nkululeko/models/model_mlp_regression.py,sha256=7oK2zQhhCegSqiBUe6eU7Av8MJ_DPLA9skixJcHaVfg,10232
87
+ nkululeko/models/model_mlp.py,sha256=CaR0PCRBcdCo_hhC5r9Q6IbVIApvtoRVrUdZsgzbx1M,10516
88
+ nkululeko/models/model_mlp_regression.py,sha256=YMHMWRlWL6iL8HdYe6rTAoAW6GwHBx3PDvysCZYj5tQ,10186
89
89
  nkululeko/models/model_svm.py,sha256=AzWksBRbIdpUuMbDnAh_YAXebewR5POj9AkB9VC40pI,1010
90
90
  nkululeko/models/model_svr.py,sha256=_YZeksqB3eBENGlg3g9RwYFlk9rQQ-XCeNBKLlGGVoE,725
91
91
  nkululeko/models/model_tree.py,sha256=rf16faUm4o2LJgkoYpeY998b8DQIvXZ73_m1IS3TnnE,417
@@ -106,9 +106,9 @@ nkululeko/segmenting/seg_silero.py,sha256=lLytS38KzARS17omwv8VBw-zz60RVSXGSvZ5Ev
106
106
  nkululeko/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  nkululeko/utils/files.py,sha256=UiGAtZRWYjHSvlmPaTMtzyNNGE6qaLaxQkybctS7iRM,4021
108
108
  nkululeko/utils/stats.py,sha256=eC9dMO-by6CDnGLHDBQu-2B4-BudZNJ0nnWGhKYdUMA,2968
109
- nkululeko/utils/util.py,sha256=KMxPzb0HN3XuNzAd7Kn3M3Nq91-0sDrAAEBgDKryCdo,16688
110
- nkululeko-0.88.10.dist-info/LICENSE,sha256=0zGP5B_W35yAcGfHPS18Q2B8UhvLRY3dQq1MhpsJU_U,1076
111
- nkululeko-0.88.10.dist-info/METADATA,sha256=EABiFmDYNwCs_0_5L2XlGqcdxA4bfZhWKmL1ZkiNQC8,40364
112
- nkululeko-0.88.10.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
113
- nkululeko-0.88.10.dist-info/top_level.txt,sha256=DPFNNSHPjUeVKj44dVANAjuVGRCC3MusJ08lc2a8xFA,10
114
- nkululeko-0.88.10.dist-info/RECORD,,
109
+ nkululeko/utils/util.py,sha256=CY45KIhpYsfYa9qXyqOYErjhS2fjYfaVzRTfOZZKzaQ,16709
110
+ nkululeko-0.88.12.dist-info/LICENSE,sha256=0zGP5B_W35yAcGfHPS18Q2B8UhvLRY3dQq1MhpsJU_U,1076
111
+ nkululeko-0.88.12.dist-info/METADATA,sha256=46Vj4H4faGcNqc-dMMpyDo_BB9q6yczjYaPpKtsXgNc,40494
112
+ nkululeko-0.88.12.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
113
+ nkululeko-0.88.12.dist-info/top_level.txt,sha256=DPFNNSHPjUeVKj44dVANAjuVGRCC3MusJ08lc2a8xFA,10
114
+ nkululeko-0.88.12.dist-info/RECORD,,