sonusai 0.20.3__py3-none-any.whl → 1.0.2__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.
- sonusai/__init__.py +16 -3
- sonusai/audiofe.py +241 -77
- sonusai/calc_metric_spenh.py +71 -73
- sonusai/config/__init__.py +3 -0
- sonusai/config/config.py +61 -0
- sonusai/config/config.yml +20 -0
- sonusai/config/constants.py +8 -0
- sonusai/constants.py +11 -0
- sonusai/data/genmixdb.yml +21 -36
- sonusai/{mixture/datatypes.py → datatypes.py} +91 -130
- sonusai/deprecated/plot.py +4 -5
- sonusai/doc/doc.py +4 -4
- sonusai/doc.py +11 -4
- sonusai/genft.py +43 -45
- sonusai/genmetrics.py +25 -19
- sonusai/genmix.py +54 -82
- sonusai/genmixdb.py +88 -264
- sonusai/ir_metric.py +30 -34
- sonusai/lsdb.py +41 -48
- sonusai/main.py +15 -22
- sonusai/metrics/calc_audio_stats.py +4 -293
- sonusai/metrics/calc_class_weights.py +4 -4
- sonusai/metrics/calc_optimal_thresholds.py +8 -5
- sonusai/metrics/calc_pesq.py +2 -2
- sonusai/metrics/calc_segsnr_f.py +4 -4
- sonusai/metrics/calc_speech.py +25 -13
- sonusai/metrics/class_summary.py +7 -7
- sonusai/metrics/confusion_matrix_summary.py +5 -5
- sonusai/metrics/one_hot.py +4 -4
- sonusai/metrics/snr_summary.py +7 -7
- sonusai/metrics_summary.py +38 -45
- sonusai/mixture/__init__.py +4 -104
- sonusai/mixture/audio.py +10 -39
- sonusai/mixture/class_balancing.py +103 -0
- sonusai/mixture/config.py +251 -271
- sonusai/mixture/constants.py +35 -39
- sonusai/mixture/data_io.py +25 -36
- sonusai/mixture/db_datatypes.py +58 -22
- sonusai/mixture/effects.py +386 -0
- sonusai/mixture/feature.py +7 -11
- sonusai/mixture/generation.py +478 -628
- sonusai/mixture/helpers.py +82 -184
- sonusai/mixture/ir_delay.py +3 -4
- sonusai/mixture/ir_effects.py +77 -0
- sonusai/mixture/log_duration_and_sizes.py +6 -12
- sonusai/mixture/mixdb.py +910 -729
- sonusai/mixture/pad_audio.py +35 -0
- sonusai/mixture/resample.py +7 -0
- sonusai/mixture/sox_effects.py +195 -0
- sonusai/mixture/sox_help.py +650 -0
- sonusai/mixture/spectral_mask.py +2 -2
- sonusai/mixture/truth.py +17 -15
- sonusai/mixture/truth_functions/crm.py +12 -12
- sonusai/mixture/truth_functions/energy.py +22 -22
- sonusai/mixture/truth_functions/file.py +5 -5
- sonusai/mixture/truth_functions/metadata.py +4 -4
- sonusai/mixture/truth_functions/metrics.py +4 -4
- sonusai/mixture/truth_functions/phoneme.py +3 -3
- sonusai/mixture/truth_functions/sed.py +11 -13
- sonusai/mixture/truth_functions/target.py +10 -10
- sonusai/mkwav.py +26 -29
- sonusai/onnx_predict.py +240 -88
- sonusai/queries/__init__.py +2 -2
- sonusai/queries/queries.py +38 -34
- sonusai/speech/librispeech.py +1 -1
- sonusai/speech/mcgill.py +1 -1
- sonusai/speech/timit.py +2 -2
- sonusai/summarize_metric_spenh.py +10 -17
- sonusai/utils/__init__.py +7 -1
- sonusai/utils/asl_p56.py +2 -2
- sonusai/utils/asr.py +2 -2
- sonusai/utils/asr_functions/aaware_whisper.py +4 -5
- sonusai/utils/choice.py +31 -0
- sonusai/utils/compress.py +1 -1
- sonusai/utils/dataclass_from_dict.py +19 -1
- sonusai/utils/energy_f.py +3 -3
- sonusai/utils/evaluate_random_rule.py +15 -0
- sonusai/utils/keyboard_interrupt.py +12 -0
- sonusai/utils/onnx_utils.py +3 -17
- sonusai/utils/print_mixture_details.py +21 -19
- sonusai/utils/{temp_seed.py → rand.py} +3 -3
- sonusai/utils/read_predict_data.py +2 -2
- sonusai/utils/reshape.py +3 -3
- sonusai/utils/stratified_shuffle_split.py +3 -3
- sonusai/{mixture → utils}/tokenized_shell_vars.py +1 -1
- sonusai/utils/write_audio.py +2 -2
- sonusai/vars.py +11 -4
- {sonusai-0.20.3.dist-info → sonusai-1.0.2.dist-info}/METADATA +4 -2
- sonusai-1.0.2.dist-info/RECORD +138 -0
- sonusai/mixture/augmentation.py +0 -444
- sonusai/mixture/class_count.py +0 -15
- sonusai/mixture/eq_rule_is_valid.py +0 -45
- sonusai/mixture/target_class_balancing.py +0 -107
- sonusai/mixture/targets.py +0 -175
- sonusai-0.20.3.dist-info/RECORD +0 -128
- {sonusai-0.20.3.dist-info → sonusai-1.0.2.dist-info}/WHEEL +0 -0
- {sonusai-0.20.3.dist-info → sonusai-1.0.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
from ..datatypes import EffectList
|
2
|
+
from ..datatypes import EffectedFile
|
3
|
+
from ..datatypes import File
|
4
|
+
|
5
|
+
|
6
|
+
def balance_sources(
|
7
|
+
effected_sources: list[EffectedFile],
|
8
|
+
files: list[File],
|
9
|
+
effects: list[EffectList],
|
10
|
+
class_balancing_effect: EffectList,
|
11
|
+
num_classes: int,
|
12
|
+
num_ir: int,
|
13
|
+
mixups: list[int] | None = None,
|
14
|
+
) -> tuple[list[EffectedFile], list[EffectList]]:
|
15
|
+
import math
|
16
|
+
|
17
|
+
from .augmentation import get_mixups
|
18
|
+
from .sources import get_augmented_target_ids_by_class
|
19
|
+
|
20
|
+
first_cba_id = len(effects)
|
21
|
+
|
22
|
+
if mixups is None:
|
23
|
+
mixups = get_mixups(effects)
|
24
|
+
|
25
|
+
for mixup in mixups:
|
26
|
+
if mixup == 1:
|
27
|
+
continue
|
28
|
+
|
29
|
+
effected_sources_indices_by_class = get_augmented_target_ids_by_class(
|
30
|
+
augmented_targets=effected_sources,
|
31
|
+
targets=files,
|
32
|
+
target_augmentations=effects,
|
33
|
+
mixup=mixup,
|
34
|
+
num_classes=num_classes,
|
35
|
+
)
|
36
|
+
|
37
|
+
largest = max([len(item) for item in effected_sources_indices_by_class])
|
38
|
+
largest = math.ceil(largest / mixup) * mixup
|
39
|
+
for es_indices in effected_sources_indices_by_class:
|
40
|
+
additional_effects_needed = largest - len(es_indices)
|
41
|
+
file_ids = sorted({effected_sources[at_index].file_id for at_index in es_indices})
|
42
|
+
|
43
|
+
tfi_idx = 0
|
44
|
+
for _ in range(additional_effects_needed):
|
45
|
+
file_id = file_ids[tfi_idx]
|
46
|
+
tfi_idx = (tfi_idx + 1) % len(file_ids)
|
47
|
+
effect_id, effects = _get_unused_balancing_effect(
|
48
|
+
effected_sources=effected_sources,
|
49
|
+
files=files,
|
50
|
+
effects=effects,
|
51
|
+
class_balancing_effect=class_balancing_effect,
|
52
|
+
file_id=file_id,
|
53
|
+
mixup=mixup,
|
54
|
+
num_ir=num_ir,
|
55
|
+
first_cbe_id=first_cba_id,
|
56
|
+
)
|
57
|
+
effected_sources.append(EffectedFile(file_id=file_id, effect_id=effect_id))
|
58
|
+
|
59
|
+
return effected_sources, effects
|
60
|
+
|
61
|
+
|
62
|
+
def _get_unused_balancing_effect(
|
63
|
+
effected_sources: list[EffectedFile],
|
64
|
+
files: list[File],
|
65
|
+
effects: list[EffectList],
|
66
|
+
class_balancing_effect: EffectList,
|
67
|
+
file_id: int,
|
68
|
+
mixup: int,
|
69
|
+
num_ir: int,
|
70
|
+
first_cbe_id: int,
|
71
|
+
) -> tuple[int, list[EffectList]]:
|
72
|
+
"""Get an unused balancing augmentation for a given target file index"""
|
73
|
+
from dataclasses import asdict
|
74
|
+
|
75
|
+
from .augmentation import get_augmentation_rules
|
76
|
+
|
77
|
+
balancing_augmentations = [item for item in range(len(effects)) if item >= first_cbe_id]
|
78
|
+
used_balancing_augmentations = [
|
79
|
+
effected_source.effect_id
|
80
|
+
for effected_source in effected_sources
|
81
|
+
if effected_source.file_id == file_id and effected_source.effect_id in balancing_augmentations
|
82
|
+
]
|
83
|
+
|
84
|
+
augmentation_indices = [
|
85
|
+
item
|
86
|
+
for item in balancing_augmentations
|
87
|
+
if item not in used_balancing_augmentations and effects[item].mixup == mixup
|
88
|
+
]
|
89
|
+
if len(augmentation_indices) > 0:
|
90
|
+
return augmentation_indices[0], effects
|
91
|
+
|
92
|
+
class_balancing_effect = get_class_balancing_effect(file=files[file_id], default_cbe=class_balancing_effect)
|
93
|
+
new_effect = get_augmentation_rules(rules=asdict(class_balancing_effect), num_ir=num_ir)[0]
|
94
|
+
new_effect.mixup = mixup
|
95
|
+
effects.append(new_effect)
|
96
|
+
return len(effects) - 1, effects
|
97
|
+
|
98
|
+
|
99
|
+
def get_class_balancing_effect(file: File, default_cbe: EffectList) -> EffectList:
|
100
|
+
"""Get the class balancing effect rule for the given target"""
|
101
|
+
if file.class_balancing_effect is not None:
|
102
|
+
return file.class_balancing_effect
|
103
|
+
return default_cbe
|