sonusai 0.16.1__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.
@@ -1,65 +1,158 @@
1
- from dataclasses import dataclass
1
+ from typing import Optional
2
+ from typing import Sequence
2
3
 
4
+ from onnx import ModelProto
5
+ from onnx import ValueInfoProto
3
6
  from onnxruntime import InferenceSession
7
+ from onnxruntime import NodeArg
8
+ from onnxruntime import SessionOptions
4
9
 
10
+ REQUIRED_HPARAMS = ('feature', 'batch_size', 'timesteps', 'flatten', 'add1ch', 'truth_mutex')
5
11
 
6
- @dataclass(frozen=True)
7
- class SonusAIMetaData:
8
- input_shape: list[int]
9
- output_shape: list[int]
10
- flattened: bool
11
- timestep: bool
12
- channel: bool
13
- mutex: bool
14
- feature: str
15
12
 
13
+ def _extract_shapes(io: list[ValueInfoProto]) -> list[list[int] | str]:
14
+ shapes: list[list[int] | str] = []
16
15
 
17
- def add_sonusai_metadata(model,
18
- is_flattened: bool = True,
19
- has_timestep: bool = True,
20
- has_channel: bool = False,
21
- is_mutex: bool = True,
22
- feature: str = ''):
23
- """Add SonusAI metadata to an ONNX model.
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')
38
+
39
+ return shapes
40
+
41
+
42
+ def get_and_check_inputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
43
+ from sonusai import logger
44
+
45
+ # ignore initializer inputs (only seen in older ONNX < v1.5)
46
+ initializer_names = [x.name for x in model.graph.initializer]
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')
50
+
51
+ # This one-liner works only if input has type and shape, returns a list
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
24
56
 
25
- :param model: ONNX model
26
- :param is_flattened: Model feature data is flattened
27
- :param has_timestep: Model has timestep dimension
28
- :param has_channel: Model has channel dimension
29
- :param is_mutex: Model label output is mutually exclusive
30
- :param feature: Model feature type
31
- """
32
- is_flattened_flag = model.metadata_props.add()
33
- is_flattened_flag.key = 'is_flattened'
34
- is_flattened_flag.value = str(is_flattened)
35
57
 
36
- has_timestep_flag = model.metadata_props.add()
37
- has_timestep_flag.key = 'has_timestep'
38
- has_timestep_flag.value = str(has_timestep)
58
+ def get_and_check_outputs(model: ModelProto) -> tuple[list[ValueInfoProto], list[list[int] | str]]:
59
+ from sonusai import logger
39
60
 
40
- has_channel_flag = model.metadata_props.add()
41
- has_channel_flag.key = 'has_channel'
42
- has_channel_flag.value = str(has_channel)
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')
43
64
 
44
- is_mutex_flag = model.metadata_props.add()
45
- is_mutex_flag.key = 'is_mutex'
46
- is_mutex_flag.value = str(is_mutex)
65
+ shapes = _extract_shapes(outputs)
66
+
67
+ return outputs, shapes
68
+
69
+
70
+ def add_sonusai_metadata(model: ModelProto, hparams: dict) -> ModelProto:
71
+ """Add SonusAI hyperparameters as metadata to an ONNX model using 'hparams' key
72
+
73
+ :param model: ONNX model
74
+ :param hparams: dictionary of hyperparameters to add
75
+ :return: ONNX model
76
+
77
+ Note SonusAI conventions require models to have:
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
84
+ """
85
+ from sonusai import logger
47
86
 
48
- feature_flag = model.metadata_props.add()
49
- feature_flag.key = 'feature'
50
- feature_flag.value = str(feature)
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}')
92
+
93
+ meta = model.metadata_props.add()
94
+ meta.key = 'hparams'
95
+ meta.value = str(hparams)
51
96
 
52
97
  return model
53
98
 
54
99
 
