sonusai 0.17.0__py3-none-any.whl → 0.17.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.
Files changed (41) hide show
  1. sonusai/audiofe.py +22 -51
  2. sonusai/calc_metric_spenh.py +206 -213
  3. sonusai/doc/doc.py +1 -1
  4. sonusai/mixture/__init__.py +2 -0
  5. sonusai/mixture/audio.py +12 -0
  6. sonusai/mixture/datatypes.py +11 -3
  7. sonusai/mixture/mixdb.py +101 -0
  8. sonusai/mixture/soundfile_audio.py +39 -0
  9. sonusai/mixture/speaker_metadata.py +35 -0
  10. sonusai/mixture/torchaudio_audio.py +22 -0
  11. sonusai/mkmanifest.py +1 -1
  12. sonusai/onnx_predict.py +114 -410
  13. sonusai/queries/queries.py +1 -1
  14. sonusai/speech/__init__.py +3 -0
  15. sonusai/speech/l2arctic.py +116 -0
  16. sonusai/speech/librispeech.py +99 -0
  17. sonusai/speech/mcgill.py +70 -0
  18. sonusai/speech/textgrid.py +100 -0
  19. sonusai/speech/timit.py +135 -0
  20. sonusai/speech/types.py +12 -0
  21. sonusai/speech/vctk.py +52 -0
  22. sonusai/speech/voxceleb2.py +86 -0
  23. sonusai/utils/__init__.py +2 -1
  24. sonusai/utils/asr_manifest_functions/__init__.py +0 -1
  25. sonusai/utils/asr_manifest_functions/data.py +0 -8
  26. sonusai/utils/asr_manifest_functions/librispeech.py +1 -1
  27. sonusai/utils/asr_manifest_functions/mcgill_speech.py +1 -1
  28. sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py +1 -1
  29. sonusai/utils/braced_glob.py +7 -3
  30. sonusai/utils/onnx_utils.py +110 -106
  31. sonusai/utils/path_info.py +7 -0
  32. {sonusai-0.17.0.dist-info → sonusai-0.17.2.dist-info}/METADATA +2 -1
  33. {sonusai-0.17.0.dist-info → sonusai-0.17.2.dist-info}/RECORD +35 -30
  34. {sonusai-0.17.0.dist-info → sonusai-0.17.2.dist-info}/WHEEL +1 -1
  35. sonusai/calc_metric_spenh-save.py +0 -1334
  36. sonusai/onnx_predict-old.py +0 -240
  37. sonusai/onnx_predict-save.py +0 -487
  38. sonusai/ovino_predict.py +0 -508
  39. sonusai/ovino_query_devices.py +0 -47
  40. sonusai/torchl_onnx-old.py +0 -216
  41. {sonusai-0.17.0.dist-info → sonusai-0.17.2.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1 @@
1
- from dataclasses import dataclass
2
-
3
1
  TranscriptData = dict[str, str]
4
-
5
-
6
- @dataclass(frozen=True)
7
- class PathInfo:
8
- abs_path: str
9
- audio_filepath: str
@@ -1,4 +1,4 @@
1
- from sonusai.utils.asr_manifest_functions import PathInfo
1
+ from sonusai.utils import PathInfo
2
2
  from sonusai.utils.asr_manifest_functions import TranscriptData
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from sonusai.utils.asr_manifest_functions import PathInfo
1
+ from sonusai.utils import PathInfo
2
2
 
3
3
 
4
4
  def get_mcgill_speech_manifest_entry(entry: PathInfo, transcript_data: list[str]) -> dict:
@@ -1,4 +1,4 @@
1
- from sonusai.utils.asr_manifest_functions import PathInfo
1
+ from sonusai.utils import PathInfo
2
2
  from sonusai.utils.asr_manifest_functions import TranscriptData
3
3
 
4
4
 
@@ -1,9 +1,10 @@
1
1
  from typing import Generator
2
+ from typing import LiteralString
2
3
  from typing import Optional
3
4
  from typing import Set
4
5
 
5
6
 
6
- def expand_braces(text: str, seen: Optional[Set[str]] = None) -> Generator[str, None, None]:
7
+ def expand_braces(text: LiteralString | str | bytes, seen: Optional[Set[str]] = None) -> Generator[str, None, None]:
7
8
  """Brace-expansion pre-processing for glob.
8
9
 
9
10
  Expand all the braces, then run glob on each of the results.
@@ -16,6 +17,9 @@ def expand_braces(text: str, seen: Optional[Set[str]] = None) -> Generator[str,
16
17
  if seen is None:
17
18
  seen = set()
18
19
 
20
+ if not isinstance(text, str):
21
+ text = str(text)
22
+
19
23
  spans = [m.span() for m in re.finditer(r'\{[^{}]*}', text)][::-1]
20
24
  alts = [text[start + 1: stop - 1].split(',') for start, stop in spans]
21
25
 
@@ -31,7 +35,7 @@ def expand_braces(text: str, seen: Optional[Set[str]] = None) -> Generator[str,
31
35
  yield from expand_braces(''.join(replaced), seen)
32
36
 
33
37
 
34
- def braced_glob(pathname: str, recursive: bool = False) -> list[str]:
38
+ def braced_glob(pathname: LiteralString | str | bytes, recursive: bool = False) -> list[str]:
35
39
  from glob import glob
36
40
 
37
41
  result = []
@@ -41,7 +45,7 @@ def braced_glob(pathname: str, recursive: bool = False) -> list[str]:
41
45
  return result
42
46
 
43
47
 
44
- def braced_iglob(pathname: str, recursive: bool = False) -> Generator[str, None, None]:
48
+ def braced_iglob(pathname: LiteralString | str | bytes, recursive: bool = False) -> Generator[str, None, None]:
45
49
  from glob import iglob
46
50
 
47
51
  for expanded_path in expand_braces(pathname):
@@ -1,120 +1,134 @@
1
- from dataclasses import dataclass
1
+ from typing import Optional
2
+ from typing import Sequence
2
3
 
3
- from sonusai import logger
4
- from typing import Any #List, Optional, Tuple
5
- import onnxruntime as ort
6
- from onnxruntime import InferenceSession
7
- import onnx
4
+ from onnx import ModelProto
8
5
  from onnx import ValueInfoProto
9
- from os.path import basename, splitext, exists, isfile
6
+ from onnxruntime import InferenceSession
7
+ from onnxruntime import NodeArg
8
+ from onnxruntime import SessionOptions
9
+
10
+ REQUIRED_HPARAMS = ('feature', 'batch_size', 'timesteps', 'flatten', 'add1ch', 'truth_mutex')
11
+
12
+
13
+ def _extract_shapes(io: list[ValueInfoProto]) -> list[list[int] | str]:
14
+ shapes: list[list[int] | str] = []
15
+
16
+ # iterate through inputs of the graph to find shapes
17
+ for item in io:
18
+ # get tensor type: 0, 1, 2, etc.
19
+ tensor_type = item.type.tensor_type
20
+ # check if it has a shape
21
+ if tensor_type.HasField('shape'):
22
+ tmp_shape = []
23
+ # iterate through dimensions of the shape
24
+ for d in tensor_type.shape.dim:
25
+ if d.HasField('dim_value'):
26
+ # known dimension, int value
27
+ tmp_shape.append(d.dim_value)
28
+ elif d.HasField('dim_param'):
29
+ # dynamic dim with symbolic name of d.dim_param; set size to 0
30
+ tmp_shape.append(0)
31
+ else:
32
+ # unknown dimension with no name; also set to 0
33
+ tmp_shape.append(0)
34
+ # add as a list
35
+ shapes.append(tmp_shape)
36
+ else:
37
+ shapes.append('unknown rank')
10
38
 
39
+ return shapes
11
40
 
12
- @dataclass(frozen=True)
13
- class SonusAIMetaData:
14
- input_shape: list[int]
15
- output_shape: list[int]
16
- flattened: bool
17
- timestep: bool
18
- channel: bool
19
- mutex: bool
20
- feature: str
21
41
 
42
+ def get_and_check_inputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
43
+ from sonusai import logger
22
44
 
23
- def get_and_check_inputs(model: onnx.ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
24
- # ignore initializer inputs (only seen in older onnx < v1.5
45
+ # ignore initializer inputs (only seen in older ONNX < v1.5)
25
46
  initializer_names = [x.name for x in model.graph.initializer]
26
- onnx_inputs = [ipt for ipt in model.graph.input if ipt.name not in initializer_names]
27
- if len(onnx_inputs) != 1:
28
- logger.warning(f'Warning: onnx model does not have 1 input, but {len(onnx_inputs)}')
29
- #raise SystemExit(1)
30
-
31
- inshapes = []
32
- for inp in onnx_inputs: # iterate through inputs of the graph to find shapes
33
- tensor_type = inp.type.tensor_type # get tensor type: 0, 1, 2,
34
- if (tensor_type.HasField("shape")): # check if it has a shape:
35
- tmpshape = []
36
- for d in tensor_type.shape.dim: # iterate through dimensions of the shape
37
- if (d.HasField("dim_value")): # known dimension, int value
38
- tmpshape.append(d.dim_value)
39
- elif (d.HasField("dim_param")): # dynamic dim with symbolic name of d.dim_param
40
- tmpshape.append(0) # set size to 0
41
- else: # unknown dimension with no name
42
- tmpshape.append(0) # also set to 0
43
- inshapes.append(tmpshape) # add as a list
44
- else:
45
- inshapes.append("unknown rank")
47
+ inputs = [i for i in model.graph.input if i.name not in initializer_names]
48
+ if len(inputs) != 1:
49
+ logger.warning(f'Warning: ONNX model has {len(inputs)} inputs; expected only 1')
46
50
 
47
51
  # This one-liner works only if input has type and shape, returns a list
48
- #in0shape = [d.dim_value for d in onnx_inputs[0].type.tensor_type.shape.dim]
49
-
50
- return onnx_inputs, inshapes
51
-
52
-
53
- def get_and_check_outputs(model: onnx.ModelProto) -> tuple[list[ValueInfoProto], list[list[int | Any] | str]]:
54
- onnx_outputs = [opt for opt in model.graph.output]
55
- if len(onnx_outputs) != 1:
56
- logger.warning(f'Warning: onnx model does not have 1 output, but {len(onnx_outputs)}')
57
-
58
- oshapes = []
59
- for inp in onnx_outputs: # iterate through inputs of the graph to find shapes
60
- tensor_type = inp.type.tensor_type # get tensor type: 0, 1, 2,
61
- if (tensor_type.HasField("shape")): # check if it has a shape:
62
- tmpshape = []
63
- for d in tensor_type.shape.dim: # iterate through dimensions of the shape
64
- if (d.HasField("dim_value")): # known dimension, int value
65
- tmpshape.append(d.dim_value)
66
- elif (d.HasField("dim_param")): # dynamic dim with symbolic name of d.dim_param
67
- tmpshape.append(0) # set size to 0
68
- else: # unknown dimension with no name
69
- tmpshape.append(0) # also set to 0
70
- oshapes.append(tmpshape) # add as a list
71
- else:
72
- oshapes.append("unknown rank")
52
+ # shape0 = [d.dim_value for d in inputs[0].type.tensor_type.shape.dim]
53
+ shapes = _extract_shapes(inputs)
54
+
55
+ return inputs, shapes
56
+
57
+
58
+ def get_and_check_outputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
59
+ from sonusai import logger
60
+
61
+ outputs = [o for o in model.graph.output]
62
+ if len(outputs) != 1:
63
+ logger.warning(f'Warning: ONNX model has {len(outputs)} outputs; expected only 1')
73
64
 
74
- return onnx_outputs, oshapes
65
+ shapes = _extract_shapes(outputs)
75
66
 
67
+ return outputs, shapes
76
68
 
77
- def add_sonusai_metadata(model, hparams):
78
- """Add SonusAI hyper-parameter metadata to an ONNX model using key hparams
69
+
70
+ def add_sonusai_metadata(model: ModelProto, hparams: dict) -> ModelProto:
71
+ """Add SonusAI hyperparameters as metadata to an ONNX model using 'hparams' key
79
72
 
80
73
  :param model: ONNX model
81
- :hparams: dictionary of hyper-parameters, added
74
+ :param hparams: dictionary of hyperparameters to add
75
+ :return: ONNX model
76
+
82
77
  Note SonusAI conventions require models to have:
83
- - feature: Model feature type
84
- - is_flattened: Model input feature data is flattened (stride + bins combined)
85
- - timesteps: Size of timestep dimension (0 for no dimension)
86
- - add1ch: Model input has channel dimension
87
- - truth_mutex: Model label output is mutually exclusive
78
+ feature: Model feature type
79
+ batch_size: Model batch size
80
+ timesteps: Size of timestep dimension (0 for no dimension)
81
+ flatten: Model input feature data is flattened (stride + bins combined)
82
+ add1ch: Model input has channel dimension
83
+ truth_mutex: Model label output is mutually exclusive
88
84
  """
85
+ from sonusai import logger
86
+
87
+ # Note hparams should be a dict (i.e., extracted from checkpoint)
88
+ assert eval(str(hparams)) == hparams
89
+ for key in REQUIRED_HPARAMS:
90
+ if key not in hparams.keys():
91
+ logger.warning(f'Warning: SonusAI hyperparameters are missing: {key}')
89
92
 
90
- # Add hyper-parameters as metadata in onnx model under hparams key
91
- assert eval(str(hparams)) == hparams # Note hparams should be a dict (i.e. extracted from checkpoint)
92
93
  meta = model.metadata_props.add()
93
- meta.key = "hparams"
94
+ meta.key = 'hparams'
94
95
  meta.value = str(hparams)
95
96
 
96
97
  return model
97
98
 
98
99
 
99
- def get_sonusai_metadata(session: InferenceSession) -> SonusAIMetaData:
100
- """Get SonusAI hyper-parameter metadata from an ONNX Runtime session.
101
- Returns dictionary hparams
100
+ def get_sonusai_metadata(session: InferenceSession) -> Optional[dict]:
101
+ """Get SonusAI hyperparameter metadata from an ONNX Runtime session.
102
102
  """
103
+ from sonusai import logger
104
+
103
105
  meta = session.get_modelmeta()
104
- hparams = eval(meta.custom_metadata_map["hparams"])
106
+ if 'hparams' not in meta.custom_metadata_map.keys():
107
+ logger.warning("Warning: ONNX model metadata does not contain 'hparams'")
108
+ return None
105
109
 
106
- # m = model.get_modelmeta().custom_metadata_map
107
- # return SonusAIMetaData(input_shape=model.get_inputs()[0].shape,
108
- # output_shape=model.get_outputs()[0].shape,
109
- # flattened=m['is_flattened'] == 'True',
110
- # timestep=m['has_timestep'] == 'True',
111
- # channel=m['has_channel'] == 'True',
112
- # mutex=m['is_mutex'] == 'True',
113
- # feature=m['feature'])
110
+ hparams = eval(meta.custom_metadata_map['hparams'])
111
+ for key in REQUIRED_HPARAMS:
112
+ if key not in hparams.keys():
113
+ logger.warning(f'Warning: ONNX model does not have required SonusAI hyperparameters: {key}')
114
114
 
115
115
  return hparams
116
116
 
117
- def load_ort_session(model_path, providers=['CPUExecutionProvider']):
117
+
118
+ def load_ort_session(model_path: str, providers: Sequence[str | tuple[str, dict]] = None) -> tuple[
119
+ InferenceSession, SessionOptions, str, dict, list[NodeArg], list[NodeArg]]:
120
+ from os.path import basename
121
+ from os.path import exists
122
+ from os.path import isfile
123
+ from os.path import splitext
124
+
125
+ import onnxruntime as ort
126
+
127
+ from sonusai import logger
128
+
129
+ if providers is None:
130
+ providers = ['CPUExecutionProvider']
131
+
118
132
  if exists(model_path) and isfile(model_path):
119
133
  model_basename = basename(model_path)
120
134
  model_root = splitext(model_basename)[0]
@@ -123,32 +137,22 @@ def load_ort_session(model_path, providers=['CPUExecutionProvider']):
123
137
  session = ort.InferenceSession(model_path, providers=providers)
124
138
  options = ort.SessionOptions()
125
139
  except Exception as e:
126
- logger.exception(f'Error: could not load onnx model from {model_path}: {e}')
140
+ logger.exception(f'Error: could not load ONNX model from {model_path}: {e}')
127
141
  raise SystemExit(1)
128
142
  else:
129
143
  logger.exception(f'Error: model file does not exist: {model_path}')
130
144
  raise SystemExit(1)
131
145
 
132
146
  logger.info(f'Opened session with provider options: {session._provider_options}.')
133
- try:
134
- meta = session.get_modelmeta()
135
- hparams = eval(meta.custom_metadata_map["hparams"])
136
- logger.info(f'Sonusai hyper-parameter metadata was found in model with {len(hparams)} parameters, '
137
- f'checking for required ones ...')
138
- # Print to log here will fail if required parameters not available.
139
- logger.info(f'feature {hparams["feature"]}')
140
- logger.info(f'batch_size {hparams["batch_size"]}')
141
- logger.info(f'timesteps {hparams["timesteps"]}')
142
- logger.info(f'flatten, add1ch {hparams["flatten"]}, {hparams["add1ch"]}')
143
- logger.info(f'truth_mutex {hparams["truth_mutex"]}')
144
- except:
145
- hparams = None
146
- logger.warning(f'Warning: onnx model does not have required SonusAI hyper-parameters.')
147
+ hparams = get_sonusai_metadata(session)
148
+ if hparams is not None:
149
+ for key in REQUIRED_HPARAMS:
150
+ logger.info(f' {key:12} {hparams[key]}')
147
151
 
148
152
  inputs = session.get_inputs()
149
153
  outputs = session.get_outputs()
150
154
 
151
- #in_names = [n.name for n in session.get_inputs()]
152
- #out_names = [n.name for n in session.get_outputs()]
155
+ # in_names = [n.name for n in session.get_inputs()]
156
+ # out_names = [n.name for n in session.get_outputs()]
153
157
 
154
- return session, options, model_root, hparams, inputs, outputs
158
+ return session, options, model_root, hparams, inputs, outputs
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass(frozen=True)
5
+ class PathInfo:
6
+ abs_path: str
7
+ audio_filepath: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sonusai
3
- Version: 0.17.0
3
+ Version: 0.17.2
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
@@ -26,6 +26,7 @@ Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
26
26
  Requires-Dist: paho-mqtt (>=2.0.0,<3.0.0)
27
27
  Requires-Dist: pandas (>=2.1.1,<3.0.0)
28
28
  Requires-Dist: pesq (>=0.0.4,<0.0.5)
29
+ Requires-Dist: praatio (>=6.2.0,<7.0.0)
29
30
  Requires-Dist: pyaaware (>=1.5.7,<2.0.0)
30
31
  Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
31
32
  Requires-Dist: pydub (>=0.25.1,<0.26.0)
@@ -1,14 +1,13 @@
1
1
  sonusai/__init__.py,sha256=vzTFfRB-NeO-Sm3puySDJOybk3ND_Oj6w0EejQPmH1U,2978
2
2
  sonusai/aawscd_probwrite.py,sha256=GukR5owp_0A3DrqSl9fHWULYgclNft4D5OkHIwfxxkc,3698
3
- sonusai/audiofe.py,sha256=yPtbxeRAzlnPcRESXKNVexvIm6fM4WVxEHjd0w9n5O0,12455
4
- sonusai/calc_metric_spenh-save.py,sha256=-LR5BtAnYNYKav1B2ZsB7gGevidCsQ91yFEaH8Ycyr8,61765
5
- sonusai/calc_metric_spenh.py,sha256=_92RWCyxAf7_S61L5oX6o4GuvuOCDKn7BPg7pB0r1kY,61836
3
+ sonusai/audiofe.py,sha256=AHXV7fQKumkwUSbOS-ZU6Cp1VF88DRtqt7foVbf-Nh8,11148
4
+ sonusai/calc_metric_spenh.py,sha256=Xgy9EKbZRPAydjTZbpZjaqLBNkjQPjDmSbfL8PbVSgY,62157
6
5
  sonusai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
6
  sonusai/data/genmixdb.yml,sha256=-XSs_hUR6wHJVoTPmSewzXL7u61X-xmHY46lNPatxSE,1025
8
7
  sonusai/data/speech_ma01_01.wav,sha256=PK0vMKg-NR6rPE3KouxHGF6PKXnJCr7AwjMqfu98LUA,76644
9
8
  sonusai/data/whitenoise.wav,sha256=I2umov0m34y56F9IsIBi1XtE76ZeZaSKDf70cJRe3pI,1920044
10
9
  sonusai/doc/__init__.py,sha256=rP5Hgn0Iys_xkuv4caxngdqehuU4zLZsiKuv8Nde67M,19
11
- sonusai/doc/doc.py,sha256=3z210v6ZckuOlsGZ3ySQBdlCNmBp2M1ahqhqG_eUN58,22664
10
+ sonusai/doc/doc.py,sha256=4NEZ2K-hTk7Y1Gxx09UEjNhiYkD9xid-kJ1Nt8H5_gM,22670
12
11
  sonusai/doc.py,sha256=l8CaFgLI8mqx4tn0aXfxKqa2dy9GgC0zjYxZAkpmi1E,878
13
12
  sonusai/genft.py,sha256=OzET3iTE-QhrUckzidfZvCDXZlAxIF5Xe5NEf856Vvk,5662
14
13
  sonusai/genmix.py,sha256=TU5aTebGHsbfwsRbynYbegGBelSma9khuQkDk0dFE3I,7075
@@ -29,28 +28,29 @@ sonusai/metrics/class_summary.py,sha256=4Mb25nuk6eqotnQSFMuOQL3zofGcpNXDfDlPa513
29
28
  sonusai/metrics/confusion_matrix_summary.py,sha256=3qg6TMKjJeHtNjj2YnNjPFSlMrQXt0Zcu1dLkGB_aPU,4001
30
29
  sonusai/metrics/one_hot.py,sha256=QSeH_GdqBpOAKLrNnQ8gjcPC-vSdUqC0yPEQueTA6VI,13548
31
30
  sonusai/metrics/snr_summary.py,sha256=P4U5_Xr7v9F8kF-rZBnpsVNt3p42rIVS6zmch8yfVfg,5575
32
- sonusai/mixture/__init__.py,sha256=BfSJL91URq8-JDlbtpc5SQoQRWEUXvxKozbuquX4Mok,5326
33
- sonusai/mixture/audio.py,sha256=S-ZROf5rVvwv1TCEuwJHz1FfX4oVubb4QhbybUMMqtM,2150
31
+ sonusai/mixture/__init__.py,sha256=yszEbRnlxeZXSegEBUVwyrSZwNIl6ufaJu_NiZ-1rqY,5399
32
+ sonusai/mixture/audio.py,sha256=2lqy0DtTMTYhX4aAOIvVtLNn6QB5ivTa7cJIaAlbfAg,2385
34
33
  sonusai/mixture/augmentation.py,sha256=Blb90tdTwBOj5w9tRcYyS5H67YJuFiXsGqwZWd7ON4g,10468
35
34
  sonusai/mixture/class_count.py,sha256=_wFnVl2yEOnbor7pLg7cYOUeX6nioov-03Cv3SEbh2k,996
36
35
  sonusai/mixture/config.py,sha256=d2IzZ1samHWGMpoKzSmUwMyAWWhgmyNoxyO8oiUwbsg,22193
37
36
  sonusai/mixture/constants.py,sha256=xjCskcQi6khqYZDf7j6z1OkeN1C6wE06kBBapcJiNI4,1428
38
- sonusai/mixture/datatypes.py,sha256=zaxfOHw8ddt-i8JPYOPnlqWz_EHBEDoO4q2VAqJViHM,8173
37
+ sonusai/mixture/datatypes.py,sha256=mMNxtzyDvAmtuoTHVVJP7jBi6OH-QyC1NfC_ZIiuLlY,8440
39
38
  sonusai/mixture/eq_rule_is_valid.py,sha256=MpQwRA5M76wSiQWEI1lW2cLFdPaMttBLcQp3tWD8efM,1243
40
39
  sonusai/mixture/feature.py,sha256=Rwuf82IoXzhHPGbKYVGcatImF_ssBf_FfvbqghVPXtg,4116
41
40
  sonusai/mixture/generation.py,sha256=miUrc3QOSUNIG6mDkiMCZ6M2ulivUZxlYUAJUOVomWc,39039
42
41
  sonusai/mixture/helpers.py,sha256=GSGSD2KnvOeEIB6IwNTxyaQNjghTSBMB729kUEd_RiM,22403
43
42
  sonusai/mixture/log_duration_and_sizes.py,sha256=baTUpqyM15wA125jo9E3posmVJUe3WlpksyO6v9Jul0,1347
44
43
  sonusai/mixture/mapped_snr_f.py,sha256=mlbYM1t14OXe_Zg4CjpWTuA_Zun4W0O3bSUXeodRBQs,1845
45
- sonusai/mixture/mixdb.py,sha256=9Pe0mEG8pnEf9NZynTIldc05GfdOrgmcVoIt63RG5DA,45279
46
- sonusai/mixture/soundfile_audio.py,sha256=Ow_IWIMz4pMsLxMP_JsQ8AuHLCWlYQinLa58CFW97f8,2804
44
+ sonusai/mixture/mixdb.py,sha256=PvLeEOLn2n0EfBRe7GuvUQfOmj3SKOrzjUimw2qRHP8,49792
45
+ sonusai/mixture/soundfile_audio.py,sha256=mHa5SIXsu_uE0j3DO52GydRJrvWSzU_nII-7YJfQ6Qo,4154
47
46
  sonusai/mixture/sox_audio.py,sha256=HT3kYA9TP5QPCuoOJdUMnGVN-qY6q96DGL8zxuog76o,12277
48
47
  sonusai/mixture/sox_augmentation.py,sha256=F9tBdNvX2guCn7gRppAFrxRnBtjw9q6qAq2_v_A4hh0,4490
48
+ sonusai/mixture/speaker_metadata.py,sha256=l98avdxLYUsSDZ88xUjfvHnACkbnD0_Dg1aBGDbzS9I,1380
49
49
  sonusai/mixture/spectral_mask.py,sha256=8AkCwhy-PSdP1Uri9miKZP-bXFYnFcH_c9xZCGrHavU,2071
50
50
  sonusai/mixture/target_class_balancing.py,sha256=NTNiKZH0_PWLooeow0l41CjJKK8ZTMVbUqz9ZkaNtWk,4900
51
51
  sonusai/mixture/targets.py,sha256=wyy5vhLhuN-hqBMBGoziVvEJg3FKFvJFgmEE7_LaV2M,7908
52
52
  sonusai/mixture/tokenized_shell_vars.py,sha256=gCxw8SQUcal6mqWKF7hOBTgSQmbJUk1nT0Gn3H8GA0U,4705
53
- sonusai/mixture/torchaudio_audio.py,sha256=qeYlW2G1q47Dml_Lf12Y9L5C0evo-heGw1NT470ZhGo,2395
53
+ sonusai/mixture/torchaudio_audio.py,sha256=KhHeOMsjmbwOaAcoKD61aFvYBYSlA8OysfT5iGn45MA,3010
54
54
  sonusai/mixture/torchaudio_augmentation.py,sha256=1vEDHI0caL1vrgoY2lAWe4CiHE2jKRuKKH7x23GHw0w,4390
55
55
  sonusai/mixture/truth.py,sha256=Y41pZ52Xkols9LUler0NlgnilUOscBIucmw4GcxXNzU,1612
56
56
  sonusai/mixture/truth_functions/__init__.py,sha256=82lKYHhLy8KW3gHngrocoqwupGVLVsWdIXdYs3vhjOc,359
@@ -61,32 +61,36 @@ sonusai/mixture/truth_functions/file.py,sha256=jOJuC_3y9BH6GGOp9eKcbVrHLVRzUA80B
61
61
  sonusai/mixture/truth_functions/phoneme.py,sha256=stYdlPuNytQK_LLT61OJLfYSqKd-sDjQZdtJKGzt5wA,479
62
62
  sonusai/mixture/truth_functions/sed.py,sha256=8cHjEFjZaH_0hIOHhPmj4AJz2GpEADM6Ys2x4NoiWSY,2469
63
63
  sonusai/mixture/truth_functions/target.py,sha256=KAsjugDRooOA5BRcHVAbZRgV7l8S5CFg7CZ0XtKZaQ0,5764
64
- sonusai/mkmanifest.py,sha256=7lfK7YOdgAEP_Lxrf-YDxZ5iLH9MJuaOltBVpav2M9M,8705
64
+ sonusai/mkmanifest.py,sha256=imI8swwPYVzumrUYEL-9JLvun-ez98PtlUBj2b729k8,8682
65
65
  sonusai/mkwav.py,sha256=kLfC2ZuF-t8P97nqYw2falTZpymxAeXv0YTJCe6nK10,5356
66
- sonusai/onnx_predict-old.py,sha256=Bz_pR28oAZBarNajlKwyzBxmW7ktum77SmxDN2onKPM,9060
67
- sonusai/onnx_predict-save.py,sha256=ewiV5-HcW5zcDWuIF9xEbdBwbdL8vNWfu2_kaur5jAo,22354
68
- sonusai/onnx_predict.py,sha256=-ETvGH7fHXjnmY-c2r_8gOHEX1VSLwdSToZ6gSBP3_w,23021
69
- sonusai/ovino_predict.py,sha256=QtWY_YEdaeqJL5yikfeeDwhbBtjXYjGNtR9310PGGSc,21830
70
- sonusai/ovino_query_devices.py,sha256=XkXdOlZldI0MfG6nXZfTq8OgECaY8gAzQl36sJRuaIU,1584
66
+ sonusai/onnx_predict.py,sha256=ZhicNEbjxm34edIrUcmuvKkV3NRFQk4LBn1LUCFdPjg,8733
71
67
  sonusai/plot.py,sha256=ERkmxMM3qjcCDm4LGDQY4fRAncCYAzP7uW8iZ7_brcg,17105
72
68
  sonusai/post_spenh_targetf.py,sha256=xOz5T6WZuyTHmfbtILIY9skgH064Wvi2GF2Bo5L3YMU,4998
73
69
  sonusai/queries/__init__.py,sha256=oKY5JeqZ4Cz7DwCwPc1_ydB8bUs6KaMcWFp_w02TjOs,255
74
- sonusai/queries/queries.py,sha256=FNMUKnoY_Ya9S5sNhsB8ppwy0B7V55ilbbjhQRv_UN8,7552
70
+ sonusai/queries/queries.py,sha256=oV-m9uiLZOwYTK-Wo7Gf8dpGisaoGf6uDsAJAarVqZI,7553
71
+ sonusai/speech/__init__.py,sha256=SuPcU_K9wQISsZRIzsRNLtEC6cb616l-Jlx3PU-HWMs,113
72
+ sonusai/speech/l2arctic.py,sha256=28TT3CohvPu98YNUb8O7rWHAYgPGwYTOLSdfNQjOuyc,3736
73
+ sonusai/speech/librispeech.py,sha256=A0IpamojCPXyJiHcjCtI7yNWdMjB00cbggjHslssrg8,3120
74
+ sonusai/speech/mcgill.py,sha256=jcddj64fLdV3sO6CJNafm3w-2SnYoyQtU90odXhdaaE,1976
75
+ sonusai/speech/textgrid.py,sha256=8hB6SdEEXxo6JXVFq8mJ1-ilRbBiRXhaHTQjA-HWg-0,3385
76
+ sonusai/speech/timit.py,sha256=1vWgj6isD3ATOjMJSTjOPLmDkYyB65M5MwYipEmLEvg,4081
77
+ sonusai/speech/types.py,sha256=4eKVPAktpkIrZ2qoVp2iT45zxTVNocQEGT6O_Zlub_w,214
78
+ sonusai/speech/vctk.py,sha256=EAMEBAzjZUI6dw15n-yI2oCN-H4tzM9t4aUVlOxpAbo,1540
79
+ sonusai/speech/voxceleb2.py,sha256=-u0mtxFm4chFipLgMGZXR5EBDtYTCQoU1_j_wYTGwPY,2158
75
80
  sonusai/summarize_metric_spenh.py,sha256=OiZe_bhCq5esXNhsOkHDD7g4ssYrpENDHvDVoPzV9iw,1822
76
- sonusai/torchl_onnx-old.py,sha256=5JYow3XpBaUdtuyAW0mOZyCKL_4FrHvEekYBRdDT6KA,8967
77
81
  sonusai/tplot.py,sha256=85T6OPZfxVegHBiSuilFpdgCNMEE0VKAuciNy4rCY5Y,14544
78
- sonusai/utils/__init__.py,sha256=TCXlcW8W0Up2f5ciSgz3DabvH1MxrrWD0LK6pQTJkeA,2215
82
+ sonusai/utils/__init__.py,sha256=y2Xe72QMNk8LbbjdOUOHiR5eVg32fYrFhinWSuSHi-w,2248
79
83
  sonusai/utils/asl_p56.py,sha256=-bvQpd-jRQVURbkZJpRoyEAq6gTv9Rc3oFDbh5_lcjY,3861
80
84
  sonusai/utils/asr.py,sha256=6y6VYJizHpuQ3MgKbEQ4t2gofO-MW6Ez23oAd6d23IE,2920
81
85
  sonusai/utils/asr_functions/__init__.py,sha256=JyHK67s97bw7QzrlkboWhws4yNytdPatqzLJxfwx-yw,43
82
86
  sonusai/utils/asr_functions/aaware_whisper.py,sha256=LzO9CZV0wBWkjmCR2nSWN_AW9UJwriAsC1OYSlfVeT8,1981
83
- sonusai/utils/asr_manifest_functions/__init__.py,sha256=V-w4R7SHUyoeDuMR3tS12j6DGhmfTlUibMKgq1c6ga0,370
84
- sonusai/utils/asr_manifest_functions/data.py,sha256=mJsaHccBReguOJu9qsshRhL-3GbeyqM0-PXMseFnZbE,151
85
- sonusai/utils/asr_manifest_functions/librispeech.py,sha256=HIaytcYmjRUkuR6fCQlv3Jh3IDWSox_A6WFcFFAHN9M,1635
86
- sonusai/utils/asr_manifest_functions/mcgill_speech.py,sha256=2uF9qgBwcue9W9dlRo16Kvr3jX5g53AGjW2rwob-Cqk,957
87
- sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py,sha256=-69lM0dz18KbU5_-dmSeqDoNNwgJj4UlxgGkNBEi3wM,2169
87
+ sonusai/utils/asr_manifest_functions/__init__.py,sha256=jfi9xC5c86F_aMSsI5Xj-pxWGxuQ7fwZ8Wdf4T7kDsA,343
88
+ sonusai/utils/asr_manifest_functions/data.py,sha256=nO4oT3EQmydwn1pzc-ZM09yz4X2ic-LQuHzGEnJhKe8,32
89
+ sonusai/utils/asr_manifest_functions/librispeech.py,sha256=_3tGc8qfAUpYJZ0_avpW0vGp7zjdpeqj1HAgXi3TL4Q,1612
90
+ sonusai/utils/asr_manifest_functions/mcgill_speech.py,sha256=dW-5XTC5xOY3PHU2DvlWNWDeoprXDD0Zq2dXDdPAjzE,934
91
+ sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py,sha256=9iMrnE-qabLMnyewyxsBMl0uCS8yS7BPJOdmUoOnGAc,2146
88
92
  sonusai/utils/audio_devices.py,sha256=LgaXTln1oRArBzaet3rZiIO2plgtaThuGBc3sJ_sLlo,1414
89
- sonusai/utils/braced_glob.py,sha256=h4hab7YDbM4CjLg9iSzyHZrkd22IPUOY5zZqHdifkh8,1510
93
+ sonusai/utils/braced_glob.py,sha256=Z_XIpPK17QiP1JbzAnUC5w3oyG8ZovoyM22Wh-Q_vWU,1675
90
94
  sonusai/utils/calculate_input_shape.py,sha256=63ILxibYKuTQozY83QN8Y2OOhBEbW_1X47Q0askcHDM,984
91
95
  sonusai/utils/convert_string_to_number.py,sha256=i17yIxurp8Iz6NPE-imTRlARrXWqadwm8qbOTuzHZvE,236
92
96
  sonusai/utils/create_timestamp.py,sha256=TxoQXWZ3SFdBEHLOv-ujeIsTEJuiFnKOGRy-FQq45YU,148
@@ -103,8 +107,9 @@ sonusai/utils/human_readable_size.py,sha256=SjYT0fUlpbfCzCXHo6csir-VMwqfs5ogr-fg
103
107
  sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
104
108
  sonusai/utils/model_utils.py,sha256=lt2KOGJqsinG71W0i3U29UXFO-47GMAlEabsf2um7bA,862
105
109
  sonusai/utils/numeric_conversion.py,sha256=GRO_2Fba8CcxcFY7bEXKOEUEUX6neA-VN__Bxi1ULsE,340
106
- sonusai/utils/onnx_utils.py,sha256=L0BcwF0or1UwxYWzvWNWNJHKvG_oEmI2AxYh4msp2vc,6862
110
+ sonusai/utils/onnx_utils.py,sha256=nh2dUDeuERto-0NnTwZ3a6YKKcZFbZjqLLBVzN2l0IU,5682
107
111
  sonusai/utils/parallel.py,sha256=bxedjCzBv9oxzU7NajRr6mOKmkCWr2P7FWAI0p2p9N8,1981
112
+ sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
108
113
  sonusai/utils/print_mixture_details.py,sha256=BzYM4-wHHNa6zxPzBMUJxwKt0gKHmvbwdd7Yp0w15Yk,3017
109
114
  sonusai/utils/ranges.py,sha256=NPBZOVzMb95GTOIxltVO-wSzgcXqZ14wbdV46JDLKrw,1222
110
115
  sonusai/utils/read_mixture_data.py,sha256=Sb30RgSpw6DnH_iD81O7G_KOsdfjQWWLk3euEkxfMa8,453
@@ -116,7 +121,7 @@ sonusai/utils/stratified_shuffle_split.py,sha256=rJNXvBp-GxoKzH3OpL7k0ANSu5xMP2z
116
121
  sonusai/utils/wave.py,sha256=O4ZXkZ6wjrKGa99wBCdFd8G6bp91MXXDnmGihpaEMh0,856
117
122
  sonusai/utils/yes_or_no.py,sha256=eMLXBVH0cEahiXY4W2KNORmwNQ-ba10eRtldh0y4NYg,263
118
123
  sonusai/vars.py,sha256=m2AefF0m5bXWGXpJj8Pi42zWL2ydeEj7bkak3GrtMyM,940
119
- sonusai-0.17.0.dist-info/METADATA,sha256=wn6MaT5JXlVzp45_huLIAnJeH04kQZm8r0_vWiDX3LU,2443
120
- sonusai-0.17.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
121
- sonusai-0.17.0.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
122
- sonusai-0.17.0.dist-info/RECORD,,
124
+ sonusai-0.17.2.dist-info/METADATA,sha256=eZmrmMohaVLBAz3v2lGdBcwGCjnszgDiKcAHI9i_2YE,2483
125
+ sonusai-0.17.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
126
+ sonusai-0.17.2.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
127
+ sonusai-0.17.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.8.1
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any