sonusai 0.19.6__py3-none-any.whl → 0.19.9__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.
Files changed (61) hide show
  1. sonusai/__init__.py +1 -1
  2. sonusai/aawscd_probwrite.py +1 -1
  3. sonusai/calc_metric_spenh.py +1 -1
  4. sonusai/genft.py +29 -14
  5. sonusai/genmetrics.py +60 -42
  6. sonusai/genmix.py +41 -29
  7. sonusai/genmixdb.py +56 -64
  8. sonusai/metrics/calc_class_weights.py +1 -3
  9. sonusai/metrics/calc_optimal_thresholds.py +2 -2
  10. sonusai/metrics/calc_phase_distance.py +1 -1
  11. sonusai/metrics/calc_speech.py +6 -6
  12. sonusai/metrics/class_summary.py +6 -15
  13. sonusai/metrics/confusion_matrix_summary.py +11 -27
  14. sonusai/metrics/one_hot.py +3 -3
  15. sonusai/metrics/snr_summary.py +7 -7
  16. sonusai/mixture/__init__.py +2 -17
  17. sonusai/mixture/augmentation.py +5 -6
  18. sonusai/mixture/class_count.py +1 -1
  19. sonusai/mixture/config.py +36 -46
  20. sonusai/mixture/data_io.py +30 -1
  21. sonusai/mixture/datatypes.py +29 -40
  22. sonusai/mixture/db_datatypes.py +1 -1
  23. sonusai/mixture/feature.py +3 -23
  24. sonusai/mixture/generation.py +161 -204
  25. sonusai/mixture/helpers.py +29 -187
  26. sonusai/mixture/mixdb.py +386 -159
  27. sonusai/mixture/soundfile_audio.py +1 -1
  28. sonusai/mixture/sox_audio.py +4 -4
  29. sonusai/mixture/sox_augmentation.py +1 -1
  30. sonusai/mixture/target_class_balancing.py +9 -11
  31. sonusai/mixture/targets.py +23 -20
  32. sonusai/mixture/torchaudio_audio.py +18 -7
  33. sonusai/mixture/torchaudio_augmentation.py +3 -4
  34. sonusai/mixture/truth.py +21 -34
  35. sonusai/mixture/truth_functions/__init__.py +6 -0
  36. sonusai/mixture/truth_functions/crm.py +51 -37
  37. sonusai/mixture/truth_functions/energy.py +95 -50
  38. sonusai/mixture/truth_functions/file.py +12 -8
  39. sonusai/mixture/truth_functions/metadata.py +24 -0
  40. sonusai/mixture/truth_functions/metrics.py +28 -0
  41. sonusai/mixture/truth_functions/phoneme.py +4 -5
  42. sonusai/mixture/truth_functions/sed.py +32 -23
  43. sonusai/mixture/truth_functions/target.py +62 -29
  44. sonusai/mkwav.py +20 -19
  45. sonusai/queries/queries.py +9 -15
  46. sonusai/speech/l2arctic.py +6 -2
  47. sonusai/summarize_metric_spenh.py +1 -1
  48. sonusai/utils/__init__.py +1 -0
  49. sonusai/utils/asr_functions/aaware_whisper.py +1 -1
  50. sonusai/utils/audio_devices.py +27 -18
  51. sonusai/utils/docstring.py +6 -3
  52. sonusai/utils/energy_f.py +5 -3
  53. sonusai/utils/human_readable_size.py +6 -6
  54. sonusai/utils/load_object.py +15 -0
  55. sonusai/utils/onnx_utils.py +2 -2
  56. sonusai/utils/print_mixture_details.py +3 -3
  57. {sonusai-0.19.6.dist-info → sonusai-0.19.9.dist-info}/METADATA +2 -2
  58. {sonusai-0.19.6.dist-info → sonusai-0.19.9.dist-info}/RECORD +60 -58
  59. sonusai/mixture/truth_functions/datatypes.py +0 -37
  60. {sonusai-0.19.6.dist-info → sonusai-0.19.9.dist-info}/WHEEL +0 -0
  61. {sonusai-0.19.6.dist-info → sonusai-0.19.9.dist-info}/entry_points.txt +0 -0
