sonusai 0.20.3__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sonusai/__init__.py +16 -3
- sonusai/audiofe.py +240 -76
- 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 +23 -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 +5 -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 +484 -611
- 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 +931 -669
- 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.1.dist-info}/METADATA +4 -2
- sonusai-1.0.1.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.1.dist-info}/WHEEL +0 -0
- {sonusai-0.20.3.dist-info → sonusai-1.0.1.dist-info}/entry_points.txt +0 -0
sonusai/utils/__init__.py
CHANGED
@@ -12,6 +12,8 @@ from .audio_devices import get_input_devices
|
|
12
12
|
from .braced_glob import braced_glob
|
13
13
|
from .braced_glob import braced_iglob
|
14
14
|
from .calculate_input_shape import calculate_input_shape
|
15
|
+
from .choice import RandomChoice
|
16
|
+
from .choice import SequentialChoice
|
15
17
|
from .compress import power_compress
|
16
18
|
from .compress import power_uncompress
|
17
19
|
from .convert_string_to_number import convert_string_to_number
|
@@ -24,10 +26,12 @@ from .docstring import add_commands_to_docstring
|
|
24
26
|
from .docstring import trim_docstring
|
25
27
|
from .energy_f import compute_energy_f
|
26
28
|
from .engineering_number import EngineeringNumber
|
29
|
+
from .evaluate_random_rule import evaluate_random_rule
|
27
30
|
from .get_frames_per_batch import get_frames_per_batch
|
28
31
|
from .get_label_names import get_label_names
|
29
32
|
from .grouper import grouper
|
30
33
|
from .human_readable_size import human_readable_size
|
34
|
+
from .keyboard_interrupt import register_keyboard_interrupt
|
31
35
|
from .load_object import load_object
|
32
36
|
from .max_text_width import max_text_width
|
33
37
|
from .model_utils import import_module
|
@@ -41,6 +45,7 @@ from .parallel import track
|
|
41
45
|
from .path_info import PathInfo
|
42
46
|
from .print_mixture_details import print_class_count
|
43
47
|
from .print_mixture_details import print_mixture_details
|
48
|
+
from .rand import seed_context
|
44
49
|
from .ranges import consolidate_range
|
45
50
|
from .ranges import expand_range
|
46
51
|
from .read_predict_data import read_predict_data
|
@@ -54,6 +59,7 @@ from .stacked_complex import stacked_complex_imag
|
|
54
59
|
from .stacked_complex import stacked_complex_real
|
55
60
|
from .stacked_complex import unstack_complex
|
56
61
|
from .stratified_shuffle_split import stratified_shuffle_split_mixid
|
57
|
-
from .
|
62
|
+
from .tokenized_shell_vars import tokenized_expand
|
63
|
+
from .tokenized_shell_vars import tokenized_replace
|
58
64
|
from .write_audio import write_audio
|
59
65
|
from .yes_or_no import yes_or_no
|
sonusai/utils/asl_p56.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
from
|
1
|
+
from ..datatypes import AudioT
|
2
2
|
|
3
3
|
|
4
4
|
def asl_p56(audio: AudioT) -> float:
|
@@ -9,7 +9,7 @@ def asl_p56(audio: AudioT) -> float:
|
|
9
9
|
import numpy as np
|
10
10
|
import scipy.signal as signal
|
11
11
|
|
12
|
-
from
|
12
|
+
from ..constants import SAMPLE_RATE
|
13
13
|
|
14
14
|
eps = np.finfo(np.float32).eps
|
15
15
|
|
sonusai/utils/asr.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from collections.abc import Callable
|
2
2
|
from dataclasses import dataclass
|
3
3
|
|
4
|
-
from
|
4
|
+
from ..datatypes import AudioT
|
5
5
|
|
6
6
|
|
7
7
|
@dataclass(frozen=True)
|
@@ -62,7 +62,7 @@ def calc_asr(audio: AudioT | str, engine: str, **config) -> ASRResult:
|
|
62
62
|
|
63
63
|
import numpy as np
|
64
64
|
|
65
|
-
from
|
65
|
+
from ..mixture.audio import read_audio
|
66
66
|
|
67
67
|
if not isinstance(audio, np.ndarray):
|
68
68
|
audio = copy(read_audio(audio, config.get("use_cache", True)))
|
@@ -1,5 +1,5 @@
|
|
1
|
-
from
|
2
|
-
from
|
1
|
+
from ...datatypes import AudioT
|
2
|
+
from ..asr import ASRResult
|
3
3
|
|
4
4
|
|
5
5
|
def aaware_whisper_validate(**_config) -> None:
|
@@ -14,9 +14,8 @@ def aaware_whisper(audio: AudioT, **_config) -> ASRResult:
|
|
14
14
|
|
15
15
|
import requests
|
16
16
|
|
17
|
-
from
|
18
|
-
from
|
19
|
-
from sonusai.utils import write_audio
|
17
|
+
from ..numeric_conversion import float_to_int16
|
18
|
+
from ..write_audio import write_audio
|
20
19
|
|
21
20
|
url = getenv("AAWARE_WHISPER_URL")
|
22
21
|
if url is None:
|
sonusai/utils/choice.py
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
|
4
|
+
class RandomChoice:
|
5
|
+
def __init__(self, data: list, repetition: bool = False):
|
6
|
+
self.data = data
|
7
|
+
self.repeat = repetition
|
8
|
+
self.choices: list = []
|
9
|
+
|
10
|
+
def next(self) -> Any:
|
11
|
+
from random import choice
|
12
|
+
from random import sample
|
13
|
+
|
14
|
+
if self.repeat:
|
15
|
+
return choice(self.data) # noqa: S311
|
16
|
+
|
17
|
+
if not self.choices:
|
18
|
+
self.choices = sample(self.data, len(self.data))
|
19
|
+
|
20
|
+
return self.choices.pop()
|
21
|
+
|
22
|
+
|
23
|
+
class SequentialChoice:
|
24
|
+
def __init__(self, data: list):
|
25
|
+
self.data = data
|
26
|
+
self.choices: list = []
|
27
|
+
|
28
|
+
def next(self) -> Any:
|
29
|
+
if not self.choices:
|
30
|
+
self.choices = self.data.copy()
|
31
|
+
return self.choices.pop()
|
sonusai/utils/compress.py
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
|
1
|
+
from collections.abc import Sequence
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
|
5
|
+
def dataclass_from_dict(klass, dikt: dict) -> Any:
|
6
|
+
"""Convert dictionary to dataclass."""
|
7
|
+
try:
|
8
|
+
field_types = klass.__annotations__
|
9
|
+
return klass(**{f: dataclass_from_dict(field_types[f], dikt[f]) for f in dikt})
|
10
|
+
except AttributeError:
|
11
|
+
return dikt
|
12
|
+
|
13
|
+
|
14
|
+
def list_dataclass_from_dict(klass, dikt: Sequence[dict]) -> list[Any]:
|
15
|
+
"""Convert list of dictionary to list of dataclass."""
|
16
|
+
return [dataclass_from_dict(klass.__args__[0], f) for f in dikt]
|
17
|
+
|
18
|
+
|
19
|
+
def original_dataclass_from_dict(klass, dikt):
|
2
20
|
"""Convert dictionary to dataclass."""
|
3
21
|
try:
|
4
22
|
field_types = klass.__annotations__
|
sonusai/utils/energy_f.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
from pyaaware import ForwardTransform
|
2
2
|
|
3
|
-
from
|
4
|
-
from
|
5
|
-
from
|
3
|
+
from ..datatypes import AudioF
|
4
|
+
from ..datatypes import AudioT
|
5
|
+
from ..datatypes import EnergyF
|
6
6
|
|
7
7
|
|
8
8
|
def compute_energy_f(
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def evaluate_random_rule(rule: str) -> str | float:
|
2
|
+
"""Evaluate 'rand' directive
|
3
|
+
|
4
|
+
:param rule: Rule
|
5
|
+
:return: Resolved value
|
6
|
+
"""
|
7
|
+
import re
|
8
|
+
from random import uniform
|
9
|
+
|
10
|
+
rand_pattern = re.compile(r"rand\(([-+]?(\d+(\.\d*)?|\.\d+)),\s*([-+]?(\d+(\.\d*)?|\.\d+))\)")
|
11
|
+
|
12
|
+
def rand_repl(m):
|
13
|
+
return f"{uniform(float(m.group(1)), float(m.group(4))):.2f}" # noqa: S311
|
14
|
+
|
15
|
+
return eval(re.sub(rand_pattern, rand_repl, rule)) # noqa: S307
|
@@ -0,0 +1,12 @@
|
|
1
|
+
def register_keyboard_interrupt() -> None:
|
2
|
+
import signal
|
3
|
+
|
4
|
+
def signal_handler(_sig, _frame):
|
5
|
+
import sys
|
6
|
+
|
7
|
+
from sonusai import logger
|
8
|
+
|
9
|
+
logger.info("Canceled due to keyboard interrupt")
|
10
|
+
sys.exit(1)
|
11
|
+
|
12
|
+
signal.signal(signal.SIGINT, signal_handler)
|
sonusai/utils/onnx_utils.py
CHANGED
@@ -6,14 +6,7 @@ from onnxruntime import InferenceSession
|
|
6
6
|
from onnxruntime import NodeArg # pyright: ignore [reportAttributeAccessIssue]
|
7
7
|
from onnxruntime import SessionOptions # pyright: ignore [reportAttributeAccessIssue]
|
8
8
|
|
9
|
-
REQUIRED_HPARAMS = (
|
10
|
-
"feature",
|
11
|
-
"batch_size",
|
12
|
-
"timesteps",
|
13
|
-
"flatten",
|
14
|
-
"add1ch",
|
15
|
-
"truth_mutex",
|
16
|
-
)
|
9
|
+
REQUIRED_HPARAMS = ("feature", "batch_size", "timesteps")
|
17
10
|
|
18
11
|
|
19
12
|
def _extract_shapes(io: list[ValueInfoProto]) -> list[list[int] | str]:
|
@@ -45,9 +38,7 @@ def _extract_shapes(io: list[ValueInfoProto]) -> list[list[int] | str]:
|
|
45
38
|
return shapes
|
46
39
|
|
47
40
|
|
48
|
-
def get_and_check_inputs(
|
49
|
-
model: ModelProto,
|
50
|
-
) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
|
41
|
+
def get_and_check_inputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
|
51
42
|
from sonusai import logger
|
52
43
|
|
53
44
|
# ignore initializer inputs (only seen in older ONNX < v1.5)
|
@@ -63,9 +54,7 @@ def get_and_check_inputs(
|
|
63
54
|
return inputs, shapes
|
64
55
|
|
65
56
|
|
66
|
-
def get_and_check_outputs(
|
67
|
-
model: ModelProto,
|
68
|
-
) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
|
57
|
+
def get_and_check_outputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
|
69
58
|
from sonusai import logger
|
70
59
|
|
71
60
|
outputs = list(model.graph.output)
|
@@ -88,9 +77,6 @@ def add_sonusai_metadata(model: ModelProto, hparams: dict) -> ModelProto:
|
|
88
77
|
feature: Model feature type
|
89
78
|
batch_size: Model batch size
|
90
79
|
timesteps: Size of timestep dimension (0 for no dimension)
|
91
|
-
flatten: Model input feature data is flattened (stride + bins combined)
|
92
|
-
add1ch: Model input has channel dimension
|
93
|
-
truth_mutex: Model label output is mutually exclusive
|
94
80
|
"""
|
95
81
|
from sonusai import logger
|
96
82
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from collections.abc import Callable
|
2
2
|
|
3
|
-
from
|
4
|
-
from
|
3
|
+
from ..datatypes import ClassCount
|
4
|
+
from ..mixture.mixdb import MixtureDatabase
|
5
5
|
|
6
6
|
|
7
7
|
def print_mixture_details(
|
@@ -12,8 +12,8 @@ def print_mixture_details(
|
|
12
12
|
) -> None:
|
13
13
|
import numpy as np
|
14
14
|
|
15
|
-
from
|
16
|
-
from
|
15
|
+
from ..constants import SAMPLE_RATE
|
16
|
+
from ..utils.seconds_to_hms import seconds_to_hms
|
17
17
|
|
18
18
|
if mixid is not None:
|
19
19
|
if 0 < mixid >= mixdb.num_mixtures:
|
@@ -26,23 +26,25 @@ def print_mixture_details(
|
|
26
26
|
noise_file = mixdb.noise_file(mixture.noise.file_id)
|
27
27
|
for t_idx, target_file in enumerate(target_files):
|
28
28
|
print_fn(f" Target {t_idx}")
|
29
|
-
print_fn(f'
|
30
|
-
print_fn(f'
|
29
|
+
print_fn(f"{' Name':{desc_len}} {target_file.name}")
|
30
|
+
print_fn(f"{' Duration':{desc_len}} {seconds_to_hms(target_file.duration)}")
|
31
31
|
for truth_name, truth_config in target_file.truth_configs.items():
|
32
32
|
print_fn(f" Truth config: '{truth_name}'")
|
33
|
-
print_fn(f'
|
34
|
-
print_fn(f'
|
35
|
-
print_fn(f'
|
36
|
-
print_fn(f'
|
37
|
-
print_fn(f'
|
38
|
-
print_fn(f'
|
39
|
-
print_fn(f'
|
33
|
+
print_fn(f"{' Function':{desc_len}} {truth_config.function}")
|
34
|
+
print_fn(f"{' Stride reduction':{desc_len}} {truth_config.stride_reduction}")
|
35
|
+
print_fn(f"{' Config':{desc_len}} {truth_config.config}")
|
36
|
+
print_fn(f"{' Augmentation':{desc_len}} {target_augmentations[t_idx]}")
|
37
|
+
print_fn(f"{' Samples':{desc_len}} {mixture.samples}")
|
38
|
+
print_fn(f"{' Feature frames':{desc_len}} {mixdb.mixture_feature_frames(mixid)}")
|
39
|
+
print_fn(f"{' Noise file':{desc_len}} {noise_file.name}")
|
40
40
|
noise_offset_percent = int(np.round(100 * mixture.noise_offset / float(noise_file.duration * SAMPLE_RATE)))
|
41
|
-
print_fn(f'
|
42
|
-
print_fn(f'
|
43
|
-
print_fn(
|
44
|
-
|
45
|
-
|
41
|
+
print_fn(f"{' Noise offset':{desc_len}} {mixture.noise_offset} samples ({noise_offset_percent}%)")
|
42
|
+
print_fn(f"{' SNR':{desc_len}} {mixture.snr} dB{' (random)' if mixture.snr.is_random else ''}")
|
43
|
+
print_fn(
|
44
|
+
f"{' Target gain':{desc_len}} {[target.gain if not mixture.is_noise_only else 0 for target in mixture.targets]}"
|
45
|
+
)
|
46
|
+
print_fn(f"{' Target SNR gain':{desc_len}} {mixture.target_snr_gain}")
|
47
|
+
print_fn(f"{' Noise SNR gain':{desc_len}} {mixture.noise_snr_gain}")
|
46
48
|
print_fn("")
|
47
49
|
|
48
50
|
|
@@ -52,7 +54,7 @@ def print_class_count(
|
|
52
54
|
print_fn: Callable = print,
|
53
55
|
all_class_counts: bool = False,
|
54
56
|
) -> None:
|
55
|
-
from
|
57
|
+
from ..utils.max_text_width import max_text_width
|
56
58
|
|
57
59
|
print_fn("Class count:")
|
58
60
|
idx_len = max_text_width(len(class_count))
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import numpy as np
|
2
2
|
|
3
|
-
from
|
3
|
+
from ..datatypes import Predict
|
4
4
|
|
5
5
|
|
6
6
|
def read_predict_data(filename: str) -> Predict:
|
7
7
|
"""Read predict data from given HDF5 file and return it."""
|
8
8
|
import h5py
|
9
9
|
|
10
|
-
from
|
10
|
+
from .. import logger
|
11
11
|
|
12
12
|
logger.debug(f"Reading prediction data from {filename}")
|
13
13
|
with h5py.File(filename, "r") as f:
|
sonusai/utils/reshape.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import numpy as np
|
2
2
|
|
3
|
-
from
|
4
|
-
from
|
5
|
-
from
|
3
|
+
from ..datatypes import Feature
|
4
|
+
from ..datatypes import Predict
|
5
|
+
from ..datatypes import Truth
|
6
6
|
|
7
7
|
|
8
8
|
def get_input_shape(feature: Feature) -> tuple[int, ...]:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import numpy as np
|
2
2
|
|
3
|
-
from
|
3
|
+
from ..mixture.mixdb import MixtureDatabase
|
4
4
|
|
5
5
|
|
6
6
|
def stratified_shuffle_split_mixid(
|
@@ -35,8 +35,8 @@ def stratified_shuffle_split_mixid(
|
|
35
35
|
import random
|
36
36
|
from copy import deepcopy
|
37
37
|
|
38
|
-
from
|
39
|
-
from
|
38
|
+
from .. import logger
|
39
|
+
from ..mixture.class_count import get_class_count_from_mixids
|
40
40
|
|
41
41
|
if vsplit < 0 or vsplit > 1:
|
42
42
|
raise ValueError("vsplit must be between 0 and 1")
|
@@ -21,7 +21,7 @@ def tokenized_expand(name: str | bytes | Path) -> tuple[str, dict[str, str]]:
|
|
21
21
|
import os
|
22
22
|
import string
|
23
23
|
|
24
|
-
from
|
24
|
+
from ..constants import DEFAULT_NOISE
|
25
25
|
|
26
26
|
os.environ["default_noise"] = str(DEFAULT_NOISE) # noqa: SIM112
|
27
27
|
|
sonusai/utils/write_audio.py
CHANGED
sonusai/vars.py
CHANGED
@@ -13,15 +13,15 @@ List custom SonusAI variables.
|
|
13
13
|
def main() -> None:
|
14
14
|
from docopt import docopt
|
15
15
|
|
16
|
-
import
|
16
|
+
from sonusai import __version__ as sai_version
|
17
17
|
from sonusai.utils import trim_docstring
|
18
18
|
|
19
|
-
docopt(trim_docstring(__doc__), version=
|
19
|
+
docopt(trim_docstring(__doc__), version=sai_version, options_first=True)
|
20
20
|
|
21
21
|
from os import environ
|
22
22
|
from os import getenv
|
23
23
|
|
24
|
-
from sonusai.
|
24
|
+
from sonusai.constants import DEFAULT_NOISE
|
25
25
|
|
26
26
|
print("Custom SonusAI variables:")
|
27
27
|
print("")
|
@@ -37,4 +37,11 @@ def main() -> None:
|
|
37
37
|
|
38
38
|
|
39
39
|
if __name__ == "__main__":
|
40
|
-
|
40
|
+
from sonusai import exception_handler
|
41
|
+
from sonusai.utils import register_keyboard_interrupt
|
42
|
+
|
43
|
+
register_keyboard_interrupt()
|
44
|
+
try:
|
45
|
+
main()
|
46
|
+
except Exception as e:
|
47
|
+
exception_handler(e)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: sonusai
|
3
|
-
Version: 0.
|
3
|
+
Version: 1.0.1
|
4
4
|
Summary: Framework for building deep neural network models for sound, speech, and voice AI
|
5
5
|
Home-page: https://aaware.com
|
6
6
|
License: GPL-3.0-only
|
@@ -25,9 +25,10 @@ Requires-Dist: onnxruntime (>=1.19.2,<2.0.0)
|
|
25
25
|
Requires-Dist: paho-mqtt (>=2.1.0,<3.0.0)
|
26
26
|
Requires-Dist: pandas (>=2.2.3,<3.0.0)
|
27
27
|
Requires-Dist: pesq (>=0.0.4,<0.0.5)
|
28
|
+
Requires-Dist: pgzip (>=0.3.5,<0.4.0)
|
28
29
|
Requires-Dist: praatio (>=6.2.0,<7.0.0)
|
29
30
|
Requires-Dist: psutil (>=6.0.0,<7.0.0)
|
30
|
-
Requires-Dist: pyaaware (>=
|
31
|
+
Requires-Dist: pyaaware (>=2.0.0,<3.0.0)
|
31
32
|
Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
|
32
33
|
Requires-Dist: pydub (>=0.25.1,<0.26.0)
|
33
34
|
Requires-Dist: pystoi (>=0.4.1,<0.5.0)
|
@@ -35,6 +36,7 @@ Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
|
35
36
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
36
37
|
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
37
38
|
Requires-Dist: samplerate (>=0.2.1,<0.3.0)
|
39
|
+
Requires-Dist: sh (>=2.2.2,<3.0.0)
|
38
40
|
Requires-Dist: soundfile (>=0.12.1,<0.13.0)
|
39
41
|
Requires-Dist: sox (>=1.5.0,<2.0.0)
|
40
42
|
Requires-Dist: torch (>=2.2,<2.3)
|
@@ -0,0 +1,138 @@
|
|
1
|
+
sonusai/__init__.py,sha256=7kXYJuI8EPKezlFD7djImNolS1JMyyltgq_vqlDUCek,3261
|
2
|
+
sonusai/aawscd_probwrite.py,sha256=QZLMQrmPr3OjZ06buyYDwlnk9YPCpyr4KHkBjPsiqjU,3700
|
3
|
+
sonusai/audiofe.py,sha256=RPS5VJ1ckNQ1qeFx0eAjTslYDCdZZ_xv5DSBTIKrX7Y,19446
|
4
|
+
sonusai/calc_metric_spenh.py,sha256=0Md6hRFUH9lGnsvoydqne99O7Gi0ieG9vMU_1PnASBg,50019
|
5
|
+
sonusai/config/__init__.py,sha256=NeXdBQiuRKIm77pK9WHaxkdst9-jwhX1IDrHvpZecpI,52
|
6
|
+
sonusai/config/config.py,sha256=nM1W7dQXBWMdMLrgh3o7_cEItztFf1UTW-4faM0hIqY,1692
|
7
|
+
sonusai/config/config.yml,sha256=9y8wWXemU8tnvm_O21treyCpZF85QzokHsHQ8yl6IfE,283
|
8
|
+
sonusai/config/constants.py,sha256=npf0q3mfrq1-lCRG-CCBSpRed84nH5_1IaLMCZmpfU4,285
|
9
|
+
sonusai/constants.py,sha256=ESbZZpe_W7WTpGUBDKcPRpPEhyRsdb_AejpEM2GpqaQ,281
|
10
|
+
sonusai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
+
sonusai/data/genmixdb.yml,sha256=4913_7pFRDI008dzDRi4fn-qs_M9IrA7C_qmcuDtKww,847
|
12
|
+
sonusai/data/silero_vad_v5.1.jit,sha256=hcSOHw7LYE5dKiaPPM-5EtT36TWs3IavWj_FsK6nspo,2269612
|
13
|
+
sonusai/data/silero_vad_v5.1.onnx,sha256=JiOilT9v89LB5hdAxs23FoEzR5smff7xFKSjzFvdeI8,2327524
|
14
|
+
sonusai/data/speech_ma01_01.wav,sha256=PK0vMKg-NR6rPE3KouxHGF6PKXnJCr7AwjMqfu98LUA,76644
|
15
|
+
sonusai/data/whitenoise.wav,sha256=I2umov0m34y56F9IsIBi1XtE76ZeZaSKDf70cJRe3pI,1920044
|
16
|
+
sonusai/datatypes.py,sha256=ji5RwhdxP9E0keexHbUJoWQDRzvonigt5cPd8umx13Y,9861
|
17
|
+
sonusai/deprecated/gentcst.py,sha256=nKbHy3aHreHqA-XnLQOzOApS8RuTNUFqnx52a8I5zLQ,19921
|
18
|
+
sonusai/deprecated/plot.py,sha256=ZzOP4b_7cotArSxbTDDDbhc7hj1BFMzooeZ20ppKneg,17430
|
19
|
+
sonusai/deprecated/tplot.py,sha256=0p238DvTaP4oU9y-dp0JdLaTV4TKrooAwbx7zdz_QAc,14641
|
20
|
+
sonusai/doc/__init__.py,sha256=KyQ26Um0RM8A3GYsb_tbFH64RwpoAw6lja2f_moUWas,33
|
21
|
+
sonusai/doc/doc.py,sha256=vyEfiUNd--F14Eel-u1EY4mfvHUXJrGrV3xKKExUiC4,19272
|
22
|
+
sonusai/doc.py,sha256=ZgFSSI56oNDb-yC3xi-RHMClMjryR2VrgGyi3ggX8gM,1098
|
23
|
+
sonusai/genft.py,sha256=jGjtjQQEuPunROkoDOYZ7gdyZEa09EMCVhpHrkBZ7A0,5571
|
24
|
+
sonusai/genmetrics.py,sha256=EZgf0Nw2ib_3VX0FxfT3eVzvV7S3CjUIz-u33mJoHAg,6065
|
25
|
+
sonusai/genmix.py,sha256=U62GPgejGfnDfRgXUosmnVVWvTV07sg46JQEIew0nPg,5744
|
26
|
+
sonusai/genmixdb.py,sha256=-GsH7qoWXlmQSDoCd_BLWhs3oKsvsBgK3c6JrhJOg20,10984
|
27
|
+
sonusai/ir_metric.py,sha256=nxS_mARPSZG5Y0G3L8HysOnkPj4v-RGxAxAVBYe-gJI,19600
|
28
|
+
sonusai/lsdb.py,sha256=86t6PpsyardRa6VcSJ-KyU1NiTmlg59VUlcSTptJbn0,5078
|
29
|
+
sonusai/main.py,sha256=72feJv5XEVJE_CQatmNIL1VD9ca-Mo0QNDbXxLrHrbQ,2619
|
30
|
+
sonusai/metrics/__init__.py,sha256=ssV6JEK_oklRSocsp6HMcG-GtJvV8IkRQtdKhHHmwU8,878
|
31
|
+
sonusai/metrics/calc_audio_stats.py,sha256=tIfTa40UdYCkj999kUghWafwnFBqFtJxB5yZhVp1YpA,1244
|
32
|
+
sonusai/metrics/calc_class_weights.py,sha256=uF1jeFz73l5nSk6SQ-xkBGbrgvAvX_MKUA_Det2KAEM,3609
|
33
|
+
sonusai/metrics/calc_optimal_thresholds.py,sha256=1bKPoqUYyHpq7lrx7hPnVXrJ5xWIewQjNG632GzKNNU,3502
|
34
|
+
sonusai/metrics/calc_pcm.py,sha256=yBQV9UJ1GK5f4c_8TNABMtZR-xyStKJCsSTT0FQGa50,1886
|
35
|
+
sonusai/metrics/calc_pesq.py,sha256=pWNbZXgw7oqPYaVRfvTFmxSzBgagIKe9auiwcgfE2wc,930
|
36
|
+
sonusai/metrics/calc_phase_distance.py,sha256=MFuBtGXb5qfQvRVciJ0Soz1w0GMSeJLBJud-aK4Loow,1870
|
37
|
+
sonusai/metrics/calc_sa_sdr.py,sha256=IdCzlQ_w94A3eK42t-gy_DrFN_tziwfDjTU6-WKuCFs,2531
|
38
|
+
sonusai/metrics/calc_sample_weights.py,sha256=0O2EH1-FKlCa0HFgKPUF1BJiknR1hCH7zLbXnoXH7Ag,945
|
39
|
+
sonusai/metrics/calc_segsnr_f.py,sha256=yLqUt--8osVgCNAkopbDZsldlVJ6a5AZEggarN8d3-g,2867
|
40
|
+
sonusai/metrics/calc_speech.py,sha256=bFiWtKz_Fuu4F1kdWGmZ3qZ_LdoSI3pj0ziXZKxXE3U,14828
|
41
|
+
sonusai/metrics/calc_wer.py,sha256=1MQYMx8ldHeodtJEtGibvDKhvSaGe6DBmZV4L8qOMgg,2362
|
42
|
+
sonusai/metrics/calc_wsdr.py,sha256=vcALY-zuhyThRa1QMz2qW8L9kSBc2v32gV9u8bV7VaM,2556
|
43
|
+
sonusai/metrics/class_summary.py,sha256=mQbMxQ8EtFIN7S2h7A4Dk0X4XF_CIxKk3W8zZMmpfcw,2801
|
44
|
+
sonusai/metrics/confusion_matrix_summary.py,sha256=lhd8TyHVMC03khX85h_D75XElmawx56KkqpX3X2O2gQ,3133
|
45
|
+
sonusai/metrics/one_hot.py,sha256=aKc-xYd4zWIjbmoQikIcQ6BJB1k-68XKTg8eJCacHTU,13906
|
46
|
+
sonusai/metrics/snr_summary.py,sha256=qKHctpmvGeu2cmjTG7iQPX1lvVUEtEnCIKwUGu6VrEQ,5773
|
47
|
+
sonusai/metrics_summary.py,sha256=qfQ_NAW4ilgyISRHxSuewTK-u_eo4bkjOjLNX-qd1z4,12197
|
48
|
+
sonusai/mixture/__init__.py,sha256=c_Yvc6_aqinwh1wRwNjUKUoIJM0Z6AQBqOpvOvNkxcs,1289
|
49
|
+
sonusai/mixture/audio.py,sha256=JyrVtVPLH3aTXFgyl446f5uVHxlFRa4aBaSPYaMdg80,5814
|
50
|
+
sonusai/mixture/class_balancing.py,sha256=lubicVCzxs4TMh2dZSsuIffkLkk1gmwjmwtrtQ27BVQ,3638
|
51
|
+
sonusai/mixture/config.py,sha256=2_hEndyRXxyBpGzyBFaDT9REYGoK9Q7HQy8vDqPozus,23320
|
52
|
+
sonusai/mixture/constants.py,sha256=Kklzhf5DL30yb3TpqRbvRUhcFrEXJ4s2S3D_nw4ARxM,1498
|
53
|
+
sonusai/mixture/data_io.py,sha256=DV48sFcP2Qp3NBzvcnlptQOXU3aUEcAeLuh3XOtC5jI,5341
|
54
|
+
sonusai/mixture/db_datatypes.py,sha256=VvNtbOgt5WSeSnBoVcNGC5gs_7hX_38pDUPjy5KRbG4,1471
|
55
|
+
sonusai/mixture/effects.py,sha256=4FK0Mgo-XL3lMEi3MARIt18AJVirDG2mFHM5BiRZe2I,11780
|
56
|
+
sonusai/mixture/feature.py,sha256=7GJvFhfqeqerfjy9Vq9aKt-cecgYblK0IypNNo5hgwY,2285
|
57
|
+
sonusai/mixture/generation.py,sha256=0jhp72EENa_vldM1RQL5b1WDmwqHGSZWG2Hx_Ez81LI,32778
|
58
|
+
sonusai/mixture/helpers.py,sha256=dmyHwf1C5dZjYOd11kVV16KI33CaM-dU_fyaxOrrKt8,11642
|
59
|
+
sonusai/mixture/ir_delay.py,sha256=aiC23HMWQ08-v5wORgMx1_DOJSdh4kunULqiQ-SGuMo,2026
|
60
|
+
sonusai/mixture/ir_effects.py,sha256=PqiqD4PS42-7kD6ESnsZi2a3tnKCFa4E0xqUujRBvGg,2152
|
61
|
+
sonusai/mixture/log_duration_and_sizes.py,sha256=3ekS27IMKlnxIkQAmprzmBnzHOpRjZh3d7maL2VqWQU,927
|
62
|
+
sonusai/mixture/mixdb.py,sha256=ZpgLl27UXcUKrIB3IIv5wAMQAcVa9UTbkIGY8Unh-qk,87483
|
63
|
+
sonusai/mixture/pad_audio.py,sha256=KNxVQAejA0hblLOnMJgLS6lFaeE0n3tWQ5rclaHBnIY,1015
|
64
|
+
sonusai/mixture/resample.py,sha256=jXqH6FrZ0mlhQ07XqPx88TT9elu3HHVLw7Q0a7Lh5M4,221
|
65
|
+
sonusai/mixture/sox_effects.py,sha256=tndS9qrh3eJOTUPrufyWHCt3UqjbPuh81I4Lo4MNmDg,5328
|
66
|
+
sonusai/mixture/sox_help.py,sha256=DOTMBZfYQs3bXrqra25iH92lJFhqcGe9M1am4OrKkBY,29855
|
67
|
+
sonusai/mixture/spectral_mask.py,sha256=TA3tUvv2IUqeG-XGVhJgsdDtdvfduzbNxgw4wa1aXWM,2014
|
68
|
+
sonusai/mixture/truth.py,sha256=9BMMCcW-APQJrF2LqGQIyH6sG8tj9LKmV7MCxeXv-uU,2127
|
69
|
+
sonusai/mixture/truth_functions/__init__.py,sha256=0mlOFChPnXG5BC0eKOe4n9VH17jY4iOqZFLuF6Gprdk,1505
|
70
|
+
sonusai/mixture/truth_functions/crm.py,sha256=JUo4QTxo_6NqLm3ZqbzqLs8PVPDRhB0p0TLudTWpnNs,3771
|
71
|
+
sonusai/mixture/truth_functions/energy.py,sha256=OCS_KECRcpo3iTPquYmG07C090laqnuwTBmxpGgDp6I,6707
|
72
|
+
sonusai/mixture/truth_functions/file.py,sha256=6G8ZKhejaj1Z31PkNfXNpk8E27P-F9MAcoKcUJzFgm0,1412
|
73
|
+
sonusai/mixture/truth_functions/metadata.py,sha256=Pq5BLt55tB70bnMLKgZVHmKmM-qIcdisLJ-uMkwyioo,759
|
74
|
+
sonusai/mixture/truth_functions/metrics.py,sha256=Mu6o4Hf-I0-f-dVA_egFBUvf1OBj5vtf0gdIB6irQWk,857
|
75
|
+
sonusai/mixture/truth_functions/phoneme.py,sha256=PhSev7PNDOECcdjnCwiISDZlXQwAiOdk_hD0p3eoXN4,763
|
76
|
+
sonusai/mixture/truth_functions/sed.py,sha256=bMYHLBNPfzo4K-22_iGNi2NwDAG82vNtlDioA8VqcOo,3750
|
77
|
+
sonusai/mixture/truth_functions/target.py,sha256=06zNRu4aD7TReZiaq0HQgukqOrYr1sDgYhHCTIPV1Es,4913
|
78
|
+
sonusai/mkwav.py,sha256=Za0Xdn7ixth3RaYDS7ODOpNJmxjfr9ZMZh0anJO6r4o,4191
|
79
|
+
sonusai/onnx_predict.py,sha256=8ViupBIvbWExOHMxNsrpyElzAD0WQovGZoOXy7tnESk,15772
|
80
|
+
sonusai/queries/__init__.py,sha256=gB7mgKVg8nIIgH-M1Oivoxkc3TGieOlIFzRHMwBQmrY,277
|
81
|
+
sonusai/queries/queries.py,sha256=HLbwbd7OSXKO-IH6LxKzpr98_vfNlNQXIKZSUvQ98lw,7702
|
82
|
+
sonusai/speech/__init__.py,sha256=vqAymCBPjMUSM4OZKHTai6BYwXsOBlf_G_vOhELVf8I,133
|
83
|
+
sonusai/speech/l2arctic.py,sha256=VQNKuTbmlbW0PJ7bOjx9sr0VjUYxJnxfTiPJIa4OOaA,3829
|
84
|
+
sonusai/speech/librispeech.py,sha256=8ksO65-pCrSGc-5paHL58JxMp-8rq6ygxzkCGSoXMi4,3070
|
85
|
+
sonusai/speech/mcgill.py,sha256=S_rAOTpW6YGJcbWJor3ZedpFYyoUwz93GCAbahbZPQk,1981
|
86
|
+
sonusai/speech/textgrid.py,sha256=WvsUeamKoYyXBNnNnZgug-xfTiq2Z6RnFc1u0swmqNw,2813
|
87
|
+
sonusai/speech/timit.py,sha256=73T1eOQcA1FfvpCGN8gC4iP56vt4KWcDjLnlkVgdZ9U,4099
|
88
|
+
sonusai/speech/types.py,sha256=4eKVPAktpkIrZ2qoVp2iT45zxTVNocQEGT6O_Zlub_w,214
|
89
|
+
sonusai/speech/vctk.py,sha256=WInvRRRkZCW6t_NcZAJffJzgCbyetal-j2w0kKX5SDw,1527
|
90
|
+
sonusai/speech/voxceleb.py,sha256=Uu1kB1krf8hess1yuvGbYfV_VgYhklEyoz4I7KfrVpw,2658
|
91
|
+
sonusai/summarize_metric_spenh.py,sha256=Zha0PZGZ_NznPeHh8rjVIaWR7ac4MEIlijci1uikiT0,1870
|
92
|
+
sonusai/utils/__init__.py,sha256=4XB-62-4Dg_XgZ6Ip2fEOBJ0_oQff6jndYl2rlzl6XE,2699
|
93
|
+
sonusai/utils/asl_p56.py,sha256=zH82RI7h399ZYFOOiOC35iv_qi0KhXpmG5uItWB8n78,3854
|
94
|
+
sonusai/utils/asr.py,sha256=w5xSBpA2wibzsiCWzdSm1m3LwNd54dcJMMLBWN33FJs,2818
|
95
|
+
sonusai/utils/asr_functions/__init__.py,sha256=HKGRm_c48tcxlfwqH63m-MvhAoK_pCcw76lxmFmiP_U,63
|
96
|
+
sonusai/utils/asr_functions/aaware_whisper.py,sha256=qgW1we5Y8QHljlv7IDDg77siM-UjDTKPhBPde509uXU,2076
|
97
|
+
sonusai/utils/audio_devices.py,sha256=_Eiah86SZjbdp2baD2AUVF4FmhseiNuG3KJkd_LbULk,2041
|
98
|
+
sonusai/utils/braced_glob.py,sha256=uvxo7USbxH6cWuVdNeGrz1SbZISFR1gPGbpy0EWm3m8,1645
|
99
|
+
sonusai/utils/calculate_input_shape.py,sha256=TIa_rHW3VIvOhlv5Wa3orcWFPMT-a3EPrIFHstbrmo4,906
|
100
|
+
sonusai/utils/choice.py,sha256=yU9pKmHovJL_PjX5IU0oH64sTKGn1q2Sq9HHyakQBf0,749
|
101
|
+
sonusai/utils/compress.py,sha256=Ez3R5viULqpxtd10Y6g8YS2fj8K8sO3qoSIXaP4lWRU,601
|
102
|
+
sonusai/utils/convert_string_to_number.py,sha256=cktFu6Jp1jifi3F6j1WIlVhEoeiCzaw4JlI43dBg9WI,213
|
103
|
+
sonusai/utils/create_timestamp.py,sha256=s7ALOX3MAyK3EOX2BVOiYTIcspsKlIM6zXJk2cbFkz0,148
|
104
|
+
sonusai/utils/create_ts_name.py,sha256=3xu10hbZkV18sDqK4oR1JYvXeYE53ufzddmvGYx83Vg,405
|
105
|
+
sonusai/utils/dataclass_from_dict.py,sha256=0efZc52Twg1aFMdmNJw6ZHvesAj_-rKBHZsCWE1joEI,946
|
106
|
+
sonusai/utils/db.py,sha256=lI77MJJLs4CTYxhjFUvBom2Kk2imAP34okOeO4irbDc,371
|
107
|
+
sonusai/utils/docstring.py,sha256=aPFrVpqlbYq3kIJE_sLCjhXWEqWCBo_q_DUmEXcGONQ,1516
|
108
|
+
sonusai/utils/energy_f.py,sha256=mmtdAcHQWah6QdQclqGIJkGWZO6eTqV6JFz5MFS1kzs,1503
|
109
|
+
sonusai/utils/engineering_number.py,sha256=SToFf6S0Xu0NtAJ1SjsVH4wxylH7qK8S9TBkPa15opY,5510
|
110
|
+
sonusai/utils/evaluate_random_rule.py,sha256=VBccfAXj8JQ2itOi2-NM79caHUDCiqbiSthlY1QCugI,466
|
111
|
+
sonusai/utils/get_frames_per_batch.py,sha256=xnq4tV7MT74N0H6b5ZsiAezqdXucboCLQw1Np9XpZbs,134
|
112
|
+
sonusai/utils/get_label_names.py,sha256=df4jZVaQ3WnYQqNj21iUV4aYWyQEZUNmgs93qKW-_rA,820
|
113
|
+
sonusai/utils/grouper.py,sha256=qyZ0nj84yOrC-RZsXHC-KJvcUliGktnV8S6-P3PD6_w,203
|
114
|
+
sonusai/utils/human_readable_size.py,sha256=DOCS7SAymrtTZli8AczvyCMCh44r7ZDgVBA7jSZupmA,356
|
115
|
+
sonusai/utils/keyboard_interrupt.py,sha256=fqBFn8ue_BZ4B2Pw5fk5WPvT4w3aKRNrCExIBcMLk7w,284
|
116
|
+
sonusai/utils/load_object.py,sha256=if4Vammcd-jZTz_n7QzwNIlN4HqSL0v91I9YQzcvEEA,493
|
117
|
+
sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
|
118
|
+
sonusai/utils/model_utils.py,sha256=OIJBhOjxR0wpxsd7A2r6J2AjqfdYgZzi6UEThw4S1lI,828
|
119
|
+
sonusai/utils/numeric_conversion.py,sha256=iFPXFU8C_1mW5tmDqHq8-xP1tL8nVaSmhQRakdCqy30,328
|
120
|
+
sonusai/utils/onnx_utils.py,sha256=XkG7ldYD43_pQXkn-1XFSuwwC8HB7-FH7Y4-AYZOUFo,5591
|
121
|
+
sonusai/utils/parallel.py,sha256=yvRZvZWPR5slM51i08m7sYx-Mvsb5oryCqqJXVoJ8tQ,2190
|
122
|
+
sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
|
123
|
+
sonusai/utils/print_mixture_details.py,sha256=fUYccs25KF-fpgT9wK3PEKkc18gWfIO99zyiUuNWVBM,2979
|
124
|
+
sonusai/utils/rand.py,sha256=yQMpYuJFi8GkIocDYIT3ESfNYEgWA7KZMWpgjqr0UXQ,225
|
125
|
+
sonusai/utils/ranges.py,sha256=-TtAR0Vg_j4kYtJOvEOYQllBZEat_KfUKsfRxr5oj-o,1235
|
126
|
+
sonusai/utils/read_predict_data.py,sha256=ZcIlfwxfav8Lh3gye7V150t0c6k-C9y5SbzWtDQ6TuU,1037
|
127
|
+
sonusai/utils/reshape.py,sha256=BqgNAX6Hwz13jLgSYoqKk4iG_UatSiRmE6mzT3edSi8,5704
|
128
|
+
sonusai/utils/seconds_to_hms.py,sha256=9Ya9O97txFtTIXZUQw1K8g7b7Xx-ptvUtMUlzsIduTo,260
|
129
|
+
sonusai/utils/stacked_complex.py,sha256=JW6iAa1C-4Tuh4dD5c-D-O-yo-OY5Xm0AKVU0YsqsJU,2782
|
130
|
+
sonusai/utils/stratified_shuffle_split.py,sha256=F3TowSWeZiY6lqEGmembaRO0AK14VWUtCQ8v6OUMX6Q,6707
|
131
|
+
sonusai/utils/tokenized_shell_vars.py,sha256=EDrrAgz5lJ0RBAjLcTJt1MeyjhbNZiqXkymohsedNMc,4922
|
132
|
+
sonusai/utils/write_audio.py,sha256=IHzrJoFtFcea_J6wo6QSiojRkgnNOzAEcg-z0rFV7nU,810
|
133
|
+
sonusai/utils/yes_or_no.py,sha256=0h1okjXmDNbJp7rZJFR2V-HFU1GJDm3YFTUVmYExkOU,263
|
134
|
+
sonusai/vars.py,sha256=m8pdgfR4A6A9TCGf_rok6jPAT5BgrEsYXTSISIh1nrI,1163
|
135
|
+
sonusai-1.0.1.dist-info/METADATA,sha256=zvrhFpNsB1ErqFsUOIi9y67rOM9wvs8j_5cv8KMi1uw,2607
|
136
|
+
sonusai-1.0.1.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
137
|
+
sonusai-1.0.1.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
|
138
|
+
sonusai-1.0.1.dist-info/RECORD,,
|