sonusai 1.0.8__py3-none-any.whl → 1.0.10__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/doc/doc.py +64 -61
- sonusai/lsdb.py +1 -1
- sonusai/mixture/__init__.py +1 -1
- sonusai/mixture/db.py +163 -0
- sonusai/mixture/db_file.py +10 -0
- sonusai/mixture/effects.py +19 -52
- sonusai/mixture/generation.py +331 -391
- sonusai/mixture/mixdb.py +11 -68
- sonusai/mixture/parse.py +145 -0
- sonusai/utils/numeric_conversion.py +2 -2
- sonusai/utils/print_mixture_details.py +24 -28
- {sonusai-1.0.8.dist-info → sonusai-1.0.10.dist-info}/METADATA +2 -1
- {sonusai-1.0.8.dist-info → sonusai-1.0.10.dist-info}/RECORD +15 -12
- {sonusai-1.0.8.dist-info → sonusai-1.0.10.dist-info}/WHEEL +0 -0
- {sonusai-1.0.8.dist-info → sonusai-1.0.10.dist-info}/entry_points.txt +0 -0
sonusai/mixture/mixdb.py
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
from functools import cached_property
|
3
3
|
from functools import lru_cache
|
4
4
|
from functools import partial
|
5
|
-
from sqlite3 import Connection
|
6
|
-
from sqlite3 import Cursor
|
7
5
|
from typing import Any
|
8
6
|
|
9
7
|
from ..datatypes import ASRConfigs
|
@@ -31,66 +29,8 @@ from ..datatypes import TruthDict
|
|
31
29
|
from ..datatypes import TruthsConfigs
|
32
30
|
from ..datatypes import TruthsDict
|
33
31
|
from ..datatypes import UniversalSNR
|
34
|
-
|
35
|
-
|
36
|
-
def db_file(location: str, test: bool = False) -> str:
|
37
|
-
from os.path import join
|
38
|
-
|
39
|
-
from .constants import MIXDB_NAME
|
40
|
-
from .constants import TEST_MIXDB_NAME
|
41
|
-
|
42
|
-
if test:
|
43
|
-
name = TEST_MIXDB_NAME
|
44
|
-
else:
|
45
|
-
name = MIXDB_NAME
|
46
|
-
|
47
|
-
return join(location, name)
|
48
|
-
|
49
|
-
|
50
|
-
def db_connection(
|
51
|
-
location: str,
|
52
|
-
create: bool = False,
|
53
|
-
readonly: bool = True,
|
54
|
-
test: bool = False,
|
55
|
-
verbose: bool = False,
|
56
|
-
) -> Connection:
|
57
|
-
import sqlite3
|
58
|
-
from os import remove
|
59
|
-
from os.path import exists
|
60
|
-
|
61
|
-
from .. import logger_db
|
62
|
-
|
63
|
-
name = db_file(location, test)
|
64
|
-
if create and exists(name):
|
65
|
-
remove(name)
|
66
|
-
|
67
|
-
if not create and not exists(name):
|
68
|
-
raise OSError(f"Could not find mixture database in {location}")
|
69
|
-
|
70
|
-
if not create and readonly:
|
71
|
-
name += "?mode=ro"
|
72
|
-
|
73
|
-
connection = sqlite3.connect("file:" + name, uri=True, timeout=20)
|
74
|
-
|
75
|
-
if verbose:
|
76
|
-
connection.set_trace_callback(logger_db.debug)
|
77
|
-
|
78
|
-
return connection
|
79
|
-
|
80
|
-
|
81
|
-
class SQLiteContextManager:
|
82
|
-
def __init__(self, location: str, test: bool = False, verbose: bool = False) -> None:
|
83
|
-
self.location = location
|
84
|
-
self.test = test
|
85
|
-
self.verbose = verbose
|
86
|
-
|
87
|
-
def __enter__(self) -> Cursor:
|
88
|
-
self.con = db_connection(location=self.location, test=self.test, verbose=self.verbose)
|
89
|
-
self.cur = self.con.cursor()
|
90
|
-
return self.cur
|
91
|
-
|
92
|
-
def __exit__(self, exc_type, exc_val, exc_tb) -> None:
|
93
|
-
self.con.close()
|
32
|
+
from .db import SQLiteDatabase
|
33
|
+
from .db_file import db_file
|
94
34
|
|
95
35
|
|
96
36
|
class MixtureDatabase:
|
@@ -108,19 +48,22 @@ class MixtureDatabase:
|
|
108
48
|
if not exists(db_file(self.location, self.test)):
|
109
49
|
raise OSError(f"Could not find mixture database in {self.location}")
|
110
50
|
|
111
|
-
self.db = partial(
|
51
|
+
self.db = partial(SQLiteDatabase, location=self.location, test=self.test, verbose=self.verbose)
|
112
52
|
|
113
|
-
# Check config.yml to see if asr_configs has changed and update database if needed
|
53
|
+
# Check config.yml to see if asr_configs has changed and update the database if needed
|
114
54
|
config = load_config(self.location)
|
115
55
|
new_asr_configs = json.dumps(config["asr_configs"])
|
116
56
|
with self.db() as c:
|
117
57
|
old_asr_configs = c.execute("SELECT asr_configs FROM top").fetchone()
|
118
58
|
|
119
59
|
if old_asr_configs is not None and new_asr_configs != old_asr_configs[0]:
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
60
|
+
with SQLiteDatabase(
|
61
|
+
location=self.location,
|
62
|
+
readonly=False,
|
63
|
+
test=self.test,
|
64
|
+
verbose=self.verbose,
|
65
|
+
) as cur:
|
66
|
+
cur.execute("UPDATE top SET asr_configs = ? WHERE ? = id", (new_asr_configs,))
|
124
67
|
|
125
68
|
@cached_property
|
126
69
|
def json(self) -> str:
|
sonusai/mixture/parse.py
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
"""
|
2
|
+
Parse config rules
|
3
|
+
|
4
|
+
sai_expand(0, 5)
|
5
|
+
sai_expand(.0, 5)
|
6
|
+
sai_expand(0., 5)
|
7
|
+
sai_expand(0.0, 5)
|
8
|
+
sai_expand(0, .5)
|
9
|
+
sai_expand(.0, .5)
|
10
|
+
sai_expand(0., .5)
|
11
|
+
sai_expand(0.0, .5)
|
12
|
+
sai_expand(0, 5.)
|
13
|
+
sai_expand(.0, 5.)
|
14
|
+
sai_expand(0., 5.)
|
15
|
+
sai_expand(0.0, 5.)
|
16
|
+
sai_expand(0, 5.0)
|
17
|
+
sai_expand(.0, 5.0)
|
18
|
+
sai_expand(0., 5.0)
|
19
|
+
sai_expand(0.0, 5.0)
|
20
|
+
|
21
|
+
sai_rand(-1, 1)
|
22
|
+
sai_choose(repeat=False)
|
23
|
+
sai_choose(repeat=False, tag=tag)
|
24
|
+
sai_sequence()
|
25
|
+
sai_sequence(tag=tag)
|
26
|
+
|
27
|
+
sai_expand(0, sai_rand(-1, 1))
|
28
|
+
sai_expand(sai_rand(0, 4), 0)
|
29
|
+
sai_expand(sai_rand(0, 4), sai_rand(-1, 1))
|
30
|
+
|
31
|
+
sai_choose(num=1, unique=speaker_id, repeat=False)
|
32
|
+
sai_choose(num=1, repeat=False)
|
33
|
+
sai_choose(num=1, unique=speaker_id, repeat=True)
|
34
|
+
sai_choose(num=1, repeat=True)
|
35
|
+
sai_sequence(num=0)
|
36
|
+
sai_sequence(num=0, unique=speaker_id)
|
37
|
+
|
38
|
+
"""
|
39
|
+
|
40
|
+
from dataclasses import dataclass
|
41
|
+
|
42
|
+
|
43
|
+
@dataclass
|
44
|
+
class Match:
|
45
|
+
group: str
|
46
|
+
span: tuple[int, int]
|
47
|
+
|
48
|
+
def start(self) -> int:
|
49
|
+
return self.span[0]
|
50
|
+
|
51
|
+
def end(self) -> int:
|
52
|
+
return self.span[1]
|
53
|
+
|
54
|
+
|
55
|
+
def find_sai_expand(text: str) -> list[Match]:
|
56
|
+
import re
|
57
|
+
|
58
|
+
results = []
|
59
|
+
matches = re.finditer(r"sai_expand\(", text)
|
60
|
+
if matches:
|
61
|
+
for match in matches:
|
62
|
+
s = match.start()
|
63
|
+
e = match.end()
|
64
|
+
num_lparen = 1
|
65
|
+
while num_lparen != 0 and e < len(text):
|
66
|
+
if text[e] == "(":
|
67
|
+
num_lparen += 1
|
68
|
+
elif text[e] == ")":
|
69
|
+
num_lparen -= 1
|
70
|
+
e += 1
|
71
|
+
if num_lparen != 0:
|
72
|
+
raise ValueError(f"Unbalanced parenthesis in '{text}'")
|
73
|
+
|
74
|
+
results.append(Match(group=text[s:e], span=(s, e)))
|
75
|
+
|
76
|
+
return results
|
77
|
+
|
78
|
+
|
79
|
+
def parse_sai_expand(text: str) -> list[str]:
|
80
|
+
"""
|
81
|
+
expand_syntax ::= expand_keyword lparen expand_item next_expand_item+ rparen
|
82
|
+
expand_keyword ::= sai_expand
|
83
|
+
lparen ::= (
|
84
|
+
expand_item ::= expand_syntax | rand_syntax | number
|
85
|
+
rand_syntax ::= rand_keyword lparen rand_item comma rand_item rparen
|
86
|
+
rand_item ::= real number
|
87
|
+
comma ::= ,
|
88
|
+
number ::= real number or signed integer
|
89
|
+
next_item ::= comma item
|
90
|
+
rparen ::= )
|
91
|
+
"""
|
92
|
+
import pyparsing as pp
|
93
|
+
|
94
|
+
lparen = pp.Literal("(")
|
95
|
+
rparen = pp.Literal(")")
|
96
|
+
comma = pp.Literal(",")
|
97
|
+
|
98
|
+
real_number = pp.pyparsing_common.real
|
99
|
+
signed_integer = pp.pyparsing_common.signed_integer
|
100
|
+
number = real_number | signed_integer
|
101
|
+
|
102
|
+
identifier = pp.Word(pp.alphanums + "_.-")
|
103
|
+
|
104
|
+
rand_literal = pp.Literal("sai_rand")
|
105
|
+
rand_expression = (rand_literal + lparen + number + comma + number + rparen).set_parse_action(
|
106
|
+
lambda tokens: "".join(map(str, tokens))
|
107
|
+
)
|
108
|
+
|
109
|
+
expand_literal = pp.Literal("sai_expand")
|
110
|
+
expand_args = pp.DelimitedList(rand_expression | identifier, min=1)
|
111
|
+
expand_expression = expand_literal + lparen + expand_args("args") + rparen
|
112
|
+
|
113
|
+
try:
|
114
|
+
result = expand_expression.parse_string(text)
|
115
|
+
except pp.ParseException as e:
|
116
|
+
raise ValueError(f"Could not parse '{text}'") from e
|
117
|
+
|
118
|
+
return list(result.args)
|
119
|
+
|
120
|
+
|
121
|
+
def sai_expand(text: str) -> list[str]:
|
122
|
+
# initialize with input
|
123
|
+
expanded = [text]
|
124
|
+
|
125
|
+
# look for pattern
|
126
|
+
matches = find_sai_expand(text)
|
127
|
+
|
128
|
+
# if not found, early exit
|
129
|
+
if not matches:
|
130
|
+
return expanded
|
131
|
+
|
132
|
+
# remove entry we are expanding
|
133
|
+
expanded.pop()
|
134
|
+
|
135
|
+
# start with the innermost match
|
136
|
+
match = matches[-1]
|
137
|
+
prelude = text[: match.start()]
|
138
|
+
postlude = text[match.end() :]
|
139
|
+
|
140
|
+
# loop over parsed expand values
|
141
|
+
for value in parse_sai_expand(match.group):
|
142
|
+
# extend result with expand of replacement (for handling multiple expands in a single rule)
|
143
|
+
expanded.extend(sai_expand(prelude + value + postlude))
|
144
|
+
|
145
|
+
return expanded
|
@@ -2,10 +2,10 @@ import numpy as np
|
|
2
2
|
|
3
3
|
|
4
4
|
def int16_to_float(x: np.ndarray) -> np.ndarray:
|
5
|
-
"""Convert int16 array to floating point with range +/- 1"""
|
5
|
+
"""Convert an int16 array to a floating point array with range +/- 1"""
|
6
6
|
return x.astype(np.float32) / 32768
|
7
7
|
|
8
8
|
|
9
9
|
def float_to_int16(x: np.ndarray) -> np.ndarray:
|
10
|
-
"""Convert
|
10
|
+
"""Convert a floating point array with range +/- 1 to an int16 array"""
|
11
11
|
return (x * 32768).astype(np.int16)
|
@@ -1,18 +1,15 @@
|
|
1
1
|
from collections.abc import Callable
|
2
2
|
|
3
3
|
from ..datatypes import ClassCount
|
4
|
+
from ..mixture.helpers import mixture_all_speech_metadata
|
4
5
|
from ..mixture.mixdb import MixtureDatabase
|
5
6
|
|
6
7
|
|
7
8
|
def print_mixture_details(
|
8
9
|
mixdb: MixtureDatabase,
|
9
10
|
mixid: int | None = None,
|
10
|
-
desc_len: int = 1,
|
11
11
|
print_fn: Callable = print,
|
12
12
|
) -> None:
|
13
|
-
import numpy as np
|
14
|
-
|
15
|
-
from ..constants import SAMPLE_RATE
|
16
13
|
from ..utils.seconds_to_hms import seconds_to_hms
|
17
14
|
|
18
15
|
if mixid is not None:
|
@@ -21,30 +18,29 @@ def print_mixture_details(
|
|
21
18
|
|
22
19
|
print_fn(f"Mixture {mixid} details")
|
23
20
|
mixture = mixdb.mixture(mixid)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
print_fn(f"
|
29
|
-
print_fn(f"
|
30
|
-
print_fn(f"
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
print_fn(f"
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
)
|
46
|
-
print_fn(f"
|
47
|
-
print_fn(f"{' Noise SNR gain':{desc_len}} {mixture.noise_snr_gain}")
|
21
|
+
speech_metadata = mixture_all_speech_metadata(mixdb, mixture)
|
22
|
+
for category, source in mixture.all_sources.items():
|
23
|
+
source_file = mixdb.source_file(source.file_id)
|
24
|
+
print_fn(f" {category}")
|
25
|
+
print_fn(f" name: {source_file.name}")
|
26
|
+
print_fn(f" effects: {source.effects.to_dict()}")
|
27
|
+
print_fn(f" pre_tempo: {source.pre_tempo}")
|
28
|
+
print_fn(f" duration: {seconds_to_hms(source_file.duration)}")
|
29
|
+
print_fn(f" start: {source.start}")
|
30
|
+
print_fn(f" repeat: {source.repeat}")
|
31
|
+
print_fn(f" snr: {source.snr}")
|
32
|
+
print_fn(f" random_snr: {source.snr.is_random}")
|
33
|
+
print_fn(f" snr_gain: {source.snr_gain}")
|
34
|
+
for key in source_file.truth_configs:
|
35
|
+
print_fn(f" truth '{key}' function: {source_file.truth_configs[key].function}")
|
36
|
+
print_fn(f" truth '{key}' config: {source_file.truth_configs[key].config}")
|
37
|
+
print_fn(
|
38
|
+
f" truth '{key}' stride_reduction: {source_file.truth_configs[key].stride_reduction}"
|
39
|
+
)
|
40
|
+
for key in speech_metadata[category]:
|
41
|
+
print_fn(f"{category} speech {key}: {speech_metadata[category][key]}")
|
42
|
+
print_fn(f" samples: {mixture.samples}")
|
43
|
+
print_fn(f" feature frames: {mixdb.mixture_feature_frames(mixid)}")
|
48
44
|
print_fn("")
|
49
45
|
|
50
46
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: sonusai
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.10
|
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
|
@@ -31,6 +31,7 @@ Requires-Dist: psutil (>=6.0.0,<7.0.0)
|
|
31
31
|
Requires-Dist: pyaaware (>=2.0.0,<3.0.0)
|
32
32
|
Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
|
33
33
|
Requires-Dist: pydub (>=0.25.1,<0.26.0)
|
34
|
+
Requires-Dist: pyparsing (>=3.2.3,<4.0.0)
|
34
35
|
Requires-Dist: pystoi (>=0.4.1,<0.5.0)
|
35
36
|
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
36
37
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
@@ -18,14 +18,14 @@ sonusai/deprecated/gentcst.py,sha256=nKbHy3aHreHqA-XnLQOzOApS8RuTNUFqnx52a8I5zLQ
|
|
18
18
|
sonusai/deprecated/plot.py,sha256=ZzOP4b_7cotArSxbTDDDbhc7hj1BFMzooeZ20ppKneg,17430
|
19
19
|
sonusai/deprecated/tplot.py,sha256=0p238DvTaP4oU9y-dp0JdLaTV4TKrooAwbx7zdz_QAc,14641
|
20
20
|
sonusai/doc/__init__.py,sha256=KyQ26Um0RM8A3GYsb_tbFH64RwpoAw6lja2f_moUWas,33
|
21
|
-
sonusai/doc/doc.py,sha256=
|
21
|
+
sonusai/doc/doc.py,sha256=FURO3pvGKrUCHs5iHf0L2zeNofdePW_jiEwtKQX4pJw,19520
|
22
22
|
sonusai/doc.py,sha256=ZgFSSI56oNDb-yC3xi-RHMClMjryR2VrgGyi3ggX8gM,1098
|
23
23
|
sonusai/genft.py,sha256=yiADvi0J-Fy4kNpNOEB3wVvU9RZowGvOsCTJndQYXFw,5580
|
24
24
|
sonusai/genmetrics.py,sha256=9l7g_DAKa126RGq23-Wilzdh1M3QHCCeNfUVYaQS1mU,6193
|
25
25
|
sonusai/genmix.py,sha256=gcmqcPqZ1Vz_TtZMp29L8cGnqTK5jcw0cAOc16NOR9A,5753
|
26
26
|
sonusai/genmixdb.py,sha256=VDQMF6JHcHc-yJAZ1Se3CM3ac8fFKIgnaxv4e5jdE1I,11281
|
27
27
|
sonusai/ir_metric.py,sha256=nxS_mARPSZG5Y0G3L8HysOnkPj4v-RGxAxAVBYe-gJI,19600
|
28
|
-
sonusai/lsdb.py,sha256
|
28
|
+
sonusai/lsdb.py,sha256=-Fhwd7YuL-OIymFqaNcBHtOq8l_8LxzoEE6ztduQCpY,5059
|
29
29
|
sonusai/main.py,sha256=72feJv5XEVJE_CQatmNIL1VD9ca-Mo0QNDbXxLrHrbQ,2619
|
30
30
|
sonusai/metrics/__init__.py,sha256=ssV6JEK_oklRSocsp6HMcG-GtJvV8IkRQtdKhHHmwU8,878
|
31
31
|
sonusai/metrics/calc_audio_stats.py,sha256=tIfTa40UdYCkj999kUghWafwnFBqFtJxB5yZhVp1YpA,1244
|
@@ -45,22 +45,25 @@ sonusai/metrics/confusion_matrix_summary.py,sha256=lhd8TyHVMC03khX85h_D75XElmawx
|
|
45
45
|
sonusai/metrics/one_hot.py,sha256=aKc-xYd4zWIjbmoQikIcQ6BJB1k-68XKTg8eJCacHTU,13906
|
46
46
|
sonusai/metrics/snr_summary.py,sha256=qKHctpmvGeu2cmjTG7iQPX1lvVUEtEnCIKwUGu6VrEQ,5773
|
47
47
|
sonusai/metrics_summary.py,sha256=jtSwHomw23qwTYfzjFo_JmqzrkZcts1CMFFzTmJCmWk,12189
|
48
|
-
sonusai/mixture/__init__.py,sha256=
|
48
|
+
sonusai/mixture/__init__.py,sha256=l4CgJN0gH4Z19jcQvXJbR8KSZ5f_ysnoAGi93LQaTjM,1260
|
49
49
|
sonusai/mixture/audio.py,sha256=JyrVtVPLH3aTXFgyl446f5uVHxlFRa4aBaSPYaMdg80,5814
|
50
50
|
sonusai/mixture/class_balancing.py,sha256=lubicVCzxs4TMh2dZSsuIffkLkk1gmwjmwtrtQ27BVQ,3638
|
51
51
|
sonusai/mixture/config.py,sha256=2_hEndyRXxyBpGzyBFaDT9REYGoK9Q7HQy8vDqPozus,23320
|
52
52
|
sonusai/mixture/constants.py,sha256=Kklzhf5DL30yb3TpqRbvRUhcFrEXJ4s2S3D_nw4ARxM,1498
|
53
53
|
sonusai/mixture/data_io.py,sha256=DV48sFcP2Qp3NBzvcnlptQOXU3aUEcAeLuh3XOtC5jI,5341
|
54
|
+
sonusai/mixture/db.py,sha256=yd0bCiihuUAw3IgRlLqcshXB2QHep837O3TwjPyo-LM,5132
|
54
55
|
sonusai/mixture/db_datatypes.py,sha256=VvNtbOgt5WSeSnBoVcNGC5gs_7hX_38pDUPjy5KRbG4,1471
|
55
|
-
sonusai/mixture/
|
56
|
+
sonusai/mixture/db_file.py,sha256=P48TWYNyqchycENIqBu1QqhfsRDP6WK2VanPgxN1Imk,278
|
57
|
+
sonusai/mixture/effects.py,sha256=zIb6ir0WSdKQJo7uJ3QQnV52RA6lJaqgQqvQh-s0dhc,11038
|
56
58
|
sonusai/mixture/feature.py,sha256=7GJvFhfqeqerfjy9Vq9aKt-cecgYblK0IypNNo5hgwY,2285
|
57
|
-
sonusai/mixture/generation.py,sha256=
|
59
|
+
sonusai/mixture/generation.py,sha256=_vGTyqo0ocyOK84rTj_1QXciq1Tmxxl5XhwaXPWIEL0,33105
|
58
60
|
sonusai/mixture/helpers.py,sha256=dmyHwf1C5dZjYOd11kVV16KI33CaM-dU_fyaxOrrKt8,11642
|
59
61
|
sonusai/mixture/ir_delay.py,sha256=aiC23HMWQ08-v5wORgMx1_DOJSdh4kunULqiQ-SGuMo,2026
|
60
62
|
sonusai/mixture/ir_effects.py,sha256=PqiqD4PS42-7kD6ESnsZi2a3tnKCFa4E0xqUujRBvGg,2152
|
61
63
|
sonusai/mixture/log_duration_and_sizes.py,sha256=3ekS27IMKlnxIkQAmprzmBnzHOpRjZh3d7maL2VqWQU,927
|
62
|
-
sonusai/mixture/mixdb.py,sha256=
|
64
|
+
sonusai/mixture/mixdb.py,sha256=5YI0zKisFw_B-jKpB-Y1EYlJ8pHQDvOQLs9LEe0gT1w,84905
|
63
65
|
sonusai/mixture/pad_audio.py,sha256=KNxVQAejA0hblLOnMJgLS6lFaeE0n3tWQ5rclaHBnIY,1015
|
66
|
+
sonusai/mixture/parse.py,sha256=nqhjuR-J7_3wlGhVitYFvQwLJ1sclU8WZrVF0SyW2Cw,3700
|
64
67
|
sonusai/mixture/resample.py,sha256=jXqH6FrZ0mlhQ07XqPx88TT9elu3HHVLw7Q0a7Lh5M4,221
|
65
68
|
sonusai/mixture/sox_effects.py,sha256=tndS9qrh3eJOTUPrufyWHCt3UqjbPuh81I4Lo4MNmDg,5328
|
66
69
|
sonusai/mixture/sox_help.py,sha256=DOTMBZfYQs3bXrqra25iH92lJFhqcGe9M1am4OrKkBY,29855
|
@@ -115,11 +118,11 @@ sonusai/utils/keyboard_interrupt.py,sha256=fqBFn8ue_BZ4B2Pw5fk5WPvT4w3aKRNrCExIB
|
|
115
118
|
sonusai/utils/load_object.py,sha256=if4Vammcd-jZTz_n7QzwNIlN4HqSL0v91I9YQzcvEEA,493
|
116
119
|
sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
|
117
120
|
sonusai/utils/model_utils.py,sha256=OIJBhOjxR0wpxsd7A2r6J2AjqfdYgZzi6UEThw4S1lI,828
|
118
|
-
sonusai/utils/numeric_conversion.py,sha256=
|
121
|
+
sonusai/utils/numeric_conversion.py,sha256=2Ie9ATgJRAo-1y0ECX2YYS23XZ3BG7AB7M7Bys1-pqY,353
|
119
122
|
sonusai/utils/onnx_utils.py,sha256=XkG7ldYD43_pQXkn-1XFSuwwC8HB7-FH7Y4-AYZOUFo,5591
|
120
123
|
sonusai/utils/parallel.py,sha256=yvRZvZWPR5slM51i08m7sYx-Mvsb5oryCqqJXVoJ8tQ,2190
|
121
124
|
sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
|
122
|
-
sonusai/utils/print_mixture_details.py,sha256=
|
125
|
+
sonusai/utils/print_mixture_details.py,sha256=7HObpltY60WdPcrC9lcT3zYHkw-clEZZQbESM9a9DKk,2521
|
123
126
|
sonusai/utils/rand.py,sha256=yQMpYuJFi8GkIocDYIT3ESfNYEgWA7KZMWpgjqr0UXQ,225
|
124
127
|
sonusai/utils/ranges.py,sha256=-TtAR0Vg_j4kYtJOvEOYQllBZEat_KfUKsfRxr5oj-o,1235
|
125
128
|
sonusai/utils/read_predict_data.py,sha256=ZcIlfwxfav8Lh3gye7V150t0c6k-C9y5SbzWtDQ6TuU,1037
|
@@ -131,7 +134,7 @@ sonusai/utils/tokenized_shell_vars.py,sha256=EDrrAgz5lJ0RBAjLcTJt1MeyjhbNZiqXkym
|
|
131
134
|
sonusai/utils/write_audio.py,sha256=IHzrJoFtFcea_J6wo6QSiojRkgnNOzAEcg-z0rFV7nU,810
|
132
135
|
sonusai/utils/yes_or_no.py,sha256=0h1okjXmDNbJp7rZJFR2V-HFU1GJDm3YFTUVmYExkOU,263
|
133
136
|
sonusai/vars.py,sha256=m8pdgfR4A6A9TCGf_rok6jPAT5BgrEsYXTSISIh1nrI,1163
|
134
|
-
sonusai-1.0.
|
135
|
-
sonusai-1.0.
|
136
|
-
sonusai-1.0.
|
137
|
-
sonusai-1.0.
|
137
|
+
sonusai-1.0.10.dist-info/METADATA,sha256=kliBuHLQIEAUTsv9Hav0VWo1IGQxpTao5bl233yOnaQ,2695
|
138
|
+
sonusai-1.0.10.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
139
|
+
sonusai-1.0.10.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
|
140
|
+
sonusai-1.0.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|