sonusai/mkwav.py CHANGED
@@ -1,12 +1,13 @@
1
1
  """sonusai mkwav
2
2
 
3
- usage: mkwav [-hvtn] [-i MIXID] LOC
3
+ usage: mkwav [-hvtsn] [-i MIXID] LOC
4
4
 
5
5
  options:
6
6
  -h, --help
7
7
  -v, --verbose Be verbose.
8
8
  -i MIXID, --mixid MIXID Mixture ID(s) to generate. [default: *].
9
9
  -t, --target Write target file.
10
+ -s, --targets Write targets files.
10
11
  -n, --noise Write noise file.
11
12
 
12
13
  The mkwav command creates WAV files from a SonusAI database.
@@ -17,9 +18,10 @@ Inputs:
17
18
 
18
19
  Outputs the following to the mixture database directory:
19
20
  <id>
20
- mixture.wav: mixture
21
- target.wav: target (optional)
22
- noise.wav: noise (optional)
21
+ mixture.wav: mixture
22
+ target.wav: target (optional)
23
+ targets<n>.wav: targets <n> (optional)
24
+ noise.wav: noise (optional)
23
25
  metadata.txt
24
26
  mkwav.log
25
27
 
@@ -40,7 +42,7 @@ def signal_handler(_sig, _frame):
40
42
  signal.signal(signal.SIGINT, signal_handler)
41
43
 
42
44
 
43
- def _process_mixture(m_id: int, location: str, write_target: bool, write_noise: bool) -> None:
45
+ def _process_mixture(m_id: int, location: str, write_target: bool, write_targets: bool, write_noise: bool) -> None:
44
46
  from os.path import join
45
47
 
46
48
  from sonusai.mixture import MixtureDatabase
@@ -50,16 +52,18 @@ def _process_mixture(m_id: int, location: str, write_target: bool, write_noise:
50
52
 
51
53
  mixdb = MixtureDatabase(location)
52
54
 
53
- mixture = mixdb.mixture(m_id)
54
- location = join(mixdb.location, mixture.name)
55
+ location = join(mixdb.location, "mixture", mixdb.mixture(m_id).name)
55
56
 
56
57
  write_audio(name=join(location, "mixture.wav"), audio=float_to_int16(mixdb.mixture_mixture(m_id)))
57
58
  if write_target:
58
59
  write_audio(name=join(location, "target.wav"), audio=float_to_int16(mixdb.mixture_target(m_id)))
60
+ if write_targets:
61
+ for idx, target in enumerate(mixdb.mixture_targets(m_id)):
62
+ write_audio(name=join(location, f"targets{idx}.wav"), audio=float_to_int16(target))
59
63
  if write_noise:
60
64
  write_audio(name=join(location, "noise.wav"), audio=float_to_int16(mixdb.mixture_noise(m_id)))
61
65
 
62
- write_mixture_metadata(mixdb, mixture)
66
+ write_mixture_metadata(mixdb, m_id)
63
67
 
64
68
 
65
69
  def main() -> None:
@@ -73,6 +77,7 @@ def main() -> None:
73
77
  verbose = args["--verbose"]
74
78
  mixid = args["--mixid"]
75
79
  write_target = args["--target"]
80
+ write_targets = args["--targets"]
76
81
  write_noise = args["--noise"]
77
82
  location = args["LOC"]
78
83
 
@@ -80,14 +85,12 @@ def main() -> None:
80
85
  from functools import partial
81
86
  from os.path import join
82
87
 
83
- import sonusai
84
88
  from sonusai import create_file_handler
85
89
  from sonusai import initial_log_messages
86
90
  from sonusai import logger
87
91
  from sonusai import update_console_handler
88
92
  from sonusai.mixture import MixtureDatabase
89
93
  from sonusai.mixture import check_audio_files_exist
90
- from sonusai.utils import human_readable_size
91
94
  from sonusai.utils import par_track
92
95
  from sonusai.utils import seconds_to_hms
93
96
  from sonusai.utils import track
@@ -103,7 +106,6 @@ def main() -> None:
103
106
  mixid = mixdb.mixids_to_list(mixid)
104
107
 
105
108
  total_samples = mixdb.total_samples(mixid)
106
- duration = total_samples / sonusai.mixture.SAMPLE_RATE
107
109
 
108
110
  logger.info("")
109
111
  logger.info(f"Found {len(mixid):,} mixtures to process")
@@ -113,7 +115,13 @@ def main() -> None:
113
115
 
114
116
  progress = track(total=len(mixid))
115
117
  par_track(
116
- partial(_process_mixture, location=location, write_target=write_target, write_noise=write_noise),
118
+ partial(
119
+ _process_mixture,
120
+ location=location,
121
+ write_target=write_target,
122
+ write_targets=write_targets,
123
+ write_noise=write_noise,
124
+ ),
117
125
  mixid,
118
126
  progress=progress,
119
127
  )
@@ -121,13 +129,6 @@ def main() -> None:
121
129
 
122
130
  logger.info(f"Wrote {len(mixid)} mixtures to {location}")
123
131
  logger.info("")
124
- logger.info(f"Duration: {seconds_to_hms(seconds=duration)}")
125
- logger.info(f"mixture: {human_readable_size(total_samples * 2, 1)}")
126
- if write_target:
127
- logger.info(f"target: {human_readable_size(total_samples * 2, 1)}")
128
- if write_noise:
129
- logger.info(f"noise: {human_readable_size(total_samples * 2, 1)}")
130
-
131
132
  end_time = time.monotonic()
132
133
  logger.info(f"Completed in {seconds_to_hms(seconds=end_time - start_time)}")
133
134
  logger.info("")
@@ -5,6 +5,10 @@ from sonusai.mixture.datatypes import GeneralizedIDs
5
5
  from sonusai.mixture.mixdb import MixtureDatabase
6
6
 
7
7
 
8
+ def _true_predicate(_: Any) -> bool:
9
+ return True
10
+
11
+
8
12
  def get_mixids_from_mixture_field_predicate(
9
13
  mixdb: MixtureDatabase,
10
14
  field: str,
@@ -20,9 +24,7 @@ def get_mixids_from_mixture_field_predicate(
20
24
  mixid_out = mixdb.mixids_to_list(mixids)
21
25
 
22
26
  if predicate is None:
23
-
24
- def predicate(_: Any) -> bool:
25
- return True
27
+ predicate = _true_predicate
26
28
 
27
29
  criteria_set = set()
28
30
  for m_id in mixid_out:
@@ -70,9 +72,7 @@ def get_mixids_from_truth_configs_field_predicate(
70
72
  values = get_all_truth_configs_values_from_field(mixdb, field)
71
73
 
72
74
  if predicate is None:
73
-
74
- def predicate(_: Any) -> bool:
75
- return True
75
+ predicate = _true_predicate
76
76
 
77
77
  # Get only values of interest
78
78
  values = [value for value in values if predicate(value)]
@@ -118,7 +118,7 @@ def get_all_truth_configs_values_from_field(mixdb: MixtureDatabase, field: str)
118
118
  value = getattr(truth_config, field)
119
119
  else:
120
120
  value = getattr(truth_config.config, field, None)
121
- if isinstance(value, str):
121
+ if not isinstance(value, list):
122
122
  value = [value]
123
123
  result.extend(value)
124
124
 
@@ -164,17 +164,13 @@ def get_mixids_from_snr(
164
164
  - keys are the SNRs
165
165
  - values are lists of the mixids that match the SNR
166
166
  """
167
- from typing import Any
168
-
169
167
  mixid_out = mixdb.mixids_to_list(mixids)
170
168
 
171
169
  # Get all the SNRs
172
170
  snrs = [float(snr) for snr in mixdb.all_snrs if not snr.is_random]
173
171
 
174
172
  if predicate is None:
175
-
176
- def predicate(_: Any) -> bool:
177
- return True
173
+ predicate = _true_predicate
178
174
 
179
175
  # Get only the SNRs of interest (filter on predicate)
180
176
  snrs = [snr for snr in snrs if predicate(snr)]
