sonusai 0.17.0__py3-none-any.whl → 0.17.3__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/audiofe.py +25 -54
- sonusai/calc_metric_spenh.py +212 -219
- sonusai/doc/doc.py +1 -1
- sonusai/mixture/__init__.py +2 -0
- sonusai/mixture/audio.py +12 -0
- sonusai/mixture/datatypes.py +11 -3
- sonusai/mixture/mixdb.py +100 -0
- sonusai/mixture/soundfile_audio.py +39 -0
- sonusai/mixture/sox_augmentation.py +3 -0
- sonusai/mixture/speaker_metadata.py +35 -0
- sonusai/mixture/torchaudio_audio.py +22 -0
- sonusai/mkmanifest.py +1 -1
- sonusai/mkwav.py +4 -4
- sonusai/onnx_predict.py +114 -410
- sonusai/post_spenh_targetf.py +2 -2
- sonusai/queries/queries.py +1 -1
- sonusai/speech/__init__.py +3 -0
- sonusai/speech/l2arctic.py +116 -0
- sonusai/speech/librispeech.py +99 -0
- sonusai/speech/mcgill.py +70 -0
- sonusai/speech/textgrid.py +100 -0
- sonusai/speech/timit.py +135 -0
- sonusai/speech/types.py +12 -0
- sonusai/speech/vctk.py +52 -0
- sonusai/speech/voxceleb.py +102 -0
- sonusai/utils/__init__.py +3 -2
- sonusai/utils/asr_functions/aaware_whisper.py +2 -2
- sonusai/utils/asr_manifest_functions/__init__.py +0 -1
- sonusai/utils/asr_manifest_functions/data.py +0 -8
- sonusai/utils/asr_manifest_functions/librispeech.py +1 -1
- sonusai/utils/asr_manifest_functions/mcgill_speech.py +1 -1
- sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py +1 -1
- sonusai/utils/braced_glob.py +7 -3
- sonusai/utils/onnx_utils.py +110 -106
- sonusai/utils/path_info.py +7 -0
- sonusai/utils/{wave.py → write_audio.py} +2 -2
- {sonusai-0.17.0.dist-info → sonusai-0.17.3.dist-info}/METADATA +3 -1
- {sonusai-0.17.0.dist-info → sonusai-0.17.3.dist-info}/RECORD +40 -35
- {sonusai-0.17.0.dist-info → sonusai-0.17.3.dist-info}/WHEEL +1 -1
- sonusai/calc_metric_spenh-save.py +0 -1334
- sonusai/onnx_predict-old.py +0 -240
- sonusai/onnx_predict-save.py +0 -487
- sonusai/ovino_predict.py +0 -508
- sonusai/ovino_query_devices.py +0 -47
- sonusai/torchl_onnx-old.py +0 -216
- {sonusai-0.17.0.dist-info → sonusai-0.17.3.dist-info}/entry_points.txt +0 -0
sonusai/utils/__init__.py
CHANGED
@@ -27,11 +27,12 @@ from .max_text_width import max_text_width
|
|
27
27
|
from .model_utils import import_module
|
28
28
|
from .numeric_conversion import float_to_int16
|
29
29
|
from .numeric_conversion import int16_to_float
|
30
|
-
from .onnx_utils import SonusAIMetaData
|
31
30
|
from .onnx_utils import add_sonusai_metadata
|
32
31
|
from .onnx_utils import get_sonusai_metadata
|
32
|
+
from .onnx_utils import load_ort_session
|
33
33
|
from .parallel import pp_imap
|
34
34
|
from .parallel import pp_tqdm_imap
|
35
|
+
from .path_info import PathInfo
|
35
36
|
from .print_mixture_details import print_class_count
|
36
37
|
from .print_mixture_details import print_mixture_details
|
37
38
|
from .ranges import consolidate_range
|
@@ -48,5 +49,5 @@ from .stacked_complex import stacked_complex_imag
|
|
48
49
|
from .stacked_complex import stacked_complex_real
|
49
50
|
from .stacked_complex import unstack_complex
|
50
51
|
from .stratified_shuffle_split import stratified_shuffle_split_mixid
|
51
|
-
from .
|
52
|
+
from .write_audio import write_audio
|
52
53
|
from .yes_or_no import yes_or_no
|
@@ -13,7 +13,7 @@ def aaware_whisper(data: ASRData) -> ASRResult:
|
|
13
13
|
from sonusai import SonusAIError
|
14
14
|
from sonusai.utils import ASRResult
|
15
15
|
from sonusai.utils import float_to_int16
|
16
|
-
from sonusai.utils import
|
16
|
+
from sonusai.utils import write_audio
|
17
17
|
|
18
18
|
url = getenv('AAWARE_WHISPER_URL')
|
19
19
|
if url is None:
|
@@ -22,7 +22,7 @@ def aaware_whisper(data: ASRData) -> ASRResult:
|
|
22
22
|
|
23
23
|
with tempfile.TemporaryDirectory() as tmp:
|
24
24
|
file = join(tmp, 'asr.wav')
|
25
|
-
|
25
|
+
write_audio(name=file, audio=float_to_int16(data.audio))
|
26
26
|
|
27
27
|
files = {'audio_file': (file, open(file, 'rb'), 'audio/wav')}
|
28
28
|
|
sonusai/utils/braced_glob.py
CHANGED
@@ -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):
|
sonusai/utils/onnx_utils.py
CHANGED
@@ -1,120 +1,134 @@
|
|
1
|
-
from
|
1
|
+
from typing import Optional
|
2
|
+
from typing import Sequence
|
2
3
|
|
3
|
-
from
|
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
|
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
|
-
|
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
|
-
|
27
|
-
if len(
|
28
|
-
logger.warning(f'Warning:
|
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
|
-
#
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
65
|
+
shapes = _extract_shapes(outputs)
|
75
66
|
|
67
|
+
return outputs, shapes
|
76
68
|
|
77
|
-
|
78
|
-
|
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
|
74
|
+
:param hparams: dictionary of hyperparameters to add
|
75
|
+
:return: ONNX model
|
76
|
+
|
82
77
|
Note SonusAI conventions require models to have:
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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 =
|
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) ->
|
100
|
-
"""Get SonusAI
|
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
|
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
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
-
|
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
|
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
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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
|
@@ -2,8 +2,8 @@ from sonusai.mixture.constants import SAMPLE_RATE
|
|
2
2
|
from sonusai.mixture.datatypes import AudioT
|
3
3
|
|
4
4
|
|
5
|
-
def
|
6
|
-
""" Write
|
5
|
+
def write_audio(name: str, audio: AudioT, sample_rate: int = SAMPLE_RATE) -> None:
|
6
|
+
""" Write an audio file.
|
7
7
|
|
8
8
|
To write multiple channels, use a 2D array of shape [channels, samples].
|
9
9
|
The bits per sample and PCM/float are determined by the data type.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sonusai
|
3
|
-
Version: 0.17.
|
3
|
+
Version: 0.17.3
|
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
|
@@ -21,11 +21,13 @@ Requires-Dist: h5py (>=3.11.0,<4.0.0)
|
|
21
21
|
Requires-Dist: jiwer (>=3.0.3,<4.0.0)
|
22
22
|
Requires-Dist: librosa (>=0.10.1,<0.11.0)
|
23
23
|
Requires-Dist: matplotlib (>=3.8.0,<4.0.0)
|
24
|
+
Requires-Dist: numpy (>=1.26.4,<2.0.0)
|
24
25
|
Requires-Dist: onnx (>=1.14.1,<2.0.0)
|
25
26
|
Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
|
26
27
|
Requires-Dist: paho-mqtt (>=2.0.0,<3.0.0)
|
27
28
|
Requires-Dist: pandas (>=2.1.1,<3.0.0)
|
28
29
|
Requires-Dist: pesq (>=0.0.4,<0.0.5)
|
30
|
+
Requires-Dist: praatio (>=6.2.0,<7.0.0)
|
29
31
|
Requires-Dist: pyaaware (>=1.5.7,<2.0.0)
|
30
32
|
Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
|
31
33
|
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=
|
4
|
-
sonusai/calc_metric_spenh
|
5
|
-
sonusai/calc_metric_spenh.py,sha256=_92RWCyxAf7_S61L5oX6o4GuvuOCDKn7BPg7pB0r1kY,61836
|
3
|
+
sonusai/audiofe.py,sha256=zOySiYs5ZZm60eMbA7RjhG6C0Ouhaii3WfL1d0Q8rxg,11154
|
4
|
+
sonusai/calc_metric_spenh.py,sha256=0UvJibVjjoHTty3QFh0qzugXe-LvIj2XsMwoaIR44BM,62171
|
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=
|
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=
|
33
|
-
sonusai/mixture/audio.py,sha256=
|
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=
|
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=
|
46
|
-
sonusai/mixture/soundfile_audio.py,sha256=
|
44
|
+
sonusai/mixture/mixdb.py,sha256=zfBaVOuMKHTDzmwR4hWRpGxFwnV_fJkwLDmn9M1SDds,49791
|
45
|
+
sonusai/mixture/soundfile_audio.py,sha256=mHa5SIXsu_uE0j3DO52GydRJrvWSzU_nII-7YJfQ6Qo,4154
|
47
46
|
sonusai/mixture/sox_audio.py,sha256=HT3kYA9TP5QPCuoOJdUMnGVN-qY6q96DGL8zxuog76o,12277
|
48
|
-
sonusai/mixture/sox_augmentation.py,sha256=
|
47
|
+
sonusai/mixture/sox_augmentation.py,sha256=kBWPrsFk0EBi71nLcKt5v0GA34bY7g9D9x0cEamNWbU,4564
|
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=
|
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=
|
65
|
-
sonusai/mkwav.py,sha256=
|
66
|
-
sonusai/onnx_predict
|
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
|
64
|
+
sonusai/mkmanifest.py,sha256=imI8swwPYVzumrUYEL-9JLvun-ez98PtlUBj2b729k8,8682
|
65
|
+
sonusai/mkwav.py,sha256=zfSyIiQTIK3KV9Ij33jkLhhZIMVYqaROcRQ4S7c4sIo,5364
|
66
|
+
sonusai/onnx_predict.py,sha256=jSxhD2oFyGSTHOGCXbW4fRT-k4SqKOboK2JaDO-yWcs,8737
|
71
67
|
sonusai/plot.py,sha256=ERkmxMM3qjcCDm4LGDQY4fRAncCYAzP7uW8iZ7_brcg,17105
|
72
|
-
sonusai/post_spenh_targetf.py,sha256=
|
68
|
+
sonusai/post_spenh_targetf.py,sha256=pHaJZtms7aj4r6sgqQnEGVi6Gg8H_V29szigogV1vZ8,5002
|
73
69
|
sonusai/queries/__init__.py,sha256=oKY5JeqZ4Cz7DwCwPc1_ydB8bUs6KaMcWFp_w02TjOs,255
|
74
|
-
sonusai/queries/queries.py,sha256=
|
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/voxceleb.py,sha256=aJGN0yDb2LFLmCKmRzmUEjpZWQ-QGWw6XWOpy9967AI,2686
|
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=
|
82
|
+
sonusai/utils/__init__.py,sha256=h7QrOyEBMUMoIBFKZpNwDG8Jg-1uw3bs-qflB3CXxhU,2257
|
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
|
-
sonusai/utils/asr_functions/aaware_whisper.py,sha256=
|
83
|
-
sonusai/utils/asr_manifest_functions/__init__.py,sha256=
|
84
|
-
sonusai/utils/asr_manifest_functions/data.py,sha256=
|
85
|
-
sonusai/utils/asr_manifest_functions/librispeech.py,sha256=
|
86
|
-
sonusai/utils/asr_manifest_functions/mcgill_speech.py,sha256=
|
87
|
-
sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py,sha256
|
86
|
+
sonusai/utils/asr_functions/aaware_whisper.py,sha256=Ew3zb8OfbxEW7q1s-KA7D5eph4SjVSUAJgiLK-vVqhI,1985
|
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=
|
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=
|
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
|
@@ -113,10 +118,10 @@ sonusai/utils/reshape.py,sha256=E8Eu6grynaeWwVO6peIR0BF22SrVaJSa1Rkl109lq6Y,5997
|
|
113
118
|
sonusai/utils/seconds_to_hms.py,sha256=oxLuZhTJJr9swj-fOSOrZJ5vBNM7_BrOMQhX1pYpiv0,260
|
114
119
|
sonusai/utils/stacked_complex.py,sha256=feLhz3GC1ILxBGMHOj3sJK--sidsXKbfwkalwAVwizc,2950
|
115
120
|
sonusai/utils/stratified_shuffle_split.py,sha256=rJNXvBp-GxoKzH3OpL7k0ANSu5xMP2zJ7K1fm_33UzE,7022
|
116
|
-
sonusai/utils/
|
121
|
+
sonusai/utils/write_audio.py,sha256=ZsPGExwM86QHLLN2LOWekK2uAqf5pV_1oRW811p0QAI,840
|
117
122
|
sonusai/utils/yes_or_no.py,sha256=eMLXBVH0cEahiXY4W2KNORmwNQ-ba10eRtldh0y4NYg,263
|
118
123
|
sonusai/vars.py,sha256=m2AefF0m5bXWGXpJj8Pi42zWL2ydeEj7bkak3GrtMyM,940
|
119
|
-
sonusai-0.17.
|
120
|
-
sonusai-0.17.
|
121
|
-
sonusai-0.17.
|
122
|
-
sonusai-0.17.
|
124
|
+
sonusai-0.17.3.dist-info/METADATA,sha256=Zu3DK9fCT1xiipWOBY4JhUZJ3qm1cVRc5eLAXonDb2s,2522
|
125
|
+
sonusai-0.17.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
126
|
+
sonusai-0.17.3.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
|
127
|
+
sonusai-0.17.3.dist-info/RECORD,,
|