sonusai 1.0.4__py3-none-any.whl → 1.0.6__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/__init__.py CHANGED
@@ -26,19 +26,31 @@ commands_doc = """
26
26
  logger = logging.getLogger("sonusai")
27
27
  logger.setLevel(logging.DEBUG)
28
28
  formatter = logging.Formatter("%(message)s")
29
+ formatter_db = logging.Formatter("%(asctime)s %(message)s")
29
30
  console_handler = RichHandler(show_level=False, show_path=False, show_time=False)
30
31
  console_handler.setLevel(logging.DEBUG)
31
32
  console_handler.setFormatter(formatter)
32
33
  logger.addHandler(console_handler)
33
34
 
35
+ logger_db = logging.getLogger("sonusai_db")
36
+ logger_db.setLevel(logging.DEBUG)
34
37
 
35
38
  # create file handler
36
39
  def create_file_handler(filename: str) -> None:
40
+ from pathlib import Path
41
+
37
42
  fh = logging.FileHandler(filename=filename, mode="w")
38
43
  fh.setLevel(logging.DEBUG)
39
44
  fh.setFormatter(formatter)
40
45
  logger.addHandler(fh)
41
46
 
47
+ filename_db = Path(filename)
48
+ filename_db = filename_db.parent / (filename_db.stem + "_dbtrace" + filename_db.suffix)
49
+ fh = logging.FileHandler(filename=filename_db, mode="w")
50
+ fh.setLevel(logging.DEBUG)
51
+ fh.setFormatter(formatter_db)
52
+ logger_db.addHandler(fh)
53
+
42
54
 
43
55
  # update console handler
44
56
  def update_console_handler(verbose: bool) -> None:
sonusai/genmixdb.py CHANGED
@@ -30,6 +30,7 @@ def genmixdb(
30
30
  logging: bool = True,
31
31
  show_progress: bool = False,
32
32
  test: bool = False,
33
+ verbose: bool = False,
33
34
  save_json: bool = False,
34
35
  no_par: bool = False,
35
36
  ) -> None:
@@ -69,11 +70,11 @@ def genmixdb(
69
70
 
70
71
  mixdb = MixtureDatabase(location, test)
71
72
 
72
- populate_top_table(location, config, test)
73
- populate_class_label_table(location, config, test)
74
- populate_class_weights_threshold_table(location, config, test)
75
- populate_spectral_mask_table(location, config, test)
76
- populate_truth_parameters_table(location, config, test)
73
+ populate_top_table(location, config, test, verbose)
74
+ populate_class_label_table(location, config, test, verbose)
75
+ populate_class_weights_threshold_table(location, config, test, verbose)
76
+ populate_spectral_mask_table(location, config, test, verbose)
77
+ populate_truth_parameters_table(location, config, test, verbose)
77
78
 
78
79
  seed(config["seed"])
79
80
 
@@ -94,7 +95,7 @@ def genmixdb(
94
95
  if logging:
95
96
  logger.info("Populating source file table")
96
97
 
97
- populate_source_file_table(location, source_files, test)
98
+ populate_source_file_table(location, source_files, test, verbose)
98
99
 
99
100
  if logging:
100
101
  logger.info("Sources summary")
@@ -129,7 +130,7 @@ def genmixdb(
129
130
  if logging:
130
131
  logger.info("Populating impulse response file table")
131
132
 
132
- populate_impulse_response_file_table(location, ir_files, test)
133
+ populate_impulse_response_file_table(location, ir_files, test, verbose)
133
134
 
134
135
  if logging:
135
136
  logger.debug("List of impulse responses:")
@@ -219,6 +220,7 @@ def genmixdb(
219
220
  location=location,
220
221
  mixtures=mixtures,
221
222
  test=test,
223
+ verbose=verbose,
222
224
  logging=logging,
223
225
  show_progress=show_progress,
224
226
  )
@@ -330,6 +332,7 @@ def main() -> None:
330
332
  save_mix=save_mix,
331
333
  show_progress=True,
332
334
  save_json=save_json,
335
+ verbose=verbose,
333
336
  no_par=no_par,
334
337
  )
335
338
 
@@ -17,10 +17,10 @@ def config_file(location: str) -> str:
17
17
  return join(location, "config.yml")
18
18
 
19
19
 
20
- def initialize_db(location: str, test: bool = False) -> None:
20
+ def initialize_db(location: str, test: bool = False, verbose: bool = False) -> None:
21
21
  from .mixdb import db_connection
22
22
 
23
- con = db_connection(location=location, create=True, test=test)
23
+ con = db_connection(location=location, create=True, test=test, verbose=verbose)
24
24
 
25
25
  con.execute("""
26
26
  CREATE TABLE truth_config(
@@ -130,6 +130,7 @@ def initialize_db(location: str, test: bool = False) -> None:
130
130
  snr_gain FLOAT NOT NULL,
131
131
  snr_random BOOLEAN NOT NULL,
132
132
  start INTEGER NOT NULL,
133
+ UNIQUE(effects, file_id, pre_tempo, repeat, snr, snr_gain, snr_random, start),
133
134
  FOREIGN KEY(file_id) REFERENCES source_file (id))
134
135
  """)
135
136
 
@@ -155,14 +156,14 @@ def initialize_db(location: str, test: bool = False) -> None:
155
156
  con.close()
156
157
 
157
158
 
158
- def populate_top_table(location: str, config: dict, test: bool = False) -> None:
159
+ def populate_top_table(location: str, config: dict, test: bool = False, verbose: bool = False) -> None:
159
160
  """Populate top table"""
160
161
  import json
161
162
 
162
163
  from .constants import MIXDB_VERSION
163
164
  from .mixdb import db_connection
164
165
 
165
- con = db_connection(location=location, readonly=False, test=test)
166
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
166
167
  con.execute(
167
168
  """
168
169
  INSERT INTO top (id, asr_configs, class_balancing, feature, mixid_width, num_classes,
@@ -186,11 +187,11 @@ def populate_top_table(location: str, config: dict, test: bool = False) -> None:
186
187
  con.close()
187
188
 
188
189
 
189
- def populate_class_label_table(location: str, config: dict, test: bool = False) -> None:
190
+ def populate_class_label_table(location: str, config: dict, test: bool = False, verbose: bool = False) -> None:
190
191
  """Populate class_label table"""
191
192
  from .mixdb import db_connection
192
193
 
193
- con = db_connection(location=location, readonly=False, test=test)
194
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
194
195
  con.executemany(
195
196
  "INSERT INTO class_label (label) VALUES (?)",
196
197
  [(item,) for item in config["class_labels"]],
@@ -199,7 +200,12 @@ def populate_class_label_table(location: str, config: dict, test: bool = False)
199
200
  con.close()
200
201
 
201
202
 
202
- def populate_class_weights_threshold_table(location: str, config: dict, test: bool = False) -> None:
203
+ def populate_class_weights_threshold_table(
204
+ location: str,
205
+ config: dict,
206
+ test: bool = False,
207
+ verbose: bool = False,
208
+ ) -> None:
203
209
  """Populate class_weights_threshold table"""
204
210
  from .mixdb import db_connection
205
211
 
@@ -215,7 +221,7 @@ def populate_class_weights_threshold_table(location: str, config: dict, test: bo
215
221
  if len(class_weights_threshold) != num_classes:
216
222
  raise ValueError(f"invalid class_weights_threshold length: {len(class_weights_threshold)}")
217
223
 
218
- con = db_connection(location=location, readonly=False, test=test)
224
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
219
225
  con.executemany(
220
226
  "INSERT INTO class_weights_threshold (threshold) VALUES (?)",
221
227
  [(item,) for item in class_weights_threshold],
@@ -224,12 +230,12 @@ def populate_class_weights_threshold_table(location: str, config: dict, test: bo
224
230
  con.close()
225
231
 
226
232
 
227
- def populate_spectral_mask_table(location: str, config: dict, test: bool = False) -> None:
233
+ def populate_spectral_mask_table(location: str, config: dict, test: bool = False, verbose: bool = False) -> None:
228
234
  """Populate spectral_mask table"""
229
235
  from .config import get_spectral_masks
230
236
  from .mixdb import db_connection
231
237
 
232
- con = db_connection(location=location, readonly=False, test=test)
238
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
233
239
  con.executemany(
234
240
  """
235
241
  INSERT INTO spectral_mask (f_max_width, f_num, t_max_percent, t_max_width, t_num) VALUES (?, ?, ?, ?, ?)
@@ -249,12 +255,12 @@ def populate_spectral_mask_table(location: str, config: dict, test: bool = False
249
255
  con.close()
250
256
 
251
257
 
252
- def populate_truth_parameters_table(location: str, config: dict, test: bool = False) -> None:
258
+ def populate_truth_parameters_table(location: str, config: dict, test: bool = False, verbose: bool = False) -> None:
253
259
  """Populate truth_parameters table"""
254
260
  from .config import get_truth_parameters
255
261
  from .mixdb import db_connection
256
262
 
257
- con = db_connection(location=location, readonly=False, test=test)
263
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
258
264
  con.executemany(
259
265
  """
260
266
  INSERT INTO truth_parameters (category, name, parameters) VALUES (?, ?, ?)
@@ -272,17 +278,22 @@ def populate_truth_parameters_table(location: str, config: dict, test: bool = Fa
272
278
  con.close()
273
279
 
274
280
 
275
- def populate_source_file_table(location: str, files: list[SourceFile], test: bool = False) -> None:
281
+ def populate_source_file_table(
282
+ location: str,
283
+ files: list[SourceFile],
284
+ test: bool = False,
285
+ verbose: bool = False,
286
+ ) -> None:
276
287
  """Populate source file table"""
277
288
  import json
278
289
  from pathlib import Path
279
290
 
280
291
  from .mixdb import db_connection
281
292
 
282
- _populate_truth_config_table(location, files, test)
283
- _populate_speaker_table(location, files, test)
293
+ _populate_truth_config_table(location, files, test, verbose)
294
+ _populate_speaker_table(location, files, test, verbose)
284
295
 
285
- con = db_connection(location=location, readonly=False, test=test)
296
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
286
297
 
287
298
  cur = con.cursor()
288
299
  textgrid_metadata_tiers: set[str] = set()
@@ -341,13 +352,18 @@ def populate_source_file_table(location: str, files: list[SourceFile], test: boo
341
352
  con.close()
342
353
 
343
354
 
344
- def populate_impulse_response_file_table(location: str, files: list[ImpulseResponseFile], test: bool = False) -> None:
355
+ def populate_impulse_response_file_table(
356
+ location: str,
357
+ files: list[ImpulseResponseFile],
358
+ test: bool = False,
359
+ verbose: bool = False,
360
+ ) -> None:
345
361
  """Populate impulse response file table"""
346
362
  from .mixdb import db_connection
347
363
 
348
- _populate_impulse_response_tag_table(location, files, test)
364
+ _populate_impulse_response_tag_table(location, files, test, verbose)
349
365
 
350
- con = db_connection(location=location, readonly=False, test=test)
366
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
351
367
 
352
368
  cur = con.cursor()
353
369
  for file in files:
@@ -367,12 +383,12 @@ def populate_impulse_response_file_table(location: str, files: list[ImpulseRespo
367
383
  con.close()
368
384
 
369
385
 
370
- def update_mixid_width(location: str, num_mixtures: int, test: bool = False) -> None:
386
+ def update_mixid_width(location: str, num_mixtures: int, test: bool = False, verbose: bool = False) -> None:
371
387
  """Update the mixid width"""
372
388
  from ..utils.max_text_width import max_text_width
373
389
  from .mixdb import db_connection
374
390
 
375
- con = db_connection(location=location, readonly=False, test=test)
391
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
376
392
  con.execute("UPDATE top SET mixid_width=? WHERE ? = id", (max_text_width(num_mixtures), 1))
377
393
  con.commit()
378
394
  con.close()
@@ -422,6 +438,7 @@ def populate_mixture_table(
422
438
  location: str,
423
439
  mixtures: list[Mixture],
424
440
  test: bool = False,
441
+ verbose: bool = False,
425
442
  logging: bool = False,
426
443
  show_progress: bool = False,
427
444
  ) -> None:
@@ -432,32 +449,11 @@ def populate_mixture_table(
432
449
  from .helpers import from_source
433
450
  from .mixdb import db_connection
434
451
 
435
- con = db_connection(location=location, readonly=False, test=test)
452
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
436
453
 
437
454
  # Populate source table
438
455
  if logging:
439
- logger.info("Populating source table")
440
- # TODO: refactor this to not load all sources into list; maybe us UNIQUE table modifier?
441
- sources: list[tuple[str, int, float, bool, float, float, bool, int]] = []
442
- for mixture in mixtures:
443
- for source in mixture.all_sources.values():
444
- entry = from_source(source)
445
- if entry not in sources:
446
- sources.append(entry)
447
- for source in track(sources, disable=not show_progress):
448
- con.execute(
449
- """
450
- INSERT INTO source (effects, file_id, pre_tempo, repeat, snr, snr_gain, snr_random, start)
451
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
452
- """,
453
- source,
454
- )
455
-
456
- con.commit()
457
-
458
- # Populate mixture table
459
- if logging:
460
- logger.info("Populating mixture table")
456
+ logger.info("Populating mixture and source tables")
461
457
  for mixture in track(mixtures, disable=not show_progress):
462
458
  m_id = int(mixture.name) + 1
463
459
  con.execute(
@@ -469,6 +465,14 @@ def populate_mixture_table(
469
465
  )
470
466
 
471
467
  for source in mixture.all_sources.values():
468
+ con.execute(
469
+ """
470
+ INSERT OR IGNORE INTO source (effects, file_id, pre_tempo, repeat, snr, snr_gain, snr_random, start)
471
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
472
+ """,
473
+ from_source(source),
474
+ )
475
+
472
476
  source_id = con.execute(
473
477
  """
474
478
  SELECT id
@@ -487,7 +491,7 @@ def populate_mixture_table(
487
491
  con.execute("INSERT INTO mixture_source (mixture_id, source_id) VALUES (?, ?)", (m_id, source_id))
488
492
 
489
493
  if logging:
490
- logger.info("Closing mixture table")
494
+ logger.info("Closing mixture and source tables")
491
495
  con.commit()
492
496
  con.close()
493
497
 
@@ -857,7 +861,12 @@ def _get_textgrid_tiers_from_source_file(file: str) -> list[str]:
857
861
  return sorted(tg.tierNames)
858
862
 
859
863
 
860
- def _populate_speaker_table(location: str, source_files: list[SourceFile], test: bool = False) -> None:
864
+ def _populate_speaker_table(
865
+ location: str,
866
+ source_files: list[SourceFile],
867
+ test: bool = False,
868
+ verbose: bool = False,
869
+ ) -> None:
861
870
  """Populate speaker table"""
862
871
  import json
863
872
  from pathlib import Path
@@ -882,7 +891,7 @@ def _populate_speaker_table(location: str, source_files: list[SourceFile], test:
882
891
  new_columns.append(column)
883
892
  new_columns = sorted(set(new_columns))
884
893
 
885
- con = db_connection(location=location, readonly=False, test=test)
894
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
886
895
 
887
896
  for new_column in new_columns:
888
897
  con.execute(f"ALTER TABLE speaker ADD COLUMN {new_column} TEXT")
@@ -914,13 +923,18 @@ def _populate_speaker_table(location: str, source_files: list[SourceFile], test:
914
923
  con.close()
915
924
 
916
925
 
917
- def _populate_truth_config_table(location: str, source_files: list[SourceFile], test: bool = False) -> None:
926
+ def _populate_truth_config_table(
927
+ location: str,
928
+ source_files: list[SourceFile],
929
+ test: bool = False,
930
+ verbose: bool = False,
931
+ ) -> None:
918
932
  """Populate truth_config table"""
919
933
  import json
920
934
 
921
935
  from .mixdb import db_connection
922
936
 
923
- con = db_connection(location=location, readonly=False, test=test)
937
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
924
938
 
925
939
  # Populate truth_config table
926
940
  truth_configs: list[str] = []
@@ -938,11 +952,16 @@ def _populate_truth_config_table(location: str, source_files: list[SourceFile],
938
952
  con.close()
939
953
 
940
954
 
941
- def _populate_impulse_response_tag_table(location: str, files: list[ImpulseResponseFile], test: bool = False) -> None:
955
+ def _populate_impulse_response_tag_table(
956
+ location: str,
957
+ files: list[ImpulseResponseFile],
958
+ test: bool = False,
959
+ verbose: bool = False,
960
+ ) -> None:
942
961
  """Populate ir_tag table"""
943
962
  from .mixdb import db_connection
944
963
 
945
- con = db_connection(location=location, readonly=False, test=test)
964
+ con = db_connection(location=location, readonly=False, test=test, verbose=verbose)
946
965
 
947
966
  con.executemany(
948
967
  "INSERT INTO ir_tag (tag) VALUES (?)",
sonusai/mixture/mixdb.py CHANGED
@@ -58,6 +58,8 @@ def db_connection(
58
58
  from os import remove
59
59
  from os.path import exists
60
60
 
61
+ from .. import logger_db
62
+
61
63
  name = db_file(location, test)
62
64
  if create and exists(name):
63
65
  remove(name)
@@ -71,18 +73,19 @@ def db_connection(
71
73
  connection = sqlite3.connect("file:" + name, uri=True, timeout=20)
72
74
 
73
75
  if verbose:
74
- connection.set_trace_callback(print)
76
+ connection.set_trace_callback(logger_db.debug)
75
77
 
76
78
  return connection
77
79
 
78
80
 
79
81
  class SQLiteContextManager:
80
- def __init__(self, location: str, test: bool = False) -> None:
82
+ def __init__(self, location: str, test: bool = False, verbose: bool = False) -> None:
81
83
  self.location = location
82
84
  self.test = test
85
+ self.verbose = verbose
83
86
 
84
87
  def __enter__(self) -> Cursor:
85
- self.con = db_connection(location=self.location, test=self.test)
88
+ self.con = db_connection(location=self.location, test=self.test, verbose=self.verbose)
86
89
  self.cur = self.con.cursor()
87
90
  return self.cur
88
91
 
@@ -91,7 +94,7 @@ class SQLiteContextManager:
91
94
 
92
95
 
93
96
  class MixtureDatabase:
94
- def __init__(self, location: str, test: bool = False, use_cache: bool = True) -> None:
97
+ def __init__(self, location: str, test: bool = False, verbose: bool = False, use_cache: bool = True) -> None:
95
98
  import json
96
99
  from os.path import exists
97
100
 
@@ -99,12 +102,13 @@ class MixtureDatabase:
99
102
 
100
103
  self.location = location
101
104
  self.test = test
105
+ self.verbose = verbose
102
106
  self.use_cache = use_cache
103
107
 
104
108
  if not exists(db_file(self.location, self.test)):
105
109
  raise OSError(f"Could not find mixture database in {self.location}")
106
110
 
107
- self.db = partial(SQLiteContextManager, self.location, self.test)
111
+ self.db = partial(SQLiteContextManager, self.location, self.test, self.verbose)
108
112
 
109
113
  # Check config.yml to see if asr_configs has changed and update database if needed
110
114
  config = load_config(self.location)
@@ -113,7 +117,7 @@ class MixtureDatabase:
113
117
  old_asr_configs = c.execute("SELECT asr_configs FROM top").fetchone()
114
118
 
115
119
  if old_asr_configs is not None and new_asr_configs != old_asr_configs[0]:
116
- con = db_connection(location=self.location, readonly=False, test=self.test)
120
+ con = db_connection(location=self.location, readonly=False, test=self.test, verbose=self.verbose)
117
121
  con.execute("UPDATE top SET asr_configs = ? WHERE ? = id", (new_asr_configs,))
118
122
  con.commit()
119
123
  con.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sonusai
3
- Version: 1.0.4
3
+ Version: 1.0.6
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
@@ -1,4 +1,4 @@
1
- sonusai/__init__.py,sha256=7kXYJuI8EPKezlFD7djImNolS1JMyyltgq_vqlDUCek,3261
1
+ sonusai/__init__.py,sha256=_lBs_XangUYtUcr7JAt55hk1AczFIAgySJfkL-Pt51U,3710
2
2
  sonusai/aawscd_probwrite.py,sha256=QZLMQrmPr3OjZ06buyYDwlnk9YPCpyr4KHkBjPsiqjU,3700
3
3
  sonusai/audiofe.py,sha256=0DNpntK0WpzNZeyHX8_wC-pDtrgvLkJZFPXz-PspdrY,19448
4
4
  sonusai/calc_metric_spenh.py,sha256=0Md6hRFUH9lGnsvoydqne99O7Gi0ieG9vMU_1PnASBg,50019
@@ -23,7 +23,7 @@ sonusai/doc.py,sha256=ZgFSSI56oNDb-yC3xi-RHMClMjryR2VrgGyi3ggX8gM,1098
23
23
  sonusai/genft.py,sha256=jGjtjQQEuPunROkoDOYZ7gdyZEa09EMCVhpHrkBZ7A0,5571
24
24
  sonusai/genmetrics.py,sha256=sbcqbjI4YOJd5_Lzor4Re_TK6GUQ5zJuYbhDux8odI0,6184
25
25
  sonusai/genmix.py,sha256=U62GPgejGfnDfRgXUosmnVVWvTV07sg46JQEIew0nPg,5744
26
- sonusai/genmixdb.py,sha256=_YPIwBn_yqbE6Nik0j_-3vT0lO35Jemq_xDsA7zoCi4,11132
26
+ sonusai/genmixdb.py,sha256=9T-qn8_Bekc-P7kOY4pV8w-CHixDvSbZPds7wt_mDYU,11272
27
27
  sonusai/ir_metric.py,sha256=nxS_mARPSZG5Y0G3L8HysOnkPj4v-RGxAxAVBYe-gJI,19600
28
28
  sonusai/lsdb.py,sha256=86t6PpsyardRa6VcSJ-KyU1NiTmlg59VUlcSTptJbn0,5078
29
29
  sonusai/main.py,sha256=72feJv5XEVJE_CQatmNIL1VD9ca-Mo0QNDbXxLrHrbQ,2619
@@ -54,12 +54,12 @@ sonusai/mixture/data_io.py,sha256=DV48sFcP2Qp3NBzvcnlptQOXU3aUEcAeLuh3XOtC5jI,53
54
54
  sonusai/mixture/db_datatypes.py,sha256=VvNtbOgt5WSeSnBoVcNGC5gs_7hX_38pDUPjy5KRbG4,1471
55
55
  sonusai/mixture/effects.py,sha256=ghMO-WiSMQc1CvafD0wkt_DGsM2A6Hi_oZS6j-jeZh8,11784
56
56
  sonusai/mixture/feature.py,sha256=7GJvFhfqeqerfjy9Vq9aKt-cecgYblK0IypNNo5hgwY,2285
57
- sonusai/mixture/generation.py,sha256=iozYcur9oGFDOgovph-F7mzuaD7ie-2ED4NE7kpAPWY,32559
57
+ sonusai/mixture/generation.py,sha256=2VQ41uc1OLFpDKwu0TlcdtxSXwiTJFr_B6_E20pheIY,32844
58
58
  sonusai/mixture/helpers.py,sha256=dmyHwf1C5dZjYOd11kVV16KI33CaM-dU_fyaxOrrKt8,11642
59
59
  sonusai/mixture/ir_delay.py,sha256=aiC23HMWQ08-v5wORgMx1_DOJSdh4kunULqiQ-SGuMo,2026
60
60
  sonusai/mixture/ir_effects.py,sha256=PqiqD4PS42-7kD6ESnsZi2a3tnKCFa4E0xqUujRBvGg,2152
61
61
  sonusai/mixture/log_duration_and_sizes.py,sha256=3ekS27IMKlnxIkQAmprzmBnzHOpRjZh3d7maL2VqWQU,927
62
- sonusai/mixture/mixdb.py,sha256=77GjuedI8a2l6MvQCrz2gDBIZNvwduOQ0ERA-4dXK28,86099
62
+ sonusai/mixture/mixdb.py,sha256=QIpbpS-J0ACNUFoMwZjiylsDgpfkUehLxSq79wcLgzk,86305
63
63
  sonusai/mixture/pad_audio.py,sha256=KNxVQAejA0hblLOnMJgLS6lFaeE0n3tWQ5rclaHBnIY,1015
64
64
  sonusai/mixture/resample.py,sha256=jXqH6FrZ0mlhQ07XqPx88TT9elu3HHVLw7Q0a7Lh5M4,221
65
65
  sonusai/mixture/sox_effects.py,sha256=tndS9qrh3eJOTUPrufyWHCt3UqjbPuh81I4Lo4MNmDg,5328
@@ -132,7 +132,7 @@ sonusai/utils/tokenized_shell_vars.py,sha256=EDrrAgz5lJ0RBAjLcTJt1MeyjhbNZiqXkym
132
132
  sonusai/utils/write_audio.py,sha256=IHzrJoFtFcea_J6wo6QSiojRkgnNOzAEcg-z0rFV7nU,810
133
133
  sonusai/utils/yes_or_no.py,sha256=0h1okjXmDNbJp7rZJFR2V-HFU1GJDm3YFTUVmYExkOU,263
134
134
  sonusai/vars.py,sha256=m8pdgfR4A6A9TCGf_rok6jPAT5BgrEsYXTSISIh1nrI,1163
135
- sonusai-1.0.4.dist-info/METADATA,sha256=zoOsV6OKVVFihoDmuEyN9mDCLoNPww_3WdB3d-YsJ3Y,2652
136
- sonusai-1.0.4.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
137
- sonusai-1.0.4.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
138
- sonusai-1.0.4.dist-info/RECORD,,
135
+ sonusai-1.0.6.dist-info/METADATA,sha256=NeaZn2a1yaOmW9AWfWerYv5_RqTTL_MlQGZJv9XHVmo,2652
136
+ sonusai-1.0.6.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
137
+ sonusai-1.0.6.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
138
+ sonusai-1.0.6.dist-info/RECORD,,