nkululeko 0.85.2__tar.gz → 0.86.1__tar.gz
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-0.85.2 → nkululeko-0.86.1}/CHANGELOG.md +11 -0
- {nkululeko-0.85.2/nkululeko.egg-info → nkululeko-0.86.1}/PKG-INFO +13 -1
- {nkululeko-0.85.2 → nkululeko-0.86.1}/README.md +1 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/constants.py +1 -1
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/experiment.py +33 -42
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_opensmile.py +25 -25
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/featureset.py +4 -4
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_tuned.py +157 -88
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/resample.py +32 -6
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/utils/util.py +6 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1/nkululeko.egg-info}/PKG-INFO +13 -1
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko.egg-info/SOURCES.txt +0 -1
- nkululeko-0.85.2/nkululeko/models/finetune_model.py +0 -190
- {nkululeko-0.85.2 → nkululeko-0.86.1}/LICENSE +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/aesdd/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/androids/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/androids_orig/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/androids_test/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/ased/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/asvp-esd/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/baved/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/cafe/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/clac/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/cmu-mosei/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/demos/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/ekorpus/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emns/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emofilm/convert_to_16k.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emofilm/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emorynlp/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emov-db/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emovo/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/emozionalmente/create.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/enterface/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/esd/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/gerparas/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/iemocap/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/jl/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/jtes/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/meld/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/mesd/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/mess/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/mlendsnd/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/msp-improv/process_database2.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/msp-podcast/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/oreau2/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/portuguese/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/ravdess/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/ravdess/process_database_speaker.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/savee/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/shemo/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/subesco/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/tess/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/thorsten-emotional/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/urdu/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/data/vivae/process_database.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/docs/source/conf.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/meta/demos/demo_best_model.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/meta/demos/my_experiment.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/meta/demos/my_experiment_local.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/meta/demos/plot_faster_anim.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/aug_train.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augment.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augmenting/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augmenting/augmenter.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augmenting/randomsplicer.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augmenting/randomsplicing.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/augmenting/resampler.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_age.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_arousal.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_dominance.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_gender.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_mos.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_pesq.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_sdr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_snr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_stoi.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/ap_valence.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/autopredict/estimate_snr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/cacheddataset.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/data/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/data/dataset.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/data/dataset_csv.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/demo.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/demo_feats.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/demo_predictor.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/explore.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/export.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_agender.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_agender_agender.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_analyser.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_auddim.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_audmodel.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_clap.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_hubert.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_import.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_mld.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_mos.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_oxbow.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_praat.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_snr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_spectra.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_spkrec.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_squim.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_trill.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_wav2vec2.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_wavlm.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feats_whisper.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feat_extract/feinberg_praat.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/feature_extractor.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/file_checker.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/filter_data.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/glob_conf.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/losses/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/losses/loss_ccc.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/losses/loss_softf1loss.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/modelrunner.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_bayes.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_cnn.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_gmm.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_knn.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_knn_reg.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_lin_reg.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_mlp.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_mlp_regression.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_svm.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_svr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_tree.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_tree_reg.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_xgb.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/models/model_xgr.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/multidb.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/nkuluflag.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/nkululeko.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/plots.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/predict.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/defines.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/latex_writer.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/report.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/report_item.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/reporter.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/reporting/result.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/runmanager.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/scaler.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/segment.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/segmenting/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/segmenting/seg_inaspeechsegmenter.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/segmenting/seg_silero.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/syllable_nuclei.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/test.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/test_predictor.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/test_pretrain.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/utils/__init__.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/utils/files.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko/utils/stats.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko.egg-info/dependency_links.txt +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko.egg-info/requires.txt +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/nkululeko.egg-info/top_level.txt +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/pyproject.toml +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/setup.cfg +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/setup.py +0 -0
- {nkululeko-0.85.2 → nkululeko-0.86.1}/venv/bin/activate_this.py +0 -0
@@ -1,6 +1,17 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
Version 0.86.1
|
5
|
+
--------------
|
6
|
+
* functionality to push to hub
|
7
|
+
* fixed bug that prevented wavlm finetuning
|
8
|
+
|
9
|
+
Version 0.86.0
|
10
|
+
--------------
|
11
|
+
* added regression to finetuning
|
12
|
+
* added other transformer models to finetuning
|
13
|
+
* added output the train/dev features sets actually used by the model
|
14
|
+
|
4
15
|
Version 0.85.2
|
5
16
|
--------------
|
6
17
|
* added data, and automatic task label detection
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nkululeko
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.86.1
|
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
|
@@ -256,6 +256,7 @@ There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
|
256
256
|
* [Compare several databases](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/)
|
257
257
|
* [Tweak the target variable for database comparison](http://blog.syntheticspeech.de/2024/03/13/nkululeko-how-to-tweak-the-target-variable-for-database-comparison/)
|
258
258
|
* [How to run multiple experiments in one go](http://blog.syntheticspeech.de/2022/03/28/how-to-run-multiple-experiments-in-one-go-with-nkululeko/)
|
259
|
+
* [How to finetune a transformer-model](http://blog.syntheticspeech.de/2024/05/29/nkululeko-how-to-finetune-a-transformer-model/)
|
259
260
|
|
260
261
|
### <a name="helloworld">Hello World example</a>
|
261
262
|
* NEW: [Here's a Google colab that runs this example out-of-the-box](https://colab.research.google.com/drive/1GYNBd5cdZQ1QC3Jm58qoeMaJg3UuPhjw?usp=sharing#scrollTo=4G_SjuF9xeQf), and here is the same [with Kaggle](https://www.kaggle.com/felixburk/nkululeko-hello-world-example)
|
@@ -333,6 +334,17 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
|
|
333
334
|
Changelog
|
334
335
|
=========
|
335
336
|
|
337
|
+
Version 0.86.1
|
338
|
+
--------------
|
339
|
+
* functionality to push to hub
|
340
|
+
* fixed bug that prevented wavlm finetuning
|
341
|
+
|
342
|
+
Version 0.86.0
|
343
|
+
--------------
|
344
|
+
* added regression to finetuning
|
345
|
+
* added other transformer models to finetuning
|
346
|
+
* added output the train/dev features sets actually used by the model
|
347
|
+
|
336
348
|
Version 0.85.2
|
337
349
|
--------------
|
338
350
|
* added data, and automatic task label detection
|
@@ -212,6 +212,7 @@ There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
|
212
212
|
* [Compare several databases](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/)
|
213
213
|
* [Tweak the target variable for database comparison](http://blog.syntheticspeech.de/2024/03/13/nkululeko-how-to-tweak-the-target-variable-for-database-comparison/)
|
214
214
|
* [How to run multiple experiments in one go](http://blog.syntheticspeech.de/2022/03/28/how-to-run-multiple-experiments-in-one-go-with-nkululeko/)
|
215
|
+
* [How to finetune a transformer-model](http://blog.syntheticspeech.de/2024/05/29/nkululeko-how-to-finetune-a-transformer-model/)
|
215
216
|
|
216
217
|
### <a name="helloworld">Hello World example</a>
|
217
218
|
* NEW: [Here's a Google colab that runs this example out-of-the-box](https://colab.research.google.com/drive/1GYNBd5cdZQ1QC3Jm58qoeMaJg3UuPhjw?usp=sharing#scrollTo=4G_SjuF9xeQf), and here is the same [with Kaggle](https://www.kaggle.com/felixburk/nkululeko-hello-world-example)
|
@@ -1,2 +1,2 @@
|
|
1
|
-
VERSION="0.
|
1
|
+
VERSION="0.86.1"
|
2
2
|
SAMPLING_RATE = 16000
|
@@ -30,15 +30,14 @@ from nkululeko.utils.util import Util
|
|
30
30
|
|
31
31
|
|
32
32
|
class Experiment:
|
33
|
-
"""Main class specifying an experiment"""
|
33
|
+
"""Main class specifying an experiment."""
|
34
34
|
|
35
35
|
def __init__(self, config_obj):
|
36
|
-
"""
|
37
|
-
Parameters
|
38
|
-
----------
|
39
|
-
config_obj : a config parser object that sets the experiment parameters and being set as a global object.
|
40
|
-
"""
|
36
|
+
"""Constructor.
|
41
37
|
|
38
|
+
Args:
|
39
|
+
- config_obj : a config parser object that sets the experiment parameters and being set as a global object.
|
40
|
+
"""
|
42
41
|
self.set_globals(config_obj)
|
43
42
|
self.name = glob_conf.config["EXP"]["name"]
|
44
43
|
self.root = os.path.join(glob_conf.config["EXP"]["root"], "")
|
@@ -73,8 +72,9 @@ class Experiment:
|
|
73
72
|
if self.util.config_val("REPORT", "latex", False):
|
74
73
|
self.report.export_latex()
|
75
74
|
|
76
|
-
|
77
|
-
|
75
|
+
# moved to util
|
76
|
+
# def get_name(self):
|
77
|
+
# return self.util.get_exp_name()
|
78
78
|
|
79
79
|
def set_globals(self, config_obj):
|
80
80
|
"""install a config object in the global space"""
|
@@ -109,15 +109,13 @@ class Experiment:
|
|
109
109
|
# print keys/column
|
110
110
|
dbs = ",".join(list(self.datasets.keys()))
|
111
111
|
labels = self.util.config_val("DATA", "labels", False)
|
112
|
-
auto_labels = list(
|
113
|
-
next(iter(self.datasets.values())).df[self.target].unique()
|
114
|
-
)
|
112
|
+
auto_labels = list(next(iter(self.datasets.values())).df[self.target].unique())
|
115
113
|
if labels:
|
116
114
|
self.labels = ast.literal_eval(labels)
|
117
115
|
self.util.debug(f"Target labels (from config): {labels}")
|
118
116
|
else:
|
119
117
|
self.labels = auto_labels
|
120
|
-
|
118
|
+
self.util.debug(f"Target labels (from database): {auto_labels}")
|
121
119
|
glob_conf.set_labels(self.labels)
|
122
120
|
self.util.debug(f"loaded databases {dbs}")
|
123
121
|
|
@@ -160,8 +158,7 @@ class Experiment:
|
|
160
158
|
data.split()
|
161
159
|
data.prepare_labels()
|
162
160
|
self.df_test = pd.concat(
|
163
|
-
[self.df_test, self.util.make_segmented_index(
|
164
|
-
data.df_test)]
|
161
|
+
[self.df_test, self.util.make_segmented_index(data.df_test)]
|
165
162
|
)
|
166
163
|
self.df_test.is_labeled = data.is_labeled
|
167
164
|
self.df_test.got_gender = self.got_gender
|
@@ -262,8 +259,7 @@ class Experiment:
|
|
262
259
|
test_cats = self.df_test[self.target].unique()
|
263
260
|
else:
|
264
261
|
# if there is no target, copy a dummy label
|
265
|
-
self.df_test = self._add_random_target(
|
266
|
-
self.df_test).astype("str")
|
262
|
+
self.df_test = self._add_random_target(self.df_test).astype("str")
|
267
263
|
train_cats = self.df_train[self.target].unique()
|
268
264
|
# print(f"df_train: {pd.DataFrame(self.df_train[self.target])}")
|
269
265
|
# print(f"train_cats with target {self.target}: {train_cats}")
|
@@ -271,8 +267,7 @@ class Experiment:
|
|
271
267
|
if type(test_cats) == np.ndarray:
|
272
268
|
self.util.debug(f"Categories test (nd.array): {test_cats}")
|
273
269
|
else:
|
274
|
-
self.util.debug(
|
275
|
-
f"Categories test (list): {list(test_cats)}")
|
270
|
+
self.util.debug(f"Categories test (list): {list(test_cats)}")
|
276
271
|
if type(train_cats) == np.ndarray:
|
277
272
|
self.util.debug(f"Categories train (nd.array): {train_cats}")
|
278
273
|
else:
|
@@ -295,8 +290,7 @@ class Experiment:
|
|
295
290
|
|
296
291
|
target_factor = self.util.config_val("DATA", "target_divide_by", False)
|
297
292
|
if target_factor:
|
298
|
-
self.df_test[self.target] = self.df_test[self.target] /
|
299
|
-
float(target_factor)
|
293
|
+
self.df_test[self.target] = self.df_test[self.target] / float(target_factor)
|
300
294
|
self.df_train[self.target] = self.df_train[self.target] / float(
|
301
295
|
target_factor
|
302
296
|
)
|
@@ -319,16 +313,14 @@ class Experiment:
|
|
319
313
|
def plot_distribution(self, df_labels):
|
320
314
|
"""Plot the distribution of samples and speaker per target class and biological sex"""
|
321
315
|
plot = Plots()
|
322
|
-
sample_selection = self.util.config_val(
|
323
|
-
"EXPL", "sample_selection", "all")
|
316
|
+
sample_selection = self.util.config_val("EXPL", "sample_selection", "all")
|
324
317
|
plot.plot_distributions(df_labels)
|
325
318
|
if self.got_speaker:
|
326
319
|
plot.plot_distributions_speaker(df_labels)
|
327
320
|
|
328
321
|
def extract_test_feats(self):
|
329
322
|
self.feats_test = pd.DataFrame()
|
330
|
-
feats_name = "_".join(ast.literal_eval(
|
331
|
-
glob_conf.config["DATA"]["tests"]))
|
323
|
+
feats_name = "_".join(ast.literal_eval(glob_conf.config["DATA"]["tests"]))
|
332
324
|
feats_types = self.util.config_val_list("FEATS", "type", ["os"])
|
333
325
|
self.feature_extractor = FeatureExtractor(
|
334
326
|
self.df_test, feats_types, feats_name, "test"
|
@@ -345,8 +337,7 @@ class Experiment:
|
|
345
337
|
|
346
338
|
"""
|
347
339
|
df_train, df_test = self.df_train, self.df_test
|
348
|
-
feats_name = "_".join(ast.literal_eval(
|
349
|
-
glob_conf.config["DATA"]["databases"]))
|
340
|
+
feats_name = "_".join(ast.literal_eval(glob_conf.config["DATA"]["databases"]))
|
350
341
|
self.feats_test, self.feats_train = pd.DataFrame(), pd.DataFrame()
|
351
342
|
feats_types = self.util.config_val_list("FEATS", "type", [])
|
352
343
|
# for some models no features are needed
|
@@ -380,20 +371,22 @@ class Experiment:
|
|
380
371
|
f"test feats ({self.feats_test.shape[0]}) != test labels"
|
381
372
|
f" ({self.df_test.shape[0]})"
|
382
373
|
)
|
383
|
-
self.df_test = self.df_test[self.df_test.index.isin(
|
384
|
-
|
385
|
-
self.util.warn(f"mew test labels shape: {self.df_test.shape[0]}")
|
374
|
+
self.df_test = self.df_test[self.df_test.index.isin(self.feats_test.index)]
|
375
|
+
self.util.warn(f"new test labels shape: {self.df_test.shape[0]}")
|
386
376
|
|
387
377
|
self._check_scale()
|
378
|
+
# store = self.util.get_path("store")
|
379
|
+
# store_format = self.util.config_val("FEATS", "store_format", "pkl")
|
380
|
+
# storage = f"{store}test_feats.{store_format}"
|
381
|
+
# self.util.write_store(self.feats_test, storage, store_format)
|
382
|
+
# storage = f"{store}train_feats.{store_format}"
|
383
|
+
# self.util.write_store(self.feats_train, storage, store_format)
|
388
384
|
|
389
385
|
def augment(self):
|
390
|
-
"""
|
391
|
-
Augment the selected samples
|
392
|
-
"""
|
386
|
+
"""Augment the selected samples."""
|
393
387
|
from nkululeko.augmenting.augmenter import Augmenter
|
394
388
|
|
395
|
-
sample_selection = self.util.config_val(
|
396
|
-
"AUGMENT", "sample_selection", "all")
|
389
|
+
sample_selection = self.util.config_val("AUGMENT", "sample_selection", "all")
|
397
390
|
if sample_selection == "all":
|
398
391
|
df = pd.concat([self.df_train, self.df_test])
|
399
392
|
elif sample_selection == "train":
|
@@ -488,8 +481,7 @@ class Experiment:
|
|
488
481
|
"""
|
489
482
|
from nkululeko.augmenting.randomsplicer import Randomsplicer
|
490
483
|
|
491
|
-
sample_selection = self.util.config_val(
|
492
|
-
"AUGMENT", "sample_selection", "all")
|
484
|
+
sample_selection = self.util.config_val("AUGMENT", "sample_selection", "all")
|
493
485
|
if sample_selection == "all":
|
494
486
|
df = pd.concat([self.df_train, self.df_test])
|
495
487
|
elif sample_selection == "train":
|
@@ -510,8 +502,7 @@ class Experiment:
|
|
510
502
|
plot_feats = eval(
|
511
503
|
self.util.config_val("EXPL", "feature_distributions", "False")
|
512
504
|
)
|
513
|
-
sample_selection = self.util.config_val(
|
514
|
-
"EXPL", "sample_selection", "all")
|
505
|
+
sample_selection = self.util.config_val("EXPL", "sample_selection", "all")
|
515
506
|
# get the data labels
|
516
507
|
if sample_selection == "all":
|
517
508
|
df_labels = pd.concat([self.df_train, self.df_test])
|
@@ -574,8 +565,7 @@ class Experiment:
|
|
574
565
|
for scat_target in scat_targets:
|
575
566
|
if self.util.is_categorical(df_labels[scat_target]):
|
576
567
|
for scatter in scatters:
|
577
|
-
plots.scatter_plot(
|
578
|
-
df_feats, df_labels, scat_target, scatter)
|
568
|
+
plots.scatter_plot(df_feats, df_labels, scat_target, scatter)
|
579
569
|
else:
|
580
570
|
self.util.debug(
|
581
571
|
f"{self.name}: binning continuous variable to categories"
|
@@ -590,6 +580,8 @@ class Experiment:
|
|
590
580
|
)
|
591
581
|
|
592
582
|
def _check_scale(self):
|
583
|
+
self.util.save_to_store(self.feats_train, "feats_train")
|
584
|
+
self.util.save_to_store(self.feats_test, "feats_test")
|
593
585
|
scale_feats = self.util.config_val("FEATS", "scale", False)
|
594
586
|
# print the scale
|
595
587
|
self.util.debug(f"scaler: {scale_feats}")
|
@@ -664,8 +656,7 @@ class Experiment:
|
|
664
656
|
preds = best.preds
|
665
657
|
speakers = self.df_test.speaker.values
|
666
658
|
print(f"{len(truths)} {len(preds)} {len(speakers) }")
|
667
|
-
df = pd.DataFrame(
|
668
|
-
data={"truth": truths, "pred": preds, "speaker": speakers})
|
659
|
+
df = pd.DataFrame(data={"truth": truths, "pred": preds, "speaker": speakers})
|
669
660
|
plot_name = "result_combined_per_speaker"
|
670
661
|
self.util.debug(
|
671
662
|
f"plotting speaker combination ({function}) confusion matrix to"
|
@@ -65,28 +65,28 @@ class Opensmileset(Featureset):
|
|
65
65
|
feats = smile.process_signal(signal, sr)
|
66
66
|
return feats.to_numpy()
|
67
67
|
|
68
|
-
def filter(self):
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
68
|
+
# def filter(self):
|
69
|
+
# # use only the features that are indexed in the target dataframes
|
70
|
+
# self.df = self.df[self.df.index.isin(self.data_df.index)]
|
71
|
+
# try:
|
72
|
+
# # use only some features
|
73
|
+
# selected_features = ast.literal_eval(
|
74
|
+
# glob_conf.config["FEATS"]["os.features"]
|
75
|
+
# )
|
76
|
+
# self.util.debug(f"selecting features from opensmile: {selected_features}")
|
77
|
+
# sel_feats_df = pd.DataFrame()
|
78
|
+
# hit = False
|
79
|
+
# for feat in selected_features:
|
80
|
+
# try:
|
81
|
+
# sel_feats_df[feat] = self.df[feat]
|
82
|
+
# hit = True
|
83
|
+
# except KeyError:
|
84
|
+
# pass
|
85
|
+
# if hit:
|
86
|
+
# self.df = sel_feats_df
|
87
|
+
# self.util.debug(
|
88
|
+
# "new feats shape after selecting opensmile features:"
|
89
|
+
# f" {self.df.shape}"
|
90
|
+
# )
|
91
|
+
# except KeyError:
|
92
|
+
# pass
|
@@ -15,7 +15,7 @@ class Featureset:
|
|
15
15
|
self.name = name
|
16
16
|
self.data_df = data_df
|
17
17
|
self.util = Util("featureset")
|
18
|
-
self.
|
18
|
+
self.feats_type = feats_type
|
19
19
|
|
20
20
|
def extract(self):
|
21
21
|
pass
|
@@ -25,8 +25,7 @@ class Featureset:
|
|
25
25
|
self.df = self.df[self.df.index.isin(self.data_df.index)]
|
26
26
|
try:
|
27
27
|
# use only some features
|
28
|
-
selected_features = ast.literal_eval(
|
29
|
-
glob_conf.config["FEATS"]["features"])
|
28
|
+
selected_features = ast.literal_eval(glob_conf.config["FEATS"]["features"])
|
30
29
|
self.util.debug(f"selecting features: {selected_features}")
|
31
30
|
sel_feats_df = pd.DataFrame()
|
32
31
|
hit = False
|
@@ -35,11 +34,12 @@ class Featureset:
|
|
35
34
|
sel_feats_df[feat] = self.df[feat]
|
36
35
|
hit = True
|
37
36
|
except KeyError:
|
37
|
+
self.util.warn(f"non existent feature in {self.feats_type}: {feat}")
|
38
38
|
pass
|
39
39
|
if hit:
|
40
40
|
self.df = sel_feats_df
|
41
41
|
self.util.debug(
|
42
|
-
f"new feats shape after selecting features: {self.df.shape}"
|
42
|
+
f"new feats shape after selecting features for {self.feats_type}: {self.df.shape}"
|
43
43
|
)
|
44
44
|
except KeyError:
|
45
45
|
pass
|