nkululeko 0.79.5__tar.gz → 0.80.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.79.5 → nkululeko-0.80.1}/CHANGELOG.md +11 -1
- {nkululeko-0.79.5/nkululeko.egg-info → nkululeko-0.80.1}/PKG-INFO +27 -11
- {nkululeko-0.79.5 → nkululeko-0.80.1}/README.md +15 -9
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/constants.py +1 -1
- nkululeko-0.80.1/nkululeko/demo_feats.py +71 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/experiment.py +1 -1
- nkululeko-0.80.1/nkululeko/feat_extract/feats_import.py +43 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/multidb.py +14 -9
- {nkululeko-0.79.5 → nkululeko-0.80.1/nkululeko.egg-info}/PKG-INFO +27 -11
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko.egg-info/SOURCES.txt +1 -0
- nkululeko-0.79.5/nkululeko/feat_extract/feats_import.py +0 -45
- {nkululeko-0.79.5 → nkululeko-0.80.1}/LICENSE +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/aesdd/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/androids/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/androids_orig/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/androids_test/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/ased/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/asvp-esd/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/baved/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/cafe/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/clac/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/cmu-mosei/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/crema-d/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/demos/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/ekorpus/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emns/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emofilm/convert_to_16k.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emofilm/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emorynlp/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emov-db/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emovo/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/emozionalmente/create.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/enterface/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/esd/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/gerparas/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/iemocap/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/jl/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/jtes/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/meld/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/mesd/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/mess/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/mlendsnd/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/msp-improv/process_database2.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/msp-podcast/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/oreau2/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/portuguese/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/ravdess/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/ravdess/process_database_speaker.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/savee/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/shemo/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/subesco/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/tess/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/thorsten-emotional/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/urdu/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/data/vivae/process_database.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/docs/source/conf.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/demo_best_model.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/multiple_exeriments/do_experiments.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/multiple_exeriments/parse_nkulu.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/my_experiment.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/my_experiment_local.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/meta/demos/plot_faster_anim.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/aug_train.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augment.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augmenting/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augmenting/augmenter.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augmenting/randomsplicer.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augmenting/randomsplicing.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/augmenting/resampler.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_age.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_arousal.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_dominance.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_gender.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_mos.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_pesq.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_sdr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_snr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_stoi.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/ap_valence.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/autopredict/estimate_snr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/cacheddataset.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/data/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/data/dataset.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/data/dataset_csv.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/demo.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/demo_predictor.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/explore.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/export.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_agender.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_agender_agender.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_analyser.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_audmodel.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_audmodel_dim.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_clap.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_hubert.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_mld.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_mos.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_opensmile.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_oxbow.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_praat.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_snr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_spectra.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_spkrec.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_squim.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_trill.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_wav2vec2.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feats_wavlm.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/featureset.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feat_extract/feinberg_praat.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/feature_extractor.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/file_checker.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/filter_data.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/glob_conf.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/losses/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/losses/loss_ccc.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/losses/loss_softf1loss.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/modelrunner.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_bayes.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_cnn.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_gmm.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_knn.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_knn_reg.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_lin_reg.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_mlp.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_mlp_regression.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_svm.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_svr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_tree.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_tree_reg.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_xgb.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/models/model_xgr.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/nkululeko.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/plots.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/predict.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporter.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporting/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporting/defines.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporting/latex_writer.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporting/report.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/reporting/report_item.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/resample.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/result.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/runmanager.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/scaler.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/segment.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/segmenting/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/segmenting/seg_inaspeechsegmenter.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/segmenting/seg_silero.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/syllable_nuclei.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/test.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/test_predictor.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/utils/__init__.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/utils/files.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/utils/stats.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko/utils/util.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko.egg-info/dependency_links.txt +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko.egg-info/requires.txt +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/nkululeko.egg-info/top_level.txt +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/pyproject.toml +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/setup.cfg +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/setup.py +0 -0
- {nkululeko-0.79.5 → nkululeko-0.80.1}/venv/bin/activate_this.py +0 -0
@@ -1,6 +1,16 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
Version 0.80.1
|
5
|
+
--------------
|
6
|
+
* added support for string value in import_features
|
7
|
+
+ added support for multiple extra training databases when doing multi-db experiments
|
8
|
+
|
9
|
+
Version 0.80.0
|
10
|
+
--------------
|
11
|
+
* fixed bug no feature import
|
12
|
+
* add support for multiple import feature files
|
13
|
+
|
4
14
|
Version 0.79.5
|
5
15
|
--------------
|
6
16
|
* fixed bug on demo without in- or output
|
@@ -8,7 +18,7 @@ Version 0.79.5
|
|
8
18
|
|
9
19
|
Version 0.79.4
|
10
20
|
--------------
|
11
|
-
* added
|
21
|
+
* added functionality in demo for regression
|
12
22
|
|
13
23
|
Version 0.79.3
|
14
24
|
--------------
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nkululeko
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.80.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
|
@@ -188,16 +188,22 @@ combine_per_speaker = mode
|
|
188
188
|
Read the [Hello World example](#hello-world-example) for initial usage with Emo-DB dataset.
|
189
189
|
|
190
190
|
Here is an overview of the interfaces/modules:
|
191
|
+
|
192
|
+
All of them take *--config <my_config.ini>* as an argument.
|
193
|
+
|
191
194
|
* **nkululeko.nkululeko**: do machine learning experiments combining features and learners
|
192
|
-
* **nkululeko.multidb**: do multiple experiments, comparing several databases cross and in itself
|
193
|
-
* **nkululeko.demo**: demo the current best model on the command line
|
194
|
-
*
|
195
|
-
*
|
196
|
-
*
|
197
|
-
* **nkululeko.
|
198
|
-
* **nkululeko.
|
199
|
-
* **nkululeko.
|
200
|
-
* **nkululeko.
|
195
|
+
* **nkululeko.multidb**: do [multiple experiments](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/), comparing several databases cross and in itself
|
196
|
+
* **nkululeko.demo**: [demo the current best model](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) on the command line
|
197
|
+
* *--list* (optional) list of input files
|
198
|
+
* *--file* (optional) name of input file
|
199
|
+
* *--outfile* (optional) name of CSV file for output
|
200
|
+
* **nkululeko.test**: predict a [given data set](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) with the current best model
|
201
|
+
* **nkululeko.explore**: perform [data exploration](http://blog.syntheticspeech.de/2023/05/11/nkululeko-how-to-visualize-your-data-distribution/)
|
202
|
+
* **nkululeko.augment**: [augment](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) the current training data
|
203
|
+
* **nkululeko.aug_train**: augment the current training data [and do a training](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) including this data
|
204
|
+
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
205
|
+
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
206
|
+
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
201
207
|
|
202
208
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
203
209
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -317,6 +323,16 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
|
|
317
323
|
Changelog
|
318
324
|
=========
|
319
325
|
|
326
|
+
Version 0.80.1
|
327
|
+
--------------
|
328
|
+
* added support for string value in import_features
|
329
|
+
+ added support for multiple extra training databases when doing multi-db experiments
|
330
|
+
|
331
|
+
Version 0.80.0
|
332
|
+
--------------
|
333
|
+
* fixed bug no feature import
|
334
|
+
* add support for multiple import feature files
|
335
|
+
|
320
336
|
Version 0.79.5
|
321
337
|
--------------
|
322
338
|
* fixed bug on demo without in- or output
|
@@ -324,7 +340,7 @@ Version 0.79.5
|
|
324
340
|
|
325
341
|
Version 0.79.4
|
326
342
|
--------------
|
327
|
-
* added
|
343
|
+
* added functionality in demo for regression
|
328
344
|
|
329
345
|
Version 0.79.3
|
330
346
|
--------------
|
@@ -142,16 +142,22 @@ combine_per_speaker = mode
|
|
142
142
|
Read the [Hello World example](#hello-world-example) for initial usage with Emo-DB dataset.
|
143
143
|
|
144
144
|
Here is an overview of the interfaces/modules:
|
145
|
+
|
146
|
+
All of them take *--config <my_config.ini>* as an argument.
|
147
|
+
|
145
148
|
* **nkululeko.nkululeko**: do machine learning experiments combining features and learners
|
146
|
-
* **nkululeko.multidb**: do multiple experiments, comparing several databases cross and in itself
|
147
|
-
* **nkululeko.demo**: demo the current best model on the command line
|
148
|
-
*
|
149
|
-
*
|
150
|
-
*
|
151
|
-
* **nkululeko.
|
152
|
-
* **nkululeko.
|
153
|
-
* **nkululeko.
|
154
|
-
* **nkululeko.
|
149
|
+
* **nkululeko.multidb**: do [multiple experiments](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/), comparing several databases cross and in itself
|
150
|
+
* **nkululeko.demo**: [demo the current best model](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) on the command line
|
151
|
+
* *--list* (optional) list of input files
|
152
|
+
* *--file* (optional) name of input file
|
153
|
+
* *--outfile* (optional) name of CSV file for output
|
154
|
+
* **nkululeko.test**: predict a [given data set](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) with the current best model
|
155
|
+
* **nkululeko.explore**: perform [data exploration](http://blog.syntheticspeech.de/2023/05/11/nkululeko-how-to-visualize-your-data-distribution/)
|
156
|
+
* **nkululeko.augment**: [augment](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) the current training data
|
157
|
+
* **nkululeko.aug_train**: augment the current training data [and do a training](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) including this data
|
158
|
+
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
159
|
+
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
160
|
+
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
155
161
|
|
156
162
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
157
163
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -1,2 +1,2 @@
|
|
1
|
-
VERSION="0.
|
1
|
+
VERSION="0.80.1"
|
2
2
|
SAMPLING_RATE = 16000
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# demo_feats.py
|
2
|
+
# Test some features extracted
|
3
|
+
|
4
|
+
from nkululeko.experiment import Experiment
|
5
|
+
import configparser
|
6
|
+
from nkululeko.utils.util import Util
|
7
|
+
from nkululeko.constants import VERSION
|
8
|
+
import argparse
|
9
|
+
import os
|
10
|
+
|
11
|
+
|
12
|
+
def main(src_dir):
|
13
|
+
parser = argparse.ArgumentParser(description="Call the nkululeko framework.")
|
14
|
+
parser.add_argument("--config", default="exp.ini", help="The base configuration")
|
15
|
+
parser.add_argument(
|
16
|
+
"--file", help="A file that should be processed (16kHz mono wav)"
|
17
|
+
)
|
18
|
+
parser.add_argument(
|
19
|
+
"--list",
|
20
|
+
help=(
|
21
|
+
"A file with a list of files, one per line, that should be"
|
22
|
+
" processed (16kHz mono wav)"
|
23
|
+
),
|
24
|
+
nargs="?",
|
25
|
+
default=None,
|
26
|
+
)
|
27
|
+
parser.add_argument(
|
28
|
+
"--outfile",
|
29
|
+
help=("A filename to store the results in CSV"),
|
30
|
+
nargs="?",
|
31
|
+
default=None,
|
32
|
+
)
|
33
|
+
args = parser.parse_args()
|
34
|
+
if args.config is not None:
|
35
|
+
config_file = args.config
|
36
|
+
else:
|
37
|
+
config_file = f"{src_dir}/exp.ini"
|
38
|
+
|
39
|
+
# test if the configuration file exists
|
40
|
+
if not os.path.isfile(config_file):
|
41
|
+
print(f"ERROR: no such file: {config_file}")
|
42
|
+
exit()
|
43
|
+
|
44
|
+
# load one configuration per experiment
|
45
|
+
config = configparser.ConfigParser()
|
46
|
+
config.read(config_file)
|
47
|
+
|
48
|
+
# create a new experiment
|
49
|
+
expr = Experiment(config)
|
50
|
+
module = "demo_feats"
|
51
|
+
expr.set_module(module)
|
52
|
+
util = Util(module)
|
53
|
+
util.debug(
|
54
|
+
f"running {expr.name} from config {config_file}, nkululeko version"
|
55
|
+
f" {VERSION}"
|
56
|
+
)
|
57
|
+
|
58
|
+
if args.file is None and args.list is None:
|
59
|
+
expr.demo_feats(None, False, args.outfile)
|
60
|
+
else:
|
61
|
+
if args.list is None:
|
62
|
+
expr.demo_feats(args.file, False, args.outfile)
|
63
|
+
else:
|
64
|
+
expr.demo_feats(args.list, True, args.outfile)
|
65
|
+
|
66
|
+
print("DONE")
|
67
|
+
|
68
|
+
|
69
|
+
if __name__ == "__main__":
|
70
|
+
cwd = os.path.dirname(os.path.abspath(__file__))
|
71
|
+
main(cwd) # use this if you want to state the config file path on command line
|
@@ -357,7 +357,7 @@ class Experiment:
|
|
357
357
|
self.df_train = self.df_train[
|
358
358
|
self.df_train.index.isin(self.feats_train.index)
|
359
359
|
]
|
360
|
-
self.util.warn(f"
|
360
|
+
self.util.warn(f"new train labels shape: {self.df_train.shape[0]}")
|
361
361
|
if self.feats_test.shape[0] < self.df_test.shape[0]:
|
362
362
|
self.util.warn(
|
363
363
|
f"test feats ({self.feats_test.shape[0]}) != test labels"
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# feats_import.py
|
2
|
+
|
3
|
+
import os
|
4
|
+
import ast
|
5
|
+
import audformat
|
6
|
+
import pandas as pd
|
7
|
+
from nkululeko.utils.util import Util
|
8
|
+
from nkululeko.feat_extract.featureset import Featureset
|
9
|
+
|
10
|
+
|
11
|
+
class Importset(Featureset):
|
12
|
+
"""Class to import features that have been compiled elsewhere"""
|
13
|
+
|
14
|
+
def __init__(self, name, data_df):
|
15
|
+
super().__init__(name, data_df)
|
16
|
+
|
17
|
+
def extract(self):
|
18
|
+
"""Import the features."""
|
19
|
+
self.util.debug(f"importing features for {self.name}")
|
20
|
+
try:
|
21
|
+
feat_import_files = self.util.config_val("FEATS", "import_file", False)
|
22
|
+
feat_import_files = ast.literal_eval(feat_import_files)
|
23
|
+
except ValueError as e:
|
24
|
+
self.util.error(
|
25
|
+
"feature type == import needs import_file = ['file1', 'filex']"
|
26
|
+
)
|
27
|
+
except SyntaxError as se:
|
28
|
+
if type(feat_import_files) == str:
|
29
|
+
feat_import_files = [feat_import_files]
|
30
|
+
else:
|
31
|
+
self.util.error(f"import_file is wrong: {feat_import_files}")
|
32
|
+
|
33
|
+
feat_df = pd.DataFrame()
|
34
|
+
for feat_import_file in feat_import_files:
|
35
|
+
if not os.path.isfile(feat_import_file):
|
36
|
+
self.util.error(f"no import file: {feat_import_file}")
|
37
|
+
df = audformat.utils.read_csv(feat_import_file)
|
38
|
+
df = df[df.index.isin(self.data_df.index)]
|
39
|
+
feat_df = pd.concat([feat_df, df])
|
40
|
+
if feat_df.shape[0] == 0:
|
41
|
+
self.util.error(f"Imported features for data set {self.name} not found!")
|
42
|
+
# and assign to be the "official" feature set
|
43
|
+
self.df = feat_df
|
@@ -9,7 +9,6 @@ import matplotlib.pyplot as plt
|
|
9
9
|
import matplotlib.cm as cm
|
10
10
|
import numpy as np
|
11
11
|
import os
|
12
|
-
import audeer
|
13
12
|
from nkululeko.experiment import Experiment
|
14
13
|
import configparser
|
15
14
|
from nkululeko.utils.util import Util
|
@@ -41,9 +40,9 @@ def main(src_dir):
|
|
41
40
|
last_epochs = np.zeros(dim * dim).reshape([dim, dim])
|
42
41
|
# check if some data should be added to training
|
43
42
|
try:
|
44
|
-
|
43
|
+
extra_trains = config["CROSSDB"]["train_extra"]
|
45
44
|
except KeyError:
|
46
|
-
|
45
|
+
extra_trains = False
|
47
46
|
|
48
47
|
for i in range(dim):
|
49
48
|
for j in range(dim):
|
@@ -54,9 +53,12 @@ def main(src_dir):
|
|
54
53
|
if i == j:
|
55
54
|
dataset = datasets[i]
|
56
55
|
print(f"running {dataset}")
|
57
|
-
if
|
58
|
-
|
59
|
-
config["DATA"][
|
56
|
+
if extra_trains:
|
57
|
+
extra_trains_1 = extra_trains.removeprefix("[").removesuffix("]")
|
58
|
+
config["DATA"]["databases"] = f"['{dataset}', {extra_trains_1}]"
|
59
|
+
extra_trains_2 = ast.literal_eval(extra_trains)
|
60
|
+
for extra_train in extra_trains_2:
|
61
|
+
config["DATA"][f"{extra_train}.split_strategy"] = "train"
|
60
62
|
else:
|
61
63
|
config["DATA"]["databases"] = f"['{dataset}']"
|
62
64
|
config["EXP"]["name"] = dataset
|
@@ -64,13 +66,16 @@ def main(src_dir):
|
|
64
66
|
train = datasets[i]
|
65
67
|
test = datasets[j]
|
66
68
|
print(f"running train: {train}, test: {test}")
|
67
|
-
if
|
69
|
+
if extra_trains:
|
70
|
+
extra_trains_1 = extra_trains.removeprefix("[").removesuffix("]")
|
68
71
|
config["DATA"][
|
69
72
|
"databases"
|
70
|
-
] = f"['{train}', '{test}',
|
73
|
+
] = f"['{train}', '{test}', {extra_trains_1}]"
|
71
74
|
config["DATA"][f"{test}.split_strategy"] = "test"
|
72
75
|
config["DATA"][f"{train}.split_strategy"] = "train"
|
73
|
-
|
76
|
+
extra_trains_2 = ast.literal_eval(extra_trains)
|
77
|
+
for extra_train in extra_trains_2:
|
78
|
+
config["DATA"][f"{extra_train}.split_strategy"] = "train"
|
74
79
|
else:
|
75
80
|
config["DATA"]["databases"] = f"['{train}', '{test}']"
|
76
81
|
config["DATA"][f"{test}.split_strategy"] = "test"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nkululeko
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.80.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
|
@@ -188,16 +188,22 @@ combine_per_speaker = mode
|
|
188
188
|
Read the [Hello World example](#hello-world-example) for initial usage with Emo-DB dataset.
|
189
189
|
|
190
190
|
Here is an overview of the interfaces/modules:
|
191
|
+
|
192
|
+
All of them take *--config <my_config.ini>* as an argument.
|
193
|
+
|
191
194
|
* **nkululeko.nkululeko**: do machine learning experiments combining features and learners
|
192
|
-
* **nkululeko.multidb**: do multiple experiments, comparing several databases cross and in itself
|
193
|
-
* **nkululeko.demo**: demo the current best model on the command line
|
194
|
-
*
|
195
|
-
*
|
196
|
-
*
|
197
|
-
* **nkululeko.
|
198
|
-
* **nkululeko.
|
199
|
-
* **nkululeko.
|
200
|
-
* **nkululeko.
|
195
|
+
* **nkululeko.multidb**: do [multiple experiments](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/), comparing several databases cross and in itself
|
196
|
+
* **nkululeko.demo**: [demo the current best model](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) on the command line
|
197
|
+
* *--list* (optional) list of input files
|
198
|
+
* *--file* (optional) name of input file
|
199
|
+
* *--outfile* (optional) name of CSV file for output
|
200
|
+
* **nkululeko.test**: predict a [given data set](http://blog.syntheticspeech.de/2022/09/01/nkululeko-how-to-evaluate-a-test-set-with-a-given-best-model/) with the current best model
|
201
|
+
* **nkululeko.explore**: perform [data exploration](http://blog.syntheticspeech.de/2023/05/11/nkululeko-how-to-visualize-your-data-distribution/)
|
202
|
+
* **nkululeko.augment**: [augment](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) the current training data
|
203
|
+
* **nkululeko.aug_train**: augment the current training data [and do a training](http://blog.syntheticspeech.de/2023/03/13/nkululeko-how-to-augment-the-training-set/) including this data
|
204
|
+
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
205
|
+
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
206
|
+
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
201
207
|
|
202
208
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
203
209
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -317,6 +323,16 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
|
|
317
323
|
Changelog
|
318
324
|
=========
|
319
325
|
|
326
|
+
Version 0.80.1
|
327
|
+
--------------
|
328
|
+
* added support for string value in import_features
|
329
|
+
+ added support for multiple extra training databases when doing multi-db experiments
|
330
|
+
|
331
|
+
Version 0.80.0
|
332
|
+
--------------
|
333
|
+
* fixed bug no feature import
|
334
|
+
* add support for multiple import feature files
|
335
|
+
|
320
336
|
Version 0.79.5
|
321
337
|
--------------
|
322
338
|
* fixed bug on demo without in- or output
|
@@ -324,7 +340,7 @@ Version 0.79.5
|
|
324
340
|
|
325
341
|
Version 0.79.4
|
326
342
|
--------------
|
327
|
-
* added
|
343
|
+
* added functionality in demo for regression
|
328
344
|
|
329
345
|
Version 0.79.3
|
330
346
|
--------------
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# feats_import.py
|
2
|
-
|
3
|
-
from nkululeko.utils.util import Util
|
4
|
-
from nkululeko.feat_extract.featureset import Featureset
|
5
|
-
import os
|
6
|
-
import pandas as pd
|
7
|
-
import audformat
|
8
|
-
|
9
|
-
|
10
|
-
class Importset(Featureset):
|
11
|
-
"""Class to import features that have been compiled elsewhere"""
|
12
|
-
|
13
|
-
def __init__(self, name, data_df):
|
14
|
-
super().__init__(name, data_df)
|
15
|
-
|
16
|
-
def extract(self):
|
17
|
-
"""Import the features or load them from disk if present."""
|
18
|
-
store = self.util.get_path("store")
|
19
|
-
storage = f"{store}{self.name}.pkl"
|
20
|
-
extract = eval(self.util.config_val("FEATS", "needs_feature_extraction", False))
|
21
|
-
no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False"))
|
22
|
-
feat_import_file = self.util.config_val("FEATS", "import_file", False)
|
23
|
-
if not os.path.isfile(feat_import_file):
|
24
|
-
self.util.warn(f"no import file: {feat_import_file}")
|
25
|
-
if extract or no_reuse or not os.path.isfile(storage):
|
26
|
-
self.util.debug(f"importing features for {self.name}")
|
27
|
-
# df = pd.read_csv(feat_import_file, sep=',', header=0,
|
28
|
-
# index_col=['file', 'start', 'end'])
|
29
|
-
df = audformat.utils.read_csv(feat_import_file)
|
30
|
-
# scale features before use?
|
31
|
-
# from sklearn.preprocessing import StandardScaler
|
32
|
-
# scaler = StandardScaler()
|
33
|
-
# scaled_features = scaler.fit_transform(df.values)
|
34
|
-
# df = pd.DataFrame(scaled_features, index=df.index, columns=df.columns)
|
35
|
-
# use only the rows from the data index
|
36
|
-
# df = self.data_df.join(df).drop(columns=self.data_df.columns)
|
37
|
-
df = df.loc[self.data_df.index]
|
38
|
-
# df = pd.concat([self.data_df, df], axis=1, join="inner").drop(columns=self.data_df.columns)
|
39
|
-
# in any case, store to disk for later use
|
40
|
-
df.to_pickle(storage)
|
41
|
-
# and assign to be the "official" feature set
|
42
|
-
self.df = df
|
43
|
-
else:
|
44
|
-
self.util.debug("reusing imported features.")
|
45
|
-
self.df = pd.read_pickle(storage)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|