@@ -201,9 +197,7 @@ def get_mixids_from_class_indices(
201
197
  mixid_out = mixdb.mixids_to_list(mixids)
202
198
 
203
199
  if predicate is None:
204
-
205
- def predicate(_: Any) -> bool:
206
- return True
200
+ predicate = _true_predicate
207
201
 
208
202
  criteria_set = set()
209
203
  for m_id in mixid_out:
@@ -54,6 +54,7 @@ def load_phonemes(audio: str | os.PathLike[str]) -> list[TimeAlignedType] | None
54
54
 
55
55
  def _load_ta(audio: str | os.PathLike[str], tier: str) -> list[TimeAlignedType] | None:
56
56
  from praatio import textgrid
57
+ from praatio.utilities.constants import Interval
57
58
 
58
59
  file = Path(audio).parent.parent / "textgrid" / (Path(audio).stem + ".TextGrid")
59
60
  if not os.path.exists(file):
@@ -65,7 +66,8 @@ def _load_ta(audio: str | os.PathLike[str], tier: str) -> list[TimeAlignedType]
65
66
 
66
67
  entries: list[TimeAlignedType] = []
67
68
  for entry in tg.getTier(tier).entries:
68
- entries.append(TimeAlignedType(text=entry.label, start=entry.start, end=entry.end))
69
+ if isinstance(entry, Interval):
70
+ entries.append(TimeAlignedType(text=entry.label, start=entry.start, end=entry.end))
69
71
 
70
72
  return entries
71
73
 
@@ -79,6 +81,7 @@ def load_annotations(
79
81
  :return: A dictionary of a list of TimeAlignedType objects.
80
82
  """
81
83
  from praatio import textgrid
84
+ from praatio.utilities.constants import Interval
82
85
 
83
86
  file = Path(audio).parent.parent / "annotation" / (Path(audio).stem + ".TextGrid")
84
87
  if not os.path.exists(file):
@@ -89,7 +92,8 @@ def load_annotations(
89
92
  for tier in tg.tierNames:
90
93
  entries: list[TimeAlignedType] = []
91
94
  for entry in tg.getTier(tier).entries:
92
- entries.append(TimeAlignedType(text=entry.label, start=entry.start, end=entry.end))
95
+ if isinstance(entry, Interval):
96
+ entries.append(TimeAlignedType(text=entry.label, start=entry.start, end=entry.end))
93
97
  result[tier] = entries
94
98
 
95
99
  return result
@@ -48,7 +48,7 @@ def summarize_metric_spenh(location: str, by: str = "MIXID", reverse: bool = Fal
48
48
  data.append(line.strip().split())
49
49
  break
50
50
 
51
- df = pd.DataFrame(data, columns=header)
51
+ df = pd.DataFrame(data, columns=header) # pyright: ignore [reportArgumentType]
52
52
  df[header[0:-2]] = df[header[0:-2]].apply(pd.to_numeric, errors="coerce")
53
53
  return df.sort_values(by=by, ascending=not reverse).to_string(index=False)
54
54
 
sonusai/utils/__init__.py CHANGED
@@ -27,6 +27,7 @@ from .get_frames_per_batch import get_frames_per_batch
27
27
  from .get_label_names import get_label_names
28
28
  from .grouper import grouper
29
29
  from .human_readable_size import human_readable_size
30
+ from .load_object import load_object
30
31
  from .max_text_width import max_text_width
31
32
  from .model_utils import import_module
32
33
  from .numeric_conversion import float_to_int16
@@ -20,7 +20,7 @@ def aaware_whisper(audio: AudioT, **_config) -> ASRResult:
20
20
 
21
21
  url = getenv("AAWARE_WHISPER_URL")
22
22
  if url is None:
23
- raise EnvironmentError("AAWARE_WHISPER_URL environment variable does not exist")
23
+ raise OSError("AAWARE_WHISPER_URL environment variable does not exist")
24
24
  url += "/asr?task=transcribe&language=en&encode=true&output=json"
25
25
 
26
26
  with tempfile.TemporaryDirectory() as tmp:
@@ -4,14 +4,17 @@ import pyaudio
4
4
  def get_input_device_index_by_name(p: pyaudio.PyAudio, name: str | None = None) -> int:
5
5
  info = p.get_host_api_info_by_index(0)
6
6
  device_count = info.get("deviceCount")
7
- for i in range(0, device_count):
8
- device_info = p.get_device_info_by_host_api_device_index(0, i)
9
- if name is None:
10
- device_name = None
11
- else:
12
- device_name = device_info.get("name")
13
- if name == device_name and device_info.get("maxInputChannels") > 0:
14
- return i
7
+ if isinstance(device_count, int):
8
+ for i in range(0, device_count):
9
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
10
+ if name is None:
11
+ device_name = None
12
+ else:
13
+ device_name = device_info.get("name")
14
+ if isinstance(device_name, str) or device_name is None:
15
+ input_channels = device_info.get("maxInputChannels")
16
+ if name == device_name and isinstance(input_channels, int) and input_channels > 0:
17
+ return i
15
18
 
16
19
  raise ValueError(f"Could not find {name}")
17
20
 
@@ -20,11 +23,14 @@ def get_input_devices(p: pyaudio.PyAudio) -> list[str]:
20
23
  names = []
21
24
  info = p.get_host_api_info_by_index(0)
22
25
  device_count = info.get("deviceCount")
23
- for i in range(0, device_count):
24
- device_info = p.get_device_info_by_host_api_device_index(0, i)
25
- device_name = device_info.get("name")
26
- if device_info.get("maxInputChannels") > 0:
27
- names.append(device_name)
26
+ if isinstance(device_count, int):
27
+ for i in range(0, device_count):
28
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
29
+ device_name = device_info.get("name")
30
+ if isinstance(device_name, str):
31
+ input_channels = device_info.get("maxInputChannels")
32
+ if isinstance(input_channels, int) and input_channels > 0:
33
+ names.append(device_name)
28
34
 
29
35
  return names
30
36
 
@@ -32,10 +38,13 @@ def get_input_devices(p: pyaudio.PyAudio) -> list[str]:
32
38
  def get_default_input_device(p: pyaudio.PyAudio) -> str:
33
39
  info = p.get_host_api_info_by_index(0)
34
40
  device_count = info.get("deviceCount")
35
- for i in range(0, device_count):
36
- device_info = p.get_device_info_by_host_api_device_index(0, i)
37
- device_name = device_info.get("name")
38
- if device_info.get("maxInputChannels") > 0:
39
- return device_name
41
+ if isinstance(device_count, int):
42
+ for i in range(0, device_count):
43
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
44
+ device_name = device_info.get("name")
45
+ if isinstance(device_name, str):
46
+ input_channels = device_info.get("maxInputChannels")
47
+ if isinstance(input_channels, int) and input_channels > 0:
48
+ return device_name
40
49
 
41
50
  raise ValueError("No input audio devices found")
@@ -1,4 +1,4 @@
1
- def trim_docstring(docstring: str) -> str:
1
+ def trim_docstring(docstring: str | None) -> str:
2
2
  """Trim whitespace from docstring"""
3
3
  from sys import maxsize
4
4
 
@@ -30,11 +30,14 @@ def trim_docstring(docstring: str) -> str:
30
30
  return "\n".join(trimmed)
31
31
 
32
32
 
33
- def add_commands_to_docstring(docstring: str, plugin_docstrings: list[str]) -> str:
33
+ def add_commands_to_docstring(docstring: str | None, plugin_docstrings: list[str]) -> str:
34
34
  """Add commands to docstring"""
35
35
  import sonusai
36
36
 
37
- lines = docstring.splitlines()
37
+ if not docstring:
38
+ lines = []
39
+ else:
40
+ lines = docstring.splitlines()
38
41
 
39
42
  start = lines.index("The sonusai commands are:")
40
43
  end = lines.index("", start)
sonusai/utils/energy_f.py CHANGED
@@ -29,14 +29,16 @@ def compute_energy_f(
29
29
  if transform is None:
30
30
  raise ValueError("Must provide ForwardTransform object")
31
31
 
32
- frequency_domain = transform.execute_all(torch.from_numpy(time_domain))[0].numpy()
32
+ _frequency_domain = transform.execute_all(torch.from_numpy(time_domain))[0].numpy()
33
+ else:
34
+ _frequency_domain = frequency_domain
33
35
 
34
- frames, bins = frequency_domain.shape
36
+ frames, bins = _frequency_domain.shape
35
37
  result = np.empty((frames, bins), dtype=np.float32)
36
38
 
37
39
  for f in range(frames):
38
40
  for b in range(bins):
39
- value = frequency_domain[f, b]
41
+ value = _frequency_domain[f, b]
40
42
  result[f, b] = np.real(value) * np.real(value) + np.imag(value) * np.imag(value)
41
43
 
42
44
  return result
@@ -1,7 +1,7 @@
1
- def human_readable_size(size: float, decimal_places: int = 3) -> str:
1
+ def human_readable_size(num: float, decimal_places: int = 3, suffix: str = "B") -> str:
2
2
  """Convert number into string with units"""
3
- for unit in ["B", "kB", "MB", "GB", "TB"]: # noqa: B007
4
- if size < 1024.0:
5
- break
6
- size /= 1024.0
7
- return f"{size:.{decimal_places}f} {unit}"
3
+ for unit in ("", "k", "M", "G", "T", "P", "E", "Z"):
4
+ if abs(num) < 1024.0:
5
+ return f"{num:.{decimal_places}f} {unit}{suffix}"
6
+ num /= 1024.0
7
+ return f"{num:.{decimal_places}f} Y{suffix}"
@@ -0,0 +1,15 @@
1
+ from functools import lru_cache
2
+ from typing import Any
3
+
4
+
5
+ @lru_cache
6
+ def load_object(name: str) -> Any:
7
+ """Load an object from a pickle file (with LRU caching)"""
8
+ import pickle
9
+ from os.path import exists
10
+
11
+ if exists(name):
12
+ with open(name, "rb") as f:
13
+ return pickle.load(f) # noqa: S301
14
+
15
+ raise FileNotFoundError(name)
@@ -3,8 +3,8 @@ from collections.abc import Sequence
3
3
  from onnx import ModelProto
4
4
  from onnx import ValueInfoProto
5
5
  from onnxruntime import InferenceSession
6
- from onnxruntime import NodeArg
7
- from onnxruntime import SessionOptions
6
+ from onnxruntime import NodeArg # pyright: ignore [reportAttributeAccessIssue]
7
+ from onnxruntime import SessionOptions # pyright: ignore [reportAttributeAccessIssue]
8
8
 
9
9
  REQUIRED_HPARAMS = (
10
10
  "feature",
@@ -37,10 +37,10 @@ def print_mixture_details(
37
37
  print_fn(f'{" Samples":{desc_len}} {mixture.samples}')
38
38
  print_fn(f'{" Feature frames":{desc_len}} {mixdb.mixture_feature_frames(mixid)}')
39
39
  print_fn(f'{" Noise file":{desc_len}} {noise_file.name}')
40
- noise_offset_percent = int(np.round(100 * mixture.noise.offset / float(noise_file.duration * SAMPLE_RATE)))
41
- print_fn(f'{" Noise offset":{desc_len}} {mixture.noise.offset} samples ({noise_offset_percent}%)')
40
+ noise_offset_percent = int(np.round(100 * mixture.noise_offset / float(noise_file.duration * SAMPLE_RATE)))
41
+ print_fn(f'{" Noise offset":{desc_len}} {mixture.noise_offset} samples ({noise_offset_percent}%)')
42
42
  print_fn(f'{" SNR":{desc_len}} {mixture.snr} dB{" (random)" if mixture.snr.is_random else ""}')
43
- print_fn(f'{" Target gain":{desc_len}} {[target.gain for target in mixture.targets]}')
43
+ print_fn(f'{" Target gain":{desc_len}} {[target.gain if not mixture.is_noise_only else 0 for target in mixture.targets]}')
44
44
  print_fn(f'{" Target SNR gain":{desc_len}} {mixture.target_snr_gain}')
45
45
  print_fn(f'{" Noise SNR gain":{desc_len}} {mixture.noise_snr_gain}')
46
46
  print_fn("")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sonusai
3
- Version: 0.19.6
3
+ Version: 0.19.9
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
@@ -27,7 +27,7 @@ Requires-Dist: pandas (>=2.2.3,<3.0.0)
27
27
  Requires-Dist: pesq (>=0.0.4,<0.0.5)
28
28
  Requires-Dist: praatio (>=6.2.0,<7.0.0)
29
29
  Requires-Dist: psutil (>=6.0.0,<7.0.0)
30
- Requires-Dist: pyaaware (>=1.5.18,<2.0.0)
30
+ Requires-Dist: pyaaware (>=1.6.3,<2.0.0)
31
31
  Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
32
32
  Requires-Dist: pydub (>=0.25.1,<0.26.0)
33
33
  Requires-Dist: pystoi (>=0.4.1,<0.5.0)
@@ -1,7 +1,7 @@
1
- sonusai/__init__.py,sha256=AzY-ysnmnzg0dDsephK12AuPoClcf8ggphjk4i9Qe-I,2762
2
- sonusai/aawscd_probwrite.py,sha256=DZwvkrNy-v4meCShSNAEtlwLnd-3OcpbHkHYvJt2jFI,3652
1
+ sonusai/__init__.py,sha256=NSb0bvmAh6Rm2MDtchpAGsg8a3BrmVnShYb-vC_emH8,2802
2
+ sonusai/aawscd_probwrite.py,sha256=QZLMQrmPr3OjZ06buyYDwlnk9YPCpyr4KHkBjPsiqjU,3700
3
3
  sonusai/audiofe.py,sha256=iFdthh4UrOvziT8urjrjD7dACWZPQz9orM5bVAW3WSQ,11269
4
- sonusai/calc_metric_spenh.py,sha256=w7lCuAI01B_E_pWQnGlGQQcmzopi7q3QeO5ByMXnzos,46712
4
+ sonusai/calc_metric_spenh.py,sha256=NTqYBNDR6LTSdDA8s4WCSEwajE3-fNJg1TUzhNzJC9g,46719
5
5
  sonusai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sonusai/data/genmixdb.yml,sha256=U_kLbE7gZ5rA7yNSB2NW7eK5dnYP5grJVMR321VMLt8,940
7
7
  sonusai/data/speech_ma01_01.wav,sha256=PK0vMKg-NR6rPE3KouxHGF6PKXnJCr7AwjMqfu98LUA,76644
@@ -12,68 +12,69 @@ sonusai/deprecated/tplot.py,sha256=0p238DvTaP4oU9y-dp0JdLaTV4TKrooAwbx7zdz_QAc,1
12
12
  sonusai/doc/__init__.py,sha256=KyQ26Um0RM8A3GYsb_tbFH64RwpoAw6lja2f_moUWas,33
13
13
  sonusai/doc/doc.py,sha256=VZXauwbOb-VIufWw-lu0yfrd6jMRPeFeVPaaEjZNvn4,18881
14
14
  sonusai/doc.py,sha256=zSmXpioB0YS_5-7kqfS5cr--veSaXkxRKzldId9Hyoc,878
15
- sonusai/genft.py,sha256=z9J4-aYZdPw50_56QMOSaofLNadO5b7htxtDgd0Qu88,5227
16
- sonusai/genmetrics.py,sha256=G1lIgeIAu5EmalDR7j0rbSRP0dyndY4w35xUT5iToYU,4958
17
- sonusai/genmix.py,sha256=4YEPvUnFCAexwW540LyzXsFq9QODE4GgOrCZOvigVJA,6179
18
- sonusai/genmixdb.py,sha256=UmkiQTK8W5hRBVGlCBCJnBBnXCK1yJj7bhuXNtyGM38,19203
15
+ sonusai/genft.py,sha256=TqtmexKw7tZsugU1DbZ3fY7_YZ2hFlIU-ema6f0LRgQ,5586
16
+ sonusai/genmetrics.py,sha256=RiEYmkRl0yVCIr9PHkKRqEG68WR77pP9WpWAYeKnMLE,5723
17
+ sonusai/genmix.py,sha256=pugp74prksf4ZiJYMXWg2l3v48Qqi9KpP2WhPEBpZOU,6702
18
+ sonusai/genmixdb.py,sha256=gUF_9dGfuWRCmHtCoXZRrgCMejz46A5KhWoEh31laqc,18724
19
19
  sonusai/lsdb.py,sha256=0HOGDDndB3LT9cz9AaxKIpt9vslAoSP4F239gply4Xg,5149
20
20
  sonusai/main.py,sha256=HbnEia1B1-Z-mlHkLfojH8aj9GIpL1Btw3oH60T_CCQ,2590
21
21
  sonusai/metrics/__init__.py,sha256=ssV6JEK_oklRSocsp6HMcG-GtJvV8IkRQtdKhHHmwU8,878
22
22
  sonusai/metrics/calc_audio_stats.py,sha256=IHgYEPaob_Nw35SaH3tyHp7Wwju4f-2-BJZ99JyeLmc,1572
23
- sonusai/metrics/calc_class_weights.py,sha256=DP36f0W5Vr8v8LhzmOWFxb1cgXFV-pzN6i4lbG7xMhw,3796
24
- sonusai/metrics/calc_optimal_thresholds.py,sha256=y2bTF409iJBOK0WblJ62XcF83BT3QvPuu_nb7xH4Vt8,3433
23
+ sonusai/metrics/calc_class_weights.py,sha256=SUOCdM4w03rFpyxAriPnPwCtEEFsAH3WxpK9N_fupwo,3637
24
+ sonusai/metrics/calc_optimal_thresholds.py,sha256=0JOqU__doeOpNtgEZgeO1Kg7pttJRpITTVmqLU6TadY,3513
25
25
  sonusai/metrics/calc_pcm.py,sha256=yBQV9UJ1GK5f4c_8TNABMtZR-xyStKJCsSTT0FQGa50,1886
26
26
  sonusai/metrics/calc_pesq.py,sha256=dCztUTaPyyjkUI2DpejqhiPzQv4FOtigzffFnDXDs-M,949
27
- sonusai/metrics/calc_phase_distance.py,sha256=-aNZEkfqxv3UjQsYcGqJ-Ips-ZAktBcykGJ6O2seHjA,1863
27
+ sonusai/metrics/calc_phase_distance.py,sha256=MFuBtGXb5qfQvRVciJ0Soz1w0GMSeJLBJud-aK4Loow,1870
28
28
  sonusai/metrics/calc_sa_sdr.py,sha256=IdCzlQ_w94A3eK42t-gy_DrFN_tziwfDjTU6-WKuCFs,2531
29
29
  sonusai/metrics/calc_sample_weights.py,sha256=0O2EH1-FKlCa0HFgKPUF1BJiknR1hCH7zLbXnoXH7Ag,945
30
30
  sonusai/metrics/calc_segsnr_f.py,sha256=-ncM0OGRcOBDh2PnGsQOQccHs1QXHBTd3eCv4YpF3fs,2923
31
- sonusai/metrics/calc_speech.py,sha256=8QhOpupbQOte9l3a4RsUrmSsG0qXtAeMcGfT2tMDzhs,14776
31
+ sonusai/metrics/calc_speech.py,sha256=3Gs6lmEaZj7XPZYuQnal2_Wa-z-6naktSfLRnl0H53g,14754
32
32
  sonusai/metrics/calc_wer.py,sha256=1MQYMx8ldHeodtJEtGibvDKhvSaGe6DBmZV4L8qOMgg,2362
33
33
  sonusai/metrics/calc_wsdr.py,sha256=vcALY-zuhyThRa1QMz2qW8L9kSBc2v32gV9u8bV7VaM,2556
34
- sonusai/metrics/class_summary.py,sha256=qBWxtQ9YKJUzk5LsjDuwnYEKrpfwubF-vZZL0HbcSH8,3193
35
- sonusai/metrics/confusion_matrix_summary.py,sha256=eZFmt7k5Eanx7FYPwcfnzVq-AMYNSP03gfj9GtsfHWI,3841
36
- sonusai/metrics/one_hot.py,sha256=jo-YsiDVr3PYoZTHhA0t24-VpSXEsZ4lukrP1xFbXAQ,13810
37
- sonusai/metrics/snr_summary.py,sha256=sRUE6XI5PFFhaSpag537WUnukbMizOeMCwVQ2ww34Cw,5617
38
- sonusai/mixture/__init__.py,sha256=NeXnrPIgDB-33WA0wva7m41SGOiO6biyKiDKK9o_W28,5650
34
+ sonusai/metrics/class_summary.py,sha256=ZA7zNgwBpmTs1TP_t4jRT0pWnDnATC_up_8qE4aH-do,2809
35
+ sonusai/metrics/confusion_matrix_summary.py,sha256=zBL_Ke7wF6oKtrKZPr0fsyF_taofdjxBlZmKodu0xUA,3143
36
+ sonusai/metrics/one_hot.py,sha256=hmuyh-9tpRjb_oyqU3WqZ14zItpRJQfcqBDKJeb5H9I,13930
37
+ sonusai/metrics/snr_summary.py,sha256=t8Fi_8WtboTi8flkZuOiHq9H3-nIELx4AKvnm-qvxLQ,5785
38
+ sonusai/mixture/__init__.py,sha256=ccz_UpB7Rh6wUB7uwLgNhciMZhKE9Qt9ICLyjq08kxs,5126
39
39
  sonusai/mixture/audio.py,sha256=Tg0-HzSgZDttKwWwONqgK6qK4maTSmWcfiL1atZcIXQ,2390
40
- sonusai/mixture/augmentation.py,sha256=QqAuM2mN5S4SkQtCg1eDSJEtGsxsa6MBYZ9IOGVBvxg,10372
41
- sonusai/mixture/class_count.py,sha256=U_FiWBU_yH6_ZAmZRdeDKUQyS0fnTtyfJ2V1lgqkFls,605
42
- sonusai/mixture/config.py,sha256=b7fyacZm2FVjcTYC1vOy5FLrxkuJRYR0KrrATcGwQK4,24658
40
+ sonusai/mixture/augmentation.py,sha256=s8QlPHnFJOblRU59fMQ-Zqysiv4OUJ7CxLRcV81lnaA,10407
41
+ sonusai/mixture/class_count.py,sha256=zcC3BDYMPN6wJYmO1RcOuqmrnTQIbMSznl33oN3e2sc,597
42
+ sonusai/mixture/config.py,sha256=g5ZmOhFYqmEdRQYSgfDIZ9VM0QiTwBqk7vIyAvxnPMo,24211
43
43
  sonusai/mixture/constants.py,sha256=fXcWuSI4YZOAuncLGEUeEW9WWNZeN-6mI8LFNILwyTc,1494
44
- sonusai/mixture/data_io.py,sha256=s8DNUIwdgcgrpqP_JplgGB_zVBczgGVTtAZe2qqrtiI,4632
45
- sonusai/mixture/datatypes.py,sha256=D20qe93HjXZ80R_lNgN3Pu4pZH2qTxf2ZmntknDGNrs,10355
46
- sonusai/mixture/db_datatypes.py,sha256=kQG_-G3zOqixoHxcmTrZlmxdrWNr1VhUzYF5IKYi19c,1542
44
+ sonusai/mixture/data_io.py,sha256=KZGqhHd9_ucAfZEAXPIc5XL3aHYgdV5CyqaBx5_t8OM,5551
45
+ sonusai/mixture/datatypes.py,sha256=xNDBWFTVQ3plJ7qHKzrXyV4pffPYuf1xMVqBsR40n4o,10487
46
+ sonusai/mixture/db_datatypes.py,sha256=kvdUOMS6Pkkj9AmxCiq6zM8x7jbPPi933tVaXRxbTdQ,1534
47
47
  sonusai/mixture/eq_rule_is_valid.py,sha256=O3gCAs_0hpxENK5b7kxxpDmOpKHlXGBWuLGT_97ARSM,1210
48
- sonusai/mixture/feature.py,sha256=q9QZRe1qfKvHOuDxLAbpdrQF1gIqL8NRvk4WYWZX2IU,2996
49
- sonusai/mixture/generation.py,sha256=SMRYhTYmuUHejR894HDGdYSDOZvEdFobdfQPCTopB-E,40218
50
- sonusai/mixture/helpers.py,sha256=1La31bTdXA5gFCHRqQWDk6vfNlpKG1AX2jqlhOnObqU,20834
48
+ sonusai/mixture/feature.py,sha256=L0bPFG0RO-CrrtTStUMt_14euYsVo8_TWTP2IKSFKaA,2335
49
+ sonusai/mixture/generation.py,sha256=Okmyc7LVVdyt7UDzLSR4XdK-Q92vSQHX0RI__RJbJM8,38551
50
+ sonusai/mixture/helpers.py,sha256=UEN_9LttIZwvms9nOkjMr_Yf3lpb7sMPmDVUoX8D7yQ,15225
51
51
  sonusai/mixture/log_duration_and_sizes.py,sha256=qhgl87C2KbjxLdKEpjYOoqNL6rc-8-PB4R7Gx_7UG8g,1240
52
- sonusai/mixture/mixdb.py,sha256=Qj_12vZ4_4CdKrkWdBa0ysBt9LSCgs6YdJoiH3L9YQ0,65790
53
- sonusai/mixture/soundfile_audio.py,sha256=fAbNIW8Xi7tfglmrbOzMSLQIG0dZEqTjLxhPGUeFyFc,4073
54
- sonusai/mixture/sox_audio.py,sha256=QnHToWYy1l9kKGIefciUf6CdcAphDiaWcHo4imukUgY,16522
55
- sonusai/mixture/sox_augmentation.py,sha256=txaoSdbLdizrzBbdV0LYleM7lxitV3h27_C68Fij1GY,4506
52
+ sonusai/mixture/mixdb.py,sha256=W8B54U6f-8szMylXSnU0YzOR-a9M3XoCRpyqOgBIJuQ,73498
53
+ sonusai/mixture/soundfile_audio.py,sha256=At_ZC2b9pZ_9IYp1UxyPzRoBK9-1cKPCLMm74F1AjKE,4092
54
+ sonusai/mixture/sox_audio.py,sha256=7ouCLqXYS6tjG2L0v5lugVO7z5UwJmsr1VigbrXhs74,16725
55
+ sonusai/mixture/sox_augmentation.py,sha256=DtfGLPaB1BIt2wvTEA__MYkGFNU85Tuup5BFsIVrh0E,4546
56
56
  sonusai/mixture/spectral_mask.py,sha256=U9XJ_SAoI9b67K_3SE7bNw6U8cPGFOBttaZAxMjA_Jc,2042
57
- sonusai/mixture/target_class_balancing.py,sha256=B8h9fqdvzZgcpsi-Z91GBEi4YSZJj0uMGzNCeGQk7RU,4313
58
- sonusai/mixture/targets.py,sha256=QmhidE9wWU4oeumtUTHrndlcl0cG8_TiIzltnPwfBOg,6397
57
+ sonusai/mixture/target_class_balancing.py,sha256=o_TZ8kVYq10lgeXHh3GUFfflfdUvRt0FekFu2eaNkDs,4251
58
+ sonusai/mixture/targets.py,sha256=6emo2fxxp9ZhSpHuUM9xIjYMz8zeIHAw684jT3l7fAs,6442
59
59
  sonusai/mixture/tokenized_shell_vars.py,sha256=lXTzUDutuBWGV1zIsqeIxWmy-eKm0Vx1y8-iLdsL1gQ,4921
60
- sonusai/mixture/torchaudio_audio.py,sha256=169VXKEoOHc5nyiHJwaihkcQ_a1ZH_O-nnk9Gq4JtaQ,2887
61
- sonusai/mixture/torchaudio_augmentation.py,sha256=68QpJ4JcAH2fsL4qVck7VvBv615UbCBPEnNe4HMvA_8,3844
62
- sonusai/mixture/truth.py,sha256=IJ9BHrBOMlFS8UGlxuw0-Uao0kHX4mDCmcKXxDs0Lzs,2342
63
- sonusai/mixture/truth_functions/__init__.py,sha256=MEjNPOCd-cXLHpN09GuMv_DPIVWLLI6uhxsiKoaj6JM,1285
64
- sonusai/mixture/truth_functions/crm.py,sha256=mE0q7ax37ZUMVFRi5EW3uqFB8v50WkLB4tgPYdCPjAc,3212
65
- sonusai/mixture/truth_functions/datatypes.py,sha256=fbh16Q4Du4uCpQE_VGp8r3rhZTaRGK3glkkDmJ9BqPY,1285
66
- sonusai/mixture/truth_functions/energy.py,sha256=4uYBEaU-lPnmzJGROa77qWizDMNW2M-c7imOqApmXJE,5451
67
- sonusai/mixture/truth_functions/file.py,sha256=1jw7C3d45NXh4AZYfycyZm1aipX4xgEkpS-GZGgdJ6Y,1339
68
- sonusai/mixture/truth_functions/phoneme.py,sha256=5DbELzq6CDKmjvVndQzq_RzqOLCL7oBqiMEsAuak_UU,855
69
- sonusai/mixture/truth_functions/sed.py,sha256=2Aq_q5POrGbfpBCPFbuXY7LTjiVi5-gNHHr6-mezZqs,3471
70
- sonusai/mixture/truth_functions/target.py,sha256=FaIlsQUqEpP7pokCVQ_x19SLKzRT0Ncw4rgbv0e4_dw,3664
71
- sonusai/mkwav.py,sha256=scSULegmcm7zCCbi4YVI5sIEumxy2T01yNOQt5DlmOI,4064
60
+ sonusai/mixture/torchaudio_audio.py,sha256=72Hxo5TKAW7mYpRy15QFfD7AYDORBk6bVCcHENniWGw,3116
61
+ sonusai/mixture/torchaudio_augmentation.py,sha256=uFAKxIfs50J5FR-WXodsEACm2Ao-t5dZRSJ0DwTAfBg,3930
62
+ sonusai/mixture/truth.py,sha256=-CwwawFRGjqodR2yKvAMGL1XaYLct-tli7wZ2gbhLtQ,2121
63
+ sonusai/mixture/truth_functions/__init__.py,sha256=0mlOFChPnXG5BC0eKOe4n9VH17jY4iOqZFLuF6Gprdk,1505
64
+ sonusai/mixture/truth_functions/crm.py,sha256=iidcffXfqV8k9O5wt5KTWIAFaTSjmhV5ucKZPbTgpvQ,3809
65
+ sonusai/mixture/truth_functions/energy.py,sha256=dlxl5c58bv012KgyKeO78urXSh6FK3LdqiKk0SDkmS8,6540
66
+ sonusai/mixture/truth_functions/file.py,sha256=pyCAhx3PhJRBoZMrjoQI4Tbi5TN7sPembSVEr80Bu3g,1431
67
+ sonusai/mixture/truth_functions/metadata.py,sha256=aEZly5bJEaZpUBZonWvcu14_Dn3M2HamwTaM5Bg7Tm8,778
68
+ sonusai/mixture/truth_functions/metrics.py,sha256=xfH98eXBe20kwRk-tdWbBkOplF1cCA-u_naJUiTps0Y,873
69
+ sonusai/mixture/truth_functions/phoneme.py,sha256=jwBYiNwwBwh2tHtOJ2NopYWhT6y19kXzSIag0XW9GSY,778
70
+ sonusai/mixture/truth_functions/sed.py,sha256=C0n9DkfBNQblFsFCkPbooy54KuHSY7B0f1vLft2asdw,3832
71
+ sonusai/mixture/truth_functions/target.py,sha256=nSkHFESzCEOljcYf4jQ7FmxsAWJtMCRRWFKM_DyjoLU,4926
72
+ sonusai/mkwav.py,sha256=xoqrX76gC1zE-Xb1Zfm9ZpcZ95l0qF1ZyOPmLMkFomk,4053
72
73
  sonusai/onnx_predict.py,sha256=Y1VUN0wuvloEW46uxg7X4ywaec_Xx92djCU3BP0KAx0,8699
73
74
  sonusai/queries/__init__.py,sha256=bhoeOFfu9GA5DOUuxRrIev7MYdXaGN8xdKJ6BXyNNtQ,277
74
- sonusai/queries/queries.py,sha256=u8tZCJVnw9wJlwc03ue63FFqD5CHAKe4PWLJk0z4rto,7589
75
+ sonusai/queries/queries.py,sha256=N84UcRrgDPLGJZesS2KQ9eyRzPRSyukjOlc786h5Ehs,7509
75
76
  sonusai/speech/__init__.py,sha256=vqAymCBPjMUSM4OZKHTai6BYwXsOBlf_G_vOhELVf8I,133
76
- sonusai/speech/l2arctic.py,sha256=Gon9OPAtcI0kItQ87wuyrvNqDpo_Lad3N2lOXyLSwkY,3631
77
+ sonusai/speech/l2arctic.py,sha256=VQNKuTbmlbW0PJ7bOjx9sr0VjUYxJnxfTiPJIa4OOaA,3829
77
78
  sonusai/speech/librispeech.py,sha256=ugP3NVOenSsBF1cUG4Nyl7dumGHQmE4Ugk1yYjtOyj4,3070
78
79
  sonusai/speech/mcgill.py,sha256=sgPHEZTPHlFXF8GVYFfKXMUEyBikfKha2RWOPfpNy_U,1981
79
80
  sonusai/speech/textgrid.py,sha256=WvsUeamKoYyXBNnNnZgug-xfTiq2Z6RnFc1u0swmqNw,2813
@@ -81,13 +82,13 @@ sonusai/speech/timit.py,sha256=B1DZCS5Crt9Y54drqVqurhEiOMUZGxVOW7gxzZA5ErY,4099
81
82
  sonusai/speech/types.py,sha256=4eKVPAktpkIrZ2qoVp2iT45zxTVNocQEGT6O_Zlub_w,214
82
83
  sonusai/speech/vctk.py,sha256=WInvRRRkZCW6t_NcZAJffJzgCbyetal-j2w0kKX5SDw,1527
83
84
  sonusai/speech/voxceleb.py,sha256=Uu1kB1krf8hess1yuvGbYfV_VgYhklEyoz4I7KfrVpw,2658
84
- sonusai/summarize_metric_spenh.py,sha256=2HBFfVlezIoz18DTBi5rLyUqWy4QL87OXahMaJ6NDUQ,1818
85
- sonusai/utils/__init__.py,sha256=BAo0J8ZqDHiTb6dpfBu0KrueCtsSlrtOZ9Kstst3kBk,2342
85
+ sonusai/summarize_metric_spenh.py,sha256=2w81ZgJahYvD6wCpE3DFoUFrXexLXjO44ITRVm1HJXw,1858
86
+ sonusai/utils/__init__.py,sha256=z72OlzZCHpYfYHKnHn7jznj6Zt7zB-FyO6hIgFk45As,2379
86
87
  sonusai/utils/asl_p56.py,sha256=cPUVwXawF7vLJgs4zUtoRGk7Wdbe5KKti_-v_8xIU10,3862
87
88
  sonusai/utils/asr.py,sha256=20eKkatNqGrbxFQoyeCRzqXaSH3lcA-9ZXGneCXjLvs,2791
88
89
  sonusai/utils/asr_functions/__init__.py,sha256=HKGRm_c48tcxlfwqH63m-MvhAoK_pCcw76lxmFmiP_U,63
89
- sonusai/utils/asr_functions/aaware_whisper.py,sha256=MHH238wj6arkQUMDHqHjc4DDVY2sXzu6iGi3ISswTeM,2129
90
- sonusai/utils/audio_devices.py,sha256=Z_xstSy8KeJ2xtzHJGmrIHyCiNMgpdpJd5T-19u8dGU,1421
90
+ sonusai/utils/asr_functions/aaware_whisper.py,sha256=M9Y8Pgh1oIrDOPZZPSRPDig8foxfgs3f8AsoZ8W00B0,2120
91
+ sonusai/utils/audio_devices.py,sha256=_Eiah86SZjbdp2baD2AUVF4FmhseiNuG3KJkd_LbULk,2041
91
92
  sonusai/utils/braced_glob.py,sha256=uvxo7USbxH6cWuVdNeGrz1SbZISFR1gPGbpy0EWm3m8,1645
92
93
  sonusai/utils/calculate_input_shape.py,sha256=TIa_rHW3VIvOhlv5Wa3orcWFPMT-a3EPrIFHstbrmo4,906
93
94
  sonusai/utils/compress.py,sha256=tT983XlgRf9bzutCegtHzkfKHK5LZD6a_mMFP47FGMI,605
@@ -96,20 +97,21 @@ sonusai/utils/create_timestamp.py,sha256=s7ALOX3MAyK3EOX2BVOiYTIcspsKlIM6zXJk2cb
96
97
  sonusai/utils/create_ts_name.py,sha256=3xu10hbZkV18sDqK4oR1JYvXeYE53ufzddmvGYx83Vg,405
97
98
  sonusai/utils/dataclass_from_dict.py,sha256=iUagjF7CzbDIBKTX4ktd7EXn8q1jxmiRClMH3fu2_oA,389
98
99
  sonusai/utils/db.py,sha256=lI77MJJLs4CTYxhjFUvBom2Kk2imAP34okOeO4irbDc,371
99
- sonusai/utils/docstring.py,sha256=nJEwaVlOuSEZiSH34zwNdfGNxrY0NLCTZ7VoLzc9-cU,1447
100
- sonusai/utils/energy_f.py,sha256=4gN5mNGuHgCgUbnOQ9ReYkDqNvE2pueoYBYWE-GBQPU,1457
100
+ sonusai/utils/docstring.py,sha256=aPFrVpqlbYq3kIJE_sLCjhXWEqWCBo_q_DUmEXcGONQ,1516
101
+ sonusai/utils/energy_f.py,sha256=k1S5ELsNsm3Sn0RogFEzZv1bW-X8yl2dc2KjWne_t2I,1515
101
102
  sonusai/utils/engineering_number.py,sha256=SToFf6S0Xu0NtAJ1SjsVH4wxylH7qK8S9TBkPa15opY,5510
102
103
  sonusai/utils/get_frames_per_batch.py,sha256=xnq4tV7MT74N0H6b5ZsiAezqdXucboCLQw1Np9XpZbs,134
103
104
  sonusai/utils/get_label_names.py,sha256=df4jZVaQ3WnYQqNj21iUV4aYWyQEZUNmgs93qKW-_rA,820
104
105
  sonusai/utils/grouper.py,sha256=qyZ0nj84yOrC-RZsXHC-KJvcUliGktnV8S6-P3PD6_w,203
105
- sonusai/utils/human_readable_size.py,sha256=CmLxq9y5f-OPkwTEu4Gm0Io-H6p4SRhD2ciJRuYXfWk,293
106
+ sonusai/utils/human_readable_size.py,sha256=DOCS7SAymrtTZli8AczvyCMCh44r7ZDgVBA7jSZupmA,356
107
+ sonusai/utils/load_object.py,sha256=-XMMwSNUPhtg6G6FhLwL1zvxwu-PLwj25QYUEielW2k,356
106
108
  sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
107
109
  sonusai/utils/model_utils.py,sha256=OIJBhOjxR0wpxsd7A2r6J2AjqfdYgZzi6UEThw4S1lI,828
108
110
  sonusai/utils/numeric_conversion.py,sha256=iFPXFU8C_1mW5tmDqHq8-xP1tL8nVaSmhQRakdCqy30,328
109
- sonusai/utils/onnx_utils.py,sha256=mbat4xvLhKMSvMC2kTEc4ukc7PI_gjsG4IVGvzpcOd4,5764
111
+ sonusai/utils/onnx_utils.py,sha256=cN8NZDrERPvbbJFSGI9YzseCezAz-Bckfel-EhkfRUU,5860
110
112
  sonusai/utils/parallel.py,sha256=yvRZvZWPR5slM51i08m7sYx-Mvsb5oryCqqJXVoJ8tQ,2190
111
113
  sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
112
- sonusai/utils/print_mixture_details.py,sha256=Wh5M0aTy3NzxvR3P0HDlSq_S3G9L7LoQx-FnDCrHODs,2911
114
+ sonusai/utils/print_mixture_details.py,sha256=EypVeiQ8IjA0rGVfU91S3IIhzgGjkhU2oJ0DKJUBbWQ,2947
113
115
  sonusai/utils/ranges.py,sha256=-TtAR0Vg_j4kYtJOvEOYQllBZEat_KfUKsfRxr5oj-o,1235
114
116
  sonusai/utils/read_predict_data.py,sha256=PUSroxmWQGtr6_EcdSHmIFQoRGou8CKKqcggWylfTqQ,1056
115
117
  sonusai/utils/reshape.py,sha256=Ozuh3UlmAS5NCeOK7NR8KgcQacHvgq10pys0VfCnOPU,5746
@@ -119,7 +121,7 @@ sonusai/utils/stratified_shuffle_split.py,sha256=d7WLUirywSvgZWkt_5a0F8YvTnJjuXl
119
121
  sonusai/utils/write_audio.py,sha256=0lKdaX57N6H-UWdioqmXCJMjwT1eBz5B-bSGqDvloAc,838
120
122
  sonusai/utils/yes_or_no.py,sha256=0h1okjXmDNbJp7rZJFR2V-HFU1GJDm3YFTUVmYExkOU,263
121
123
  sonusai/vars.py,sha256=kBBzuvC8szmdIZEEDA7XXmD765addZKdM2aFipeGO1w,933
122
- sonusai-0.19.6.dist-info/METADATA,sha256=29GCEKJsRdTRsDJw4_wdxUWgKckdPBDPO2WVo9Bz_sY,2536
123
- sonusai-0.19.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
124
- sonusai-0.19.6.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
125
- sonusai-0.19.6.dist-info/RECORD,,
124
+ sonusai-0.19.9.dist-info/METADATA,sha256=rCXEzWOsVKZdZB8E5iPt0fachIQ_-zkmM1UNAe8JZc4,2535
125
+ sonusai-0.19.9.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
126
+ sonusai-0.19.9.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
127
+ sonusai-0.19.9.dist-info/RECORD,,