55
- def get_sonusai_metadata(model: InferenceSession) -> SonusAIMetaData:
56
- """Get SonusAI metadata from an ONNX model.
100
+ def get_sonusai_metadata(session: InferenceSession) -> Optional[dict]:
101
+ """Get SonusAI hyperparameter metadata from an ONNX Runtime session.
57
102
  """
58
- m = model.get_modelmeta().custom_metadata_map
59
- return SonusAIMetaData(input_shape=model.get_inputs()[0].shape,
60
- output_shape=model.get_outputs()[0].shape,
61
- flattened=m['is_flattened'] == 'True',
62
- timestep=m['has_timestep'] == 'True',
63
- channel=m['has_channel'] == 'True',
64
- mutex=m['is_mutex'] == 'True',
65
- feature=m['feature'])
103
+ from sonusai import logger
104
+
105
+ meta = session.get_modelmeta()
106
+ if 'hparams' not in meta.custom_metadata_map.keys():
107
+ logger.warning("Warning: ONNX model metadata does not contain 'hparams'")
108
+ return None
109
+
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
+
115
+ return hparams
116
+
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
+
132
+ if exists(model_path) and isfile(model_path):
133
+ model_basename = basename(model_path)
134
+ model_root = splitext(model_basename)[0]
135
+ logger.info(f'Importing model from {model_basename}')
136
+ try:
137
+ session = ort.InferenceSession(model_path, providers=providers)
138
+ options = ort.SessionOptions()
139
+ except Exception as e:
140
+ logger.exception(f'Error: could not load ONNX model from {model_path}: {e}')
141
+ raise SystemExit(1)
142
+ else:
143
+ logger.exception(f'Error: model file does not exist: {model_path}')
144
+ raise SystemExit(1)
145
+
146
+ logger.info(f'Opened session with provider options: {session._provider_options}.')
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]}')
151
+
152
+ inputs = session.get_inputs()
153
+ outputs = session.get_outputs()
154
+
155
+ # in_names = [n.name for n in session.get_inputs()]
156
+ # out_names = [n.name for n in session.get_outputs()]
157
+
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.16.1
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,13 +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=3IhkQhNt2DfYDe8TxLF5x8NGFwPdOtYSzgE66joTFJg,10516
4
- sonusai/calc_metric_spenh.py,sha256=O4D5VeJ68Ko4UVsxAra0J7a6LUBcqFwDsLbtc4vKGAg,61833
3
+ sonusai/audiofe.py,sha256=AHXV7fQKumkwUSbOS-ZU6Cp1VF88DRtqt7foVbf-Nh8,11148
4
+ sonusai/calc_metric_spenh.py,sha256=Xgy9EKbZRPAydjTZbpZjaqLBNkjQPjDmSbfL8PbVSgY,62157
5
5
  sonusai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sonusai/data/genmixdb.yml,sha256=-XSs_hUR6wHJVoTPmSewzXL7u61X-xmHY46lNPatxSE,1025
7
7
  sonusai/data/speech_ma01_01.wav,sha256=PK0vMKg-NR6rPE3KouxHGF6PKXnJCr7AwjMqfu98LUA,76644
8
8
  sonusai/data/whitenoise.wav,sha256=I2umov0m34y56F9IsIBi1XtE76ZeZaSKDf70cJRe3pI,1920044
9
9
  sonusai/doc/__init__.py,sha256=rP5Hgn0Iys_xkuv4caxngdqehuU4zLZsiKuv8Nde67M,19
10
- sonusai/doc/doc.py,sha256=3z210v6ZckuOlsGZ3ySQBdlCNmBp2M1ahqhqG_eUN58,22664
10
+ sonusai/doc/doc.py,sha256=4NEZ2K-hTk7Y1Gxx09UEjNhiYkD9xid-kJ1Nt8H5_gM,22670
11
11
  sonusai/doc.py,sha256=l8CaFgLI8mqx4tn0aXfxKqa2dy9GgC0zjYxZAkpmi1E,878
12
12
  sonusai/genft.py,sha256=OzET3iTE-QhrUckzidfZvCDXZlAxIF5Xe5NEf856Vvk,5662
13
13
  sonusai/genmix.py,sha256=TU5aTebGHsbfwsRbynYbegGBelSma9khuQkDk0dFE3I,7075
@@ -28,28 +28,29 @@ sonusai/metrics/class_summary.py,sha256=4Mb25nuk6eqotnQSFMuOQL3zofGcpNXDfDlPa513
28
28
  sonusai/metrics/confusion_matrix_summary.py,sha256=3qg6TMKjJeHtNjj2YnNjPFSlMrQXt0Zcu1dLkGB_aPU,4001
29
29
  sonusai/metrics/one_hot.py,sha256=QSeH_GdqBpOAKLrNnQ8gjcPC-vSdUqC0yPEQueTA6VI,13548
30
30
  sonusai/metrics/snr_summary.py,sha256=P4U5_Xr7v9F8kF-rZBnpsVNt3p42rIVS6zmch8yfVfg,5575
31
- sonusai/mixture/__init__.py,sha256=BfSJL91URq8-JDlbtpc5SQoQRWEUXvxKozbuquX4Mok,5326
32
- 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
33
33
  sonusai/mixture/augmentation.py,sha256=Blb90tdTwBOj5w9tRcYyS5H67YJuFiXsGqwZWd7ON4g,10468
34
34
  sonusai/mixture/class_count.py,sha256=_wFnVl2yEOnbor7pLg7cYOUeX6nioov-03Cv3SEbh2k,996
35
35
  sonusai/mixture/config.py,sha256=d2IzZ1samHWGMpoKzSmUwMyAWWhgmyNoxyO8oiUwbsg,22193
36
36
  sonusai/mixture/constants.py,sha256=xjCskcQi6khqYZDf7j6z1OkeN1C6wE06kBBapcJiNI4,1428
37
- sonusai/mixture/datatypes.py,sha256=zaxfOHw8ddt-i8JPYOPnlqWz_EHBEDoO4q2VAqJViHM,8173
37
+ sonusai/mixture/datatypes.py,sha256=mMNxtzyDvAmtuoTHVVJP7jBi6OH-QyC1NfC_ZIiuLlY,8440
38
38
  sonusai/mixture/eq_rule_is_valid.py,sha256=MpQwRA5M76wSiQWEI1lW2cLFdPaMttBLcQp3tWD8efM,1243
39
39
  sonusai/mixture/feature.py,sha256=Rwuf82IoXzhHPGbKYVGcatImF_ssBf_FfvbqghVPXtg,4116
40
40
  sonusai/mixture/generation.py,sha256=miUrc3QOSUNIG6mDkiMCZ6M2ulivUZxlYUAJUOVomWc,39039
41
41
  sonusai/mixture/helpers.py,sha256=GSGSD2KnvOeEIB6IwNTxyaQNjghTSBMB729kUEd_RiM,22403
42
42
  sonusai/mixture/log_duration_and_sizes.py,sha256=baTUpqyM15wA125jo9E3posmVJUe3WlpksyO6v9Jul0,1347
43
43
  sonusai/mixture/mapped_snr_f.py,sha256=mlbYM1t14OXe_Zg4CjpWTuA_Zun4W0O3bSUXeodRBQs,1845
44
- sonusai/mixture/mixdb.py,sha256=9Pe0mEG8pnEf9NZynTIldc05GfdOrgmcVoIt63RG5DA,45279
45
- 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
46
46
  sonusai/mixture/sox_audio.py,sha256=HT3kYA9TP5QPCuoOJdUMnGVN-qY6q96DGL8zxuog76o,12277
47
47
  sonusai/mixture/sox_augmentation.py,sha256=F9tBdNvX2guCn7gRppAFrxRnBtjw9q6qAq2_v_A4hh0,4490
48
+ sonusai/mixture/speaker_metadata.py,sha256=l98avdxLYUsSDZ88xUjfvHnACkbnD0_Dg1aBGDbzS9I,1380
48
49
  sonusai/mixture/spectral_mask.py,sha256=8AkCwhy-PSdP1Uri9miKZP-bXFYnFcH_c9xZCGrHavU,2071
49
50
  sonusai/mixture/target_class_balancing.py,sha256=NTNiKZH0_PWLooeow0l41CjJKK8ZTMVbUqz9ZkaNtWk,4900
50
51
  sonusai/mixture/targets.py,sha256=wyy5vhLhuN-hqBMBGoziVvEJg3FKFvJFgmEE7_LaV2M,7908
51
52
  sonusai/mixture/tokenized_shell_vars.py,sha256=gCxw8SQUcal6mqWKF7hOBTgSQmbJUk1nT0Gn3H8GA0U,4705
52
- sonusai/mixture/torchaudio_audio.py,sha256=qeYlW2G1q47Dml_Lf12Y9L5C0evo-heGw1NT470ZhGo,2395
53
+ sonusai/mixture/torchaudio_audio.py,sha256=KhHeOMsjmbwOaAcoKD61aFvYBYSlA8OysfT5iGn45MA,3010
53
54
  sonusai/mixture/torchaudio_augmentation.py,sha256=1vEDHI0caL1vrgoY2lAWe4CiHE2jKRuKKH7x23GHw0w,4390
54
55
  sonusai/mixture/truth.py,sha256=Y41pZ52Xkols9LUler0NlgnilUOscBIucmw4GcxXNzU,1612
55
56
  sonusai/mixture/truth_functions/__init__.py,sha256=82lKYHhLy8KW3gHngrocoqwupGVLVsWdIXdYs3vhjOc,359
@@ -60,27 +61,36 @@ sonusai/mixture/truth_functions/file.py,sha256=jOJuC_3y9BH6GGOp9eKcbVrHLVRzUA80B
60
61
  sonusai/mixture/truth_functions/phoneme.py,sha256=stYdlPuNytQK_LLT61OJLfYSqKd-sDjQZdtJKGzt5wA,479
61
62
  sonusai/mixture/truth_functions/sed.py,sha256=8cHjEFjZaH_0hIOHhPmj4AJz2GpEADM6Ys2x4NoiWSY,2469
62
63
  sonusai/mixture/truth_functions/target.py,sha256=KAsjugDRooOA5BRcHVAbZRgV7l8S5CFg7CZ0XtKZaQ0,5764
63
- sonusai/mkmanifest.py,sha256=7lfK7YOdgAEP_Lxrf-YDxZ5iLH9MJuaOltBVpav2M9M,8705
64
+ sonusai/mkmanifest.py,sha256=imI8swwPYVzumrUYEL-9JLvun-ez98PtlUBj2b729k8,8682
64
65
  sonusai/mkwav.py,sha256=kLfC2ZuF-t8P97nqYw2falTZpymxAeXv0YTJCe6nK10,5356
65
- sonusai/onnx_predict.py,sha256=6Sf-3juIhf_CQlZaL0rDAyV0oouhJvPkR1NzstjpI6I,9151
66
+ sonusai/onnx_predict.py,sha256=ZhicNEbjxm34edIrUcmuvKkV3NRFQk4LBn1LUCFdPjg,8733
66
67
  sonusai/plot.py,sha256=ERkmxMM3qjcCDm4LGDQY4fRAncCYAzP7uW8iZ7_brcg,17105
67
68
  sonusai/post_spenh_targetf.py,sha256=xOz5T6WZuyTHmfbtILIY9skgH064Wvi2GF2Bo5L3YMU,4998
68
69
  sonusai/queries/__init__.py,sha256=oKY5JeqZ4Cz7DwCwPc1_ydB8bUs6KaMcWFp_w02TjOs,255
69
- 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
70
80
  sonusai/summarize_metric_spenh.py,sha256=OiZe_bhCq5esXNhsOkHDD7g4ssYrpENDHvDVoPzV9iw,1822
71
81
  sonusai/tplot.py,sha256=85T6OPZfxVegHBiSuilFpdgCNMEE0VKAuciNy4rCY5Y,14544
72
- sonusai/utils/__init__.py,sha256=TCXlcW8W0Up2f5ciSgz3DabvH1MxrrWD0LK6pQTJkeA,2215
82
+ sonusai/utils/__init__.py,sha256=y2Xe72QMNk8LbbjdOUOHiR5eVg32fYrFhinWSuSHi-w,2248
73
83
  sonusai/utils/asl_p56.py,sha256=-bvQpd-jRQVURbkZJpRoyEAq6gTv9Rc3oFDbh5_lcjY,3861
74
84
  sonusai/utils/asr.py,sha256=6y6VYJizHpuQ3MgKbEQ4t2gofO-MW6Ez23oAd6d23IE,2920
75
85
  sonusai/utils/asr_functions/__init__.py,sha256=JyHK67s97bw7QzrlkboWhws4yNytdPatqzLJxfwx-yw,43
76
86
  sonusai/utils/asr_functions/aaware_whisper.py,sha256=LzO9CZV0wBWkjmCR2nSWN_AW9UJwriAsC1OYSlfVeT8,1981
77
- sonusai/utils/asr_manifest_functions/__init__.py,sha256=V-w4R7SHUyoeDuMR3tS12j6DGhmfTlUibMKgq1c6ga0,370
78
- sonusai/utils/asr_manifest_functions/data.py,sha256=mJsaHccBReguOJu9qsshRhL-3GbeyqM0-PXMseFnZbE,151
79
- sonusai/utils/asr_manifest_functions/librispeech.py,sha256=HIaytcYmjRUkuR6fCQlv3Jh3IDWSox_A6WFcFFAHN9M,1635
80
- sonusai/utils/asr_manifest_functions/mcgill_speech.py,sha256=2uF9qgBwcue9W9dlRo16Kvr3jX5g53AGjW2rwob-Cqk,957
81
- 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
82
92
  sonusai/utils/audio_devices.py,sha256=LgaXTln1oRArBzaet3rZiIO2plgtaThuGBc3sJ_sLlo,1414
83
- sonusai/utils/braced_glob.py,sha256=h4hab7YDbM4CjLg9iSzyHZrkd22IPUOY5zZqHdifkh8,1510
93
+ sonusai/utils/braced_glob.py,sha256=Z_XIpPK17QiP1JbzAnUC5w3oyG8ZovoyM22Wh-Q_vWU,1675
84
94
  sonusai/utils/calculate_input_shape.py,sha256=63ILxibYKuTQozY83QN8Y2OOhBEbW_1X47Q0askcHDM,984
85
95
  sonusai/utils/convert_string_to_number.py,sha256=i17yIxurp8Iz6NPE-imTRlARrXWqadwm8qbOTuzHZvE,236
86
96
  sonusai/utils/create_timestamp.py,sha256=TxoQXWZ3SFdBEHLOv-ujeIsTEJuiFnKOGRy-FQq45YU,148
@@ -97,8 +107,9 @@ sonusai/utils/human_readable_size.py,sha256=SjYT0fUlpbfCzCXHo6csir-VMwqfs5ogr-fg
97
107
  sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
98
108
  sonusai/utils/model_utils.py,sha256=lt2KOGJqsinG71W0i3U29UXFO-47GMAlEabsf2um7bA,862
99
109
  sonusai/utils/numeric_conversion.py,sha256=GRO_2Fba8CcxcFY7bEXKOEUEUX6neA-VN__Bxi1ULsE,340
100
- sonusai/utils/onnx_utils.py,sha256=BRsHGlcu5L0v_1z83MNy8TAcBeb7tJd_4OBJgOMLen8,2200
110
+ sonusai/utils/onnx_utils.py,sha256=nh2dUDeuERto-0NnTwZ3a6YKKcZFbZjqLLBVzN2l0IU,5682
101
111
  sonusai/utils/parallel.py,sha256=bxedjCzBv9oxzU7NajRr6mOKmkCWr2P7FWAI0p2p9N8,1981
112
+ sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
102
113
  sonusai/utils/print_mixture_details.py,sha256=BzYM4-wHHNa6zxPzBMUJxwKt0gKHmvbwdd7Yp0w15Yk,3017
103
114
  sonusai/utils/ranges.py,sha256=NPBZOVzMb95GTOIxltVO-wSzgcXqZ14wbdV46JDLKrw,1222
104
115
  sonusai/utils/read_mixture_data.py,sha256=Sb30RgSpw6DnH_iD81O7G_KOsdfjQWWLk3euEkxfMa8,453
@@ -110,7 +121,7 @@ sonusai/utils/stratified_shuffle_split.py,sha256=rJNXvBp-GxoKzH3OpL7k0ANSu5xMP2z
110
121
  sonusai/utils/wave.py,sha256=O4ZXkZ6wjrKGa99wBCdFd8G6bp91MXXDnmGihpaEMh0,856
111
122
  sonusai/utils/yes_or_no.py,sha256=eMLXBVH0cEahiXY4W2KNORmwNQ-ba10eRtldh0y4NYg,263
112
123
  sonusai/vars.py,sha256=m2AefF0m5bXWGXpJj8Pi42zWL2ydeEj7bkak3GrtMyM,940
113
- sonusai-0.16.1.dist-info/METADATA,sha256=XJz2OIEx2jTaDJXsiXECpUgD7kr6y3jn1dhs-YmFRNM,2443
114
- sonusai-0.16.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
115
- sonusai-0.16.1.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
116
- sonusai-0.16.1.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,,