sonusai 0.19.5__py3-none-any.whl → 0.19.8__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 (61) hide show
  1. sonusai/__init__.py +1 -1
  2. sonusai/aawscd_probwrite.py +1 -1
  3. sonusai/calc_metric_spenh.py +1 -1
  4. sonusai/genft.py +38 -49
  5. sonusai/genmetrics.py +65 -70
  6. sonusai/genmix.py +62 -72
  7. sonusai/genmixdb.py +73 -95
  8. sonusai/metrics/calc_class_weights.py +1 -3
  9. sonusai/metrics/calc_optimal_thresholds.py +2 -2
  10. sonusai/metrics/calc_phase_distance.py +1 -1
  11. sonusai/metrics/calc_segsnr_f.py +1 -1
  12. sonusai/metrics/calc_speech.py +6 -6
  13. sonusai/metrics/class_summary.py +6 -15
  14. sonusai/metrics/confusion_matrix_summary.py +11 -27
  15. sonusai/metrics/one_hot.py +3 -3
  16. sonusai/metrics/snr_summary.py +7 -7
  17. sonusai/mixture/__init__.py +3 -17
  18. sonusai/mixture/augmentation.py +5 -6
  19. sonusai/mixture/class_count.py +1 -1
  20. sonusai/mixture/config.py +36 -46
  21. sonusai/mixture/data_io.py +30 -1
  22. sonusai/mixture/datatypes.py +29 -40
  23. sonusai/mixture/db_datatypes.py +1 -1
  24. sonusai/mixture/feature.py +3 -23
  25. sonusai/mixture/generation.py +202 -235
  26. sonusai/mixture/helpers.py +29 -187
  27. sonusai/mixture/mixdb.py +386 -159
  28. sonusai/mixture/soundfile_audio.py +1 -1
  29. sonusai/mixture/sox_audio.py +4 -4
  30. sonusai/mixture/sox_augmentation.py +1 -1
  31. sonusai/mixture/target_class_balancing.py +9 -11
  32. sonusai/mixture/targets.py +23 -20
  33. sonusai/mixture/truth.py +21 -34
  34. sonusai/mixture/truth_functions/__init__.py +6 -0
  35. sonusai/mixture/truth_functions/crm.py +51 -37
  36. sonusai/mixture/truth_functions/energy.py +95 -50
  37. sonusai/mixture/truth_functions/file.py +12 -8
  38. sonusai/mixture/truth_functions/metadata.py +24 -0
  39. sonusai/mixture/truth_functions/metrics.py +28 -0
  40. sonusai/mixture/truth_functions/phoneme.py +4 -5
  41. sonusai/mixture/truth_functions/sed.py +32 -23
  42. sonusai/mixture/truth_functions/target.py +62 -29
  43. sonusai/mkwav.py +34 -43
  44. sonusai/queries/queries.py +9 -15
  45. sonusai/speech/l2arctic.py +6 -2
  46. sonusai/summarize_metric_spenh.py +1 -1
  47. sonusai/utils/__init__.py +1 -0
  48. sonusai/utils/asr_functions/aaware_whisper.py +1 -1
  49. sonusai/utils/audio_devices.py +27 -18
  50. sonusai/utils/docstring.py +6 -3
  51. sonusai/utils/energy_f.py +5 -3
  52. sonusai/utils/human_readable_size.py +6 -6
  53. sonusai/utils/load_object.py +15 -0
  54. sonusai/utils/onnx_utils.py +2 -2
  55. sonusai/utils/parallel.py +3 -5
  56. sonusai/utils/print_mixture_details.py +3 -3
  57. {sonusai-0.19.5.dist-info → sonusai-0.19.8.dist-info}/METADATA +2 -2
  58. {sonusai-0.19.5.dist-info → sonusai-0.19.8.dist-info}/RECORD +60 -58
  59. sonusai/mixture/truth_functions/datatypes.py +0 -37
  60. {sonusai-0.19.5.dist-info → sonusai-0.19.8.dist-info}/WHEEL +0 -0
  61. {sonusai-0.19.5.dist-info → sonusai-0.19.8.dist-info}/entry_points.txt +0 -0
@@ -4,14 +4,17 @@ import pyaudio
4
4
  def get_input_device_index_by_name(p: pyaudio.PyAudio, name: str | None = None) -> int:
5
5
  info = p.get_host_api_info_by_index(0)
6
6
  device_count = info.get("deviceCount")
7
- for i in range(0, device_count):
8
- device_info = p.get_device_info_by_host_api_device_index(0, i)
9
- if name is None:
10
- device_name = None
11
- else:
12
- device_name = device_info.get("name")
13
- if name == device_name and device_info.get("maxInputChannels") > 0:
14
- return i
7
+ if isinstance(device_count, int):
8
+ for i in range(0, device_count):
9
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
10
+ if name is None:
11
+ device_name = None
12
+ else:
13
+ device_name = device_info.get("name")
14
+ if isinstance(device_name, str) or device_name is None:
15
+ input_channels = device_info.get("maxInputChannels")
16
+ if name == device_name and isinstance(input_channels, int) and input_channels > 0:
17
+ return i
15
18
 
16
19
  raise ValueError(f"Could not find {name}")
17
20
 
@@ -20,11 +23,14 @@ def get_input_devices(p: pyaudio.PyAudio) -> list[str]:
20
23
  names = []
21
24
  info = p.get_host_api_info_by_index(0)
22
25
  device_count = info.get("deviceCount")
23
- for i in range(0, device_count):
24
- device_info = p.get_device_info_by_host_api_device_index(0, i)
25
- device_name = device_info.get("name")
26
- if device_info.get("maxInputChannels") > 0:
27
- names.append(device_name)
26
+ if isinstance(device_count, int):
27
+ for i in range(0, device_count):
28
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
29
+ device_name = device_info.get("name")
30
+ if isinstance(device_name, str):
31
+ input_channels = device_info.get("maxInputChannels")
32
+ if isinstance(input_channels, int) and input_channels > 0:
33
+ names.append(device_name)
28
34
 
29
35
  return names
30
36
 
@@ -32,10 +38,13 @@ def get_input_devices(p: pyaudio.PyAudio) -> list[str]:
32
38
  def get_default_input_device(p: pyaudio.PyAudio) -> str:
33
39
  info = p.get_host_api_info_by_index(0)
34
40
  device_count = info.get("deviceCount")
35
- for i in range(0, device_count):
36
- device_info = p.get_device_info_by_host_api_device_index(0, i)
37
- device_name = device_info.get("name")
38
- if device_info.get("maxInputChannels") > 0:
39
- return device_name
41
+ if isinstance(device_count, int):
42
+ for i in range(0, device_count):
43
+ device_info = p.get_device_info_by_host_api_device_index(0, i)
44
+ device_name = device_info.get("name")
45
+ if isinstance(device_name, str):
46
+ input_channels = device_info.get("maxInputChannels")
47
+ if isinstance(input_channels, int) and input_channels > 0:
48
+ return device_name
40
49
 
41
50
  raise ValueError("No input audio devices found")
@@ -1,4 +1,4 @@
1
- def trim_docstring(docstring: str) -> str:
1
+ def trim_docstring(docstring: str | None) -> str:
2
2
  """Trim whitespace from docstring"""
3
3
  from sys import maxsize
4
4
 
@@ -30,11 +30,14 @@ def trim_docstring(docstring: str) -> str:
30
30
  return "\n".join(trimmed)
31
31
 
32
32
 
33
- def add_commands_to_docstring(docstring: str, plugin_docstrings: list[str]) -> str:
33
+ def add_commands_to_docstring(docstring: str | None, plugin_docstrings: list[str]) -> str:
34
34
  """Add commands to docstring"""
35
35
  import sonusai
36
36
 
37
- lines = docstring.splitlines()
37
+ if not docstring:
38
+ lines = []
39
+ else:
40
+ lines = docstring.splitlines()
38
41
 
39
42
  start = lines.index("The sonusai commands are:")
40
43
  end = lines.index("", start)
sonusai/utils/energy_f.py CHANGED
@@ -29,14 +29,16 @@ def compute_energy_f(
29
29
  if transform is None:
30
30
  raise ValueError("Must provide ForwardTransform object")
31
31
 
32
- frequency_domain = transform.execute_all(torch.from_numpy(time_domain))[0].numpy()
32
+ _frequency_domain = transform.execute_all(torch.from_numpy(time_domain))[0].numpy()
33
+ else:
34
+ _frequency_domain = frequency_domain
33
35
 
34
- frames, bins = frequency_domain.shape
36
+ frames, bins = _frequency_domain.shape
35
37
  result = np.empty((frames, bins), dtype=np.float32)
36
38
 
37
39
  for f in range(frames):
38
40
  for b in range(bins):
39
- value = frequency_domain[f, b]
41
+ value = _frequency_domain[f, b]
40
42
  result[f, b] = np.real(value) * np.real(value) + np.imag(value) * np.imag(value)
41
43
 
42
44
  return result
@@ -1,7 +1,7 @@
1
- def human_readable_size(size: float, decimal_places: int = 3) -> str:
1
+ def human_readable_size(num: float, decimal_places: int = 3, suffix: str = "B") -> str:
2
2
  """Convert number into string with units"""
3
- for unit in ["B", "kB", "MB", "GB", "TB"]: # noqa: B007
4
- if size < 1024.0:
5
- break
6
- size /= 1024.0
7
- return f"{size:.{decimal_places}f} {unit}"
3
+ for unit in ("", "k", "M", "G", "T", "P", "E", "Z"):
4
+ if abs(num) < 1024.0:
5
+ return f"{num:.{decimal_places}f} {unit}{suffix}"
6
+ num /= 1024.0
7
+ return f"{num:.{decimal_places}f} Y{suffix}"
@@ -0,0 +1,15 @@
1
+ from functools import lru_cache
2
+ from typing import Any
3
+
4
+
5
+ @lru_cache
6
+ def load_object(name: str) -> Any:
7
+ """Load an object from a pickle file (with LRU caching)"""
8
+ import pickle
9
+ from os.path import exists
10
+
11
+ if exists(name):
12
+ with open(name, "rb") as f:
13
+ return pickle.load(f) # noqa: S301
14
+
15
+ raise FileNotFoundError(name)
@@ -3,8 +3,8 @@ from collections.abc import Sequence
3
3
  from onnx import ModelProto
4
4
  from onnx import ValueInfoProto
5
5
  from onnxruntime import InferenceSession
6
- from onnxruntime import NodeArg
7
- from onnxruntime import SessionOptions
6
+ from onnxruntime import NodeArg # pyright: ignore [reportAttributeAccessIssue]
7
+ from onnxruntime import SessionOptions # pyright: ignore [reportAttributeAccessIssue]
8
8
 
9
9
  REQUIRED_HPARAMS = (
10
10
  "feature",
sonusai/utils/parallel.py CHANGED
@@ -36,7 +36,6 @@ def par_track(
36
36
  _total = int(total)
37
37
 
38
38
  results: list[Any] = [None] * _total
39
- n = 0
40
39
  if no_par or current_process().daemon:
41
40
  if initializer is not None:
42
41
  if initargs is not None:
@@ -44,9 +43,8 @@ def par_track(
44
43
  else:
45
44
  initializer()
46
45
 
47
- for result in map(func, *iterables):
46
+ for n, result in enumerate(map(func, *iterables)):
48
47
  results[n] = result
49
- n += 1
50
48
  if progress is not None:
51
49
  progress.update()
52
50
  else:
@@ -57,13 +55,13 @@ def par_track(
57
55
  else:
58
56
  _num_cpus = int(num_cpus)
59
57
 
60
- if _total < _num_cpus:
61
- num_cpus = _total
58
+ _num_cpus = min(_num_cpus, _total)
62
59
 
63
60
  if initargs is None:
64
61
  initargs = []
65
62
 
66
63
  with get_context(CONTEXT).Pool(processes=_num_cpus, initializer=initializer, initargs=initargs) as pool:
64
+ n = 0
67
65
  for result in pool.imap(func, *iterables): # type: ignore[arg-type]
68
66
  results[n] = result
69
67
  n += 1
@@ -37,10 +37,10 @@ def print_mixture_details(
37
37
  print_fn(f'{" Samples":{desc_len}} {mixture.samples}')
38
38
  print_fn(f'{" Feature frames":{desc_len}} {mixdb.mixture_feature_frames(mixid)}')
39
39
  print_fn(f'{" Noise file":{desc_len}} {noise_file.name}')
40
- noise_offset_percent = int(np.round(100 * mixture.noise.offset / float(noise_file.duration * SAMPLE_RATE)))
41
- print_fn(f'{" Noise offset":{desc_len}} {mixture.noise.offset} samples ({noise_offset_percent}%)')
40
+ noise_offset_percent = int(np.round(100 * mixture.noise_offset / float(noise_file.duration * SAMPLE_RATE)))
41
+ print_fn(f'{" Noise offset":{desc_len}} {mixture.noise_offset} samples ({noise_offset_percent}%)')
42
42
  print_fn(f'{" SNR":{desc_len}} {mixture.snr} dB{" (random)" if mixture.snr.is_random else ""}')
43
- print_fn(f'{" Target gain":{desc_len}} {[target.gain for target in mixture.targets]}')
43
+ print_fn(f'{" Target gain":{desc_len}} {[target.gain if not mixture.is_noise_only else 0 for target in mixture.targets]}')
44
44
  print_fn(f'{" Target SNR gain":{desc_len}} {mixture.target_snr_gain}')
45
45
  print_fn(f'{" Noise SNR gain":{desc_len}} {mixture.noise_snr_gain}')
46
46
  print_fn("")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sonusai
3
- Version: 0.19.5
3
+ Version: 0.19.8
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
@@ -27,7 +27,7 @@ Requires-Dist: pandas (>=2.2.3,<3.0.0)
27
27
  Requires-Dist: pesq (>=0.0.4,<0.0.5)
28
28
  Requires-Dist: praatio (>=6.2.0,<7.0.0)
29
29
  Requires-Dist: psutil (>=6.0.0,<7.0.0)
30
- Requires-Dist: pyaaware (>=1.5.18,<2.0.0)
30
+ Requires-Dist: pyaaware (>=1.6.3,<2.0.0)
31
31
  Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
32
32
  Requires-Dist: pydub (>=0.25.1,<0.26.0)
33
33
  Requires-Dist: pystoi (>=0.4.1,<0.5.0)
@@ -1,7 +1,7 @@
1
- sonusai/__init__.py,sha256=AzY-ysnmnzg0dDsephK12AuPoClcf8ggphjk4i9Qe-I,2762
2
- sonusai/aawscd_probwrite.py,sha256=DZwvkrNy-v4meCShSNAEtlwLnd-3OcpbHkHYvJt2jFI,3652
1
+ sonusai/__init__.py,sha256=NSb0bvmAh6Rm2MDtchpAGsg8a3BrmVnShYb-vC_emH8,2802
2
+ sonusai/aawscd_probwrite.py,sha256=QZLMQrmPr3OjZ06buyYDwlnk9YPCpyr4KHkBjPsiqjU,3700
3
3
  sonusai/audiofe.py,sha256=iFdthh4UrOvziT8urjrjD7dACWZPQz9orM5bVAW3WSQ,11269
4
- sonusai/calc_metric_spenh.py,sha256=w7lCuAI01B_E_pWQnGlGQQcmzopi7q3QeO5ByMXnzos,46712
4
+ sonusai/calc_metric_spenh.py,sha256=NTqYBNDR6LTSdDA8s4WCSEwajE3-fNJg1TUzhNzJC9g,46719
5
5
  sonusai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sonusai/data/genmixdb.yml,sha256=U_kLbE7gZ5rA7yNSB2NW7eK5dnYP5grJVMR321VMLt8,940
7
7
  sonusai/data/speech_ma01_01.wav,sha256=PK0vMKg-NR6rPE3KouxHGF6PKXnJCr7AwjMqfu98LUA,76644
@@ -12,68 +12,69 @@ sonusai/deprecated/tplot.py,sha256=0p238DvTaP4oU9y-dp0JdLaTV4TKrooAwbx7zdz_QAc,1
12
12
  sonusai/doc/__init__.py,sha256=KyQ26Um0RM8A3GYsb_tbFH64RwpoAw6lja2f_moUWas,33
13
13
  sonusai/doc/doc.py,sha256=VZXauwbOb-VIufWw-lu0yfrd6jMRPeFeVPaaEjZNvn4,18881
14
14
  sonusai/doc.py,sha256=zSmXpioB0YS_5-7kqfS5cr--veSaXkxRKzldId9Hyoc,878
15
- sonusai/genft.py,sha256=nMpmn1rhbWWUaFBS8AEb4v2_iP-sPxPwQEb2etULJzY,5610
16
- sonusai/genmetrics.py,sha256=rOzkQT6ihUBE-nDTzRilJTBeSgVQiDFveVlt75ROIBk,5225
17
- sonusai/genmix.py,sha256=eYq4B9aZ8PXjgv7_Y2oHJH4QUPAMw5Kk8_iN0spsIng,6579
18
- sonusai/genmixdb.py,sha256=oby7eigG-JhJGZIBKs9WIO-X5a5JMyqUAG4krfIUhos,19526
15
+ sonusai/genft.py,sha256=TqtmexKw7tZsugU1DbZ3fY7_YZ2hFlIU-ema6f0LRgQ,5586
16
+ sonusai/genmetrics.py,sha256=RiEYmkRl0yVCIr9PHkKRqEG68WR77pP9WpWAYeKnMLE,5723
17
+ sonusai/genmix.py,sha256=pugp74prksf4ZiJYMXWg2l3v48Qqi9KpP2WhPEBpZOU,6702
18
+ sonusai/genmixdb.py,sha256=QB9iARnAutuPPxML-g-kc3C-W1Sodabr68e4GSRD21Q,18680
19
19
  sonusai/lsdb.py,sha256=0HOGDDndB3LT9cz9AaxKIpt9vslAoSP4F239gply4Xg,5149
20
20
  sonusai/main.py,sha256=HbnEia1B1-Z-mlHkLfojH8aj9GIpL1Btw3oH60T_CCQ,2590
21
21
  sonusai/metrics/__init__.py,sha256=ssV6JEK_oklRSocsp6HMcG-GtJvV8IkRQtdKhHHmwU8,878
22
22
  sonusai/metrics/calc_audio_stats.py,sha256=IHgYEPaob_Nw35SaH3tyHp7Wwju4f-2-BJZ99JyeLmc,1572
23
- sonusai/metrics/calc_class_weights.py,sha256=DP36f0W5Vr8v8LhzmOWFxb1cgXFV-pzN6i4lbG7xMhw,3796
24
- sonusai/metrics/calc_optimal_thresholds.py,sha256=y2bTF409iJBOK0WblJ62XcF83BT3QvPuu_nb7xH4Vt8,3433
23
+ sonusai/metrics/calc_class_weights.py,sha256=SUOCdM4w03rFpyxAriPnPwCtEEFsAH3WxpK9N_fupwo,3637
24
+ sonusai/metrics/calc_optimal_thresholds.py,sha256=0JOqU__doeOpNtgEZgeO1Kg7pttJRpITTVmqLU6TadY,3513
25
25
  sonusai/metrics/calc_pcm.py,sha256=yBQV9UJ1GK5f4c_8TNABMtZR-xyStKJCsSTT0FQGa50,1886
26
26
  sonusai/metrics/calc_pesq.py,sha256=dCztUTaPyyjkUI2DpejqhiPzQv4FOtigzffFnDXDs-M,949
27
- sonusai/metrics/calc_phase_distance.py,sha256=-aNZEkfqxv3UjQsYcGqJ-Ips-ZAktBcykGJ6O2seHjA,1863
27
+ sonusai/metrics/calc_phase_distance.py,sha256=MFuBtGXb5qfQvRVciJ0Soz1w0GMSeJLBJud-aK4Loow,1870
28
28
  sonusai/metrics/calc_sa_sdr.py,sha256=IdCzlQ_w94A3eK42t-gy_DrFN_tziwfDjTU6-WKuCFs,2531
29
29
  sonusai/metrics/calc_sample_weights.py,sha256=0O2EH1-FKlCa0HFgKPUF1BJiknR1hCH7zLbXnoXH7Ag,945
30
- sonusai/metrics/calc_segsnr_f.py,sha256=paMwdPlaqKaIo6nYOV5qYoJ2GmisuHObrZ7desMLhPQ,2896
31
- sonusai/metrics/calc_speech.py,sha256=8QhOpupbQOte9l3a4RsUrmSsG0qXtAeMcGfT2tMDzhs,14776
30
+ sonusai/metrics/calc_segsnr_f.py,sha256=-ncM0OGRcOBDh2PnGsQOQccHs1QXHBTd3eCv4YpF3fs,2923
31
+ sonusai/metrics/calc_speech.py,sha256=3Gs6lmEaZj7XPZYuQnal2_Wa-z-6naktSfLRnl0H53g,14754
32
32
  sonusai/metrics/calc_wer.py,sha256=1MQYMx8ldHeodtJEtGibvDKhvSaGe6DBmZV4L8qOMgg,2362
33
33
  sonusai/metrics/calc_wsdr.py,sha256=vcALY-zuhyThRa1QMz2qW8L9kSBc2v32gV9u8bV7VaM,2556
34
- sonusai/metrics/class_summary.py,sha256=qBWxtQ9YKJUzk5LsjDuwnYEKrpfwubF-vZZL0HbcSH8,3193
35
- sonusai/metrics/confusion_matrix_summary.py,sha256=eZFmt7k5Eanx7FYPwcfnzVq-AMYNSP03gfj9GtsfHWI,3841
36
- sonusai/metrics/one_hot.py,sha256=jo-YsiDVr3PYoZTHhA0t24-VpSXEsZ4lukrP1xFbXAQ,13810
37
- sonusai/metrics/snr_summary.py,sha256=sRUE6XI5PFFhaSpag537WUnukbMizOeMCwVQ2ww34Cw,5617
38
- sonusai/mixture/__init__.py,sha256=vSpEjVuHP-OH5RIY6O_1GeA-311VVaNIjaZh_ddYnLM,5617
34
+ sonusai/metrics/class_summary.py,sha256=ZA7zNgwBpmTs1TP_t4jRT0pWnDnATC_up_8qE4aH-do,2809
35
+ sonusai/metrics/confusion_matrix_summary.py,sha256=zBL_Ke7wF6oKtrKZPr0fsyF_taofdjxBlZmKodu0xUA,3143
36
+ sonusai/metrics/one_hot.py,sha256=hmuyh-9tpRjb_oyqU3WqZ14zItpRJQfcqBDKJeb5H9I,13930
37
+ sonusai/metrics/snr_summary.py,sha256=t8Fi_8WtboTi8flkZuOiHq9H3-nIELx4AKvnm-qvxLQ,5785
38
+ sonusai/mixture/__init__.py,sha256=ccz_UpB7Rh6wUB7uwLgNhciMZhKE9Qt9ICLyjq08kxs,5126
39
39
  sonusai/mixture/audio.py,sha256=Tg0-HzSgZDttKwWwONqgK6qK4maTSmWcfiL1atZcIXQ,2390
40
- sonusai/mixture/augmentation.py,sha256=QqAuM2mN5S4SkQtCg1eDSJEtGsxsa6MBYZ9IOGVBvxg,10372
41
- sonusai/mixture/class_count.py,sha256=U_FiWBU_yH6_ZAmZRdeDKUQyS0fnTtyfJ2V1lgqkFls,605
42
- sonusai/mixture/config.py,sha256=b7fyacZm2FVjcTYC1vOy5FLrxkuJRYR0KrrATcGwQK4,24658
40
+ sonusai/mixture/augmentation.py,sha256=s8QlPHnFJOblRU59fMQ-Zqysiv4OUJ7CxLRcV81lnaA,10407
41
+ sonusai/mixture/class_count.py,sha256=zcC3BDYMPN6wJYmO1RcOuqmrnTQIbMSznl33oN3e2sc,597
42
+ sonusai/mixture/config.py,sha256=g5ZmOhFYqmEdRQYSgfDIZ9VM0QiTwBqk7vIyAvxnPMo,24211
43
43
  sonusai/mixture/constants.py,sha256=fXcWuSI4YZOAuncLGEUeEW9WWNZeN-6mI8LFNILwyTc,1494
44
- sonusai/mixture/data_io.py,sha256=s8DNUIwdgcgrpqP_JplgGB_zVBczgGVTtAZe2qqrtiI,4632
45
- sonusai/mixture/datatypes.py,sha256=D20qe93HjXZ80R_lNgN3Pu4pZH2qTxf2ZmntknDGNrs,10355
46
- sonusai/mixture/db_datatypes.py,sha256=kQG_-G3zOqixoHxcmTrZlmxdrWNr1VhUzYF5IKYi19c,1542
44
+ sonusai/mixture/data_io.py,sha256=KZGqhHd9_ucAfZEAXPIc5XL3aHYgdV5CyqaBx5_t8OM,5551
45
+ sonusai/mixture/datatypes.py,sha256=xNDBWFTVQ3plJ7qHKzrXyV4pffPYuf1xMVqBsR40n4o,10487
46
+ sonusai/mixture/db_datatypes.py,sha256=kvdUOMS6Pkkj9AmxCiq6zM8x7jbPPi933tVaXRxbTdQ,1534
47
47
  sonusai/mixture/eq_rule_is_valid.py,sha256=O3gCAs_0hpxENK5b7kxxpDmOpKHlXGBWuLGT_97ARSM,1210
48
- sonusai/mixture/feature.py,sha256=q9QZRe1qfKvHOuDxLAbpdrQF1gIqL8NRvk4WYWZX2IU,2996
49
- sonusai/mixture/generation.py,sha256=SMRYhTYmuUHejR894HDGdYSDOZvEdFobdfQPCTopB-E,40218
50
- sonusai/mixture/helpers.py,sha256=1La31bTdXA5gFCHRqQWDk6vfNlpKG1AX2jqlhOnObqU,20834
48
+ sonusai/mixture/feature.py,sha256=L0bPFG0RO-CrrtTStUMt_14euYsVo8_TWTP2IKSFKaA,2335
49
+ sonusai/mixture/generation.py,sha256=sPsl-r5d9mkSglHOG5_VbmoDNqOscuWTdu7F6OJa-Qw,38751
50
+ sonusai/mixture/helpers.py,sha256=UEN_9LttIZwvms9nOkjMr_Yf3lpb7sMPmDVUoX8D7yQ,15225
51
51
  sonusai/mixture/log_duration_and_sizes.py,sha256=qhgl87C2KbjxLdKEpjYOoqNL6rc-8-PB4R7Gx_7UG8g,1240
52
- sonusai/mixture/mixdb.py,sha256=Qj_12vZ4_4CdKrkWdBa0ysBt9LSCgs6YdJoiH3L9YQ0,65790
53
- sonusai/mixture/soundfile_audio.py,sha256=fAbNIW8Xi7tfglmrbOzMSLQIG0dZEqTjLxhPGUeFyFc,4073
54
- sonusai/mixture/sox_audio.py,sha256=QnHToWYy1l9kKGIefciUf6CdcAphDiaWcHo4imukUgY,16522
55
- sonusai/mixture/sox_augmentation.py,sha256=txaoSdbLdizrzBbdV0LYleM7lxitV3h27_C68Fij1GY,4506
52
+ sonusai/mixture/mixdb.py,sha256=W8B54U6f-8szMylXSnU0YzOR-a9M3XoCRpyqOgBIJuQ,73498
53
+ sonusai/mixture/soundfile_audio.py,sha256=At_ZC2b9pZ_9IYp1UxyPzRoBK9-1cKPCLMm74F1AjKE,4092
54
+ sonusai/mixture/sox_audio.py,sha256=7ouCLqXYS6tjG2L0v5lugVO7z5UwJmsr1VigbrXhs74,16725
55
+ sonusai/mixture/sox_augmentation.py,sha256=DtfGLPaB1BIt2wvTEA__MYkGFNU85Tuup5BFsIVrh0E,4546
56
56
  sonusai/mixture/spectral_mask.py,sha256=U9XJ_SAoI9b67K_3SE7bNw6U8cPGFOBttaZAxMjA_Jc,2042
57
- sonusai/mixture/target_class_balancing.py,sha256=B8h9fqdvzZgcpsi-Z91GBEi4YSZJj0uMGzNCeGQk7RU,4313
58
- sonusai/mixture/targets.py,sha256=QmhidE9wWU4oeumtUTHrndlcl0cG8_TiIzltnPwfBOg,6397
57
+ sonusai/mixture/target_class_balancing.py,sha256=o_TZ8kVYq10lgeXHh3GUFfflfdUvRt0FekFu2eaNkDs,4251
58
+ sonusai/mixture/targets.py,sha256=6emo2fxxp9ZhSpHuUM9xIjYMz8zeIHAw684jT3l7fAs,6442
59
59
  sonusai/mixture/tokenized_shell_vars.py,sha256=lXTzUDutuBWGV1zIsqeIxWmy-eKm0Vx1y8-iLdsL1gQ,4921
60
60
  sonusai/mixture/torchaudio_audio.py,sha256=169VXKEoOHc5nyiHJwaihkcQ_a1ZH_O-nnk9Gq4JtaQ,2887
61
61
  sonusai/mixture/torchaudio_augmentation.py,sha256=68QpJ4JcAH2fsL4qVck7VvBv615UbCBPEnNe4HMvA_8,3844
62
- sonusai/mixture/truth.py,sha256=IJ9BHrBOMlFS8UGlxuw0-Uao0kHX4mDCmcKXxDs0Lzs,2342
63
- sonusai/mixture/truth_functions/__init__.py,sha256=MEjNPOCd-cXLHpN09GuMv_DPIVWLLI6uhxsiKoaj6JM,1285
64
- sonusai/mixture/truth_functions/crm.py,sha256=mE0q7ax37ZUMVFRi5EW3uqFB8v50WkLB4tgPYdCPjAc,3212
65
- sonusai/mixture/truth_functions/datatypes.py,sha256=fbh16Q4Du4uCpQE_VGp8r3rhZTaRGK3glkkDmJ9BqPY,1285
66
- sonusai/mixture/truth_functions/energy.py,sha256=4uYBEaU-lPnmzJGROa77qWizDMNW2M-c7imOqApmXJE,5451
67
- sonusai/mixture/truth_functions/file.py,sha256=1jw7C3d45NXh4AZYfycyZm1aipX4xgEkpS-GZGgdJ6Y,1339
68
- sonusai/mixture/truth_functions/phoneme.py,sha256=5DbELzq6CDKmjvVndQzq_RzqOLCL7oBqiMEsAuak_UU,855
69
- sonusai/mixture/truth_functions/sed.py,sha256=2Aq_q5POrGbfpBCPFbuXY7LTjiVi5-gNHHr6-mezZqs,3471
70
- sonusai/mixture/truth_functions/target.py,sha256=FaIlsQUqEpP7pokCVQ_x19SLKzRT0Ncw4rgbv0e4_dw,3664
71
- sonusai/mkwav.py,sha256=FOq2PC1SXzIE2v4g3fHifpGCwcghZehbldRhO4V5-_c,4145
62
+ sonusai/mixture/truth.py,sha256=-CwwawFRGjqodR2yKvAMGL1XaYLct-tli7wZ2gbhLtQ,2121
63
+ sonusai/mixture/truth_functions/__init__.py,sha256=0mlOFChPnXG5BC0eKOe4n9VH17jY4iOqZFLuF6Gprdk,1505
64
+ sonusai/mixture/truth_functions/crm.py,sha256=iidcffXfqV8k9O5wt5KTWIAFaTSjmhV5ucKZPbTgpvQ,3809
65
+ sonusai/mixture/truth_functions/energy.py,sha256=dlxl5c58bv012KgyKeO78urXSh6FK3LdqiKk0SDkmS8,6540
66
+ sonusai/mixture/truth_functions/file.py,sha256=pyCAhx3PhJRBoZMrjoQI4Tbi5TN7sPembSVEr80Bu3g,1431
67
+ sonusai/mixture/truth_functions/metadata.py,sha256=aEZly5bJEaZpUBZonWvcu14_Dn3M2HamwTaM5Bg7Tm8,778
68
+ sonusai/mixture/truth_functions/metrics.py,sha256=xfH98eXBe20kwRk-tdWbBkOplF1cCA-u_naJUiTps0Y,873
69
+ sonusai/mixture/truth_functions/phoneme.py,sha256=jwBYiNwwBwh2tHtOJ2NopYWhT6y19kXzSIag0XW9GSY,778
70
+ sonusai/mixture/truth_functions/sed.py,sha256=C0n9DkfBNQblFsFCkPbooy54KuHSY7B0f1vLft2asdw,3832
71
+ sonusai/mixture/truth_functions/target.py,sha256=nSkHFESzCEOljcYf4jQ7FmxsAWJtMCRRWFKM_DyjoLU,4926
72
+ sonusai/mkwav.py,sha256=xoqrX76gC1zE-Xb1Zfm9ZpcZ95l0qF1ZyOPmLMkFomk,4053
72
73
  sonusai/onnx_predict.py,sha256=Y1VUN0wuvloEW46uxg7X4ywaec_Xx92djCU3BP0KAx0,8699
73
74
  sonusai/queries/__init__.py,sha256=bhoeOFfu9GA5DOUuxRrIev7MYdXaGN8xdKJ6BXyNNtQ,277
74
- sonusai/queries/queries.py,sha256=u8tZCJVnw9wJlwc03ue63FFqD5CHAKe4PWLJk0z4rto,7589
75
+ sonusai/queries/queries.py,sha256=N84UcRrgDPLGJZesS2KQ9eyRzPRSyukjOlc786h5Ehs,7509
75
76
  sonusai/speech/__init__.py,sha256=vqAymCBPjMUSM4OZKHTai6BYwXsOBlf_G_vOhELVf8I,133
76
- sonusai/speech/l2arctic.py,sha256=Gon9OPAtcI0kItQ87wuyrvNqDpo_Lad3N2lOXyLSwkY,3631
77
+ sonusai/speech/l2arctic.py,sha256=VQNKuTbmlbW0PJ7bOjx9sr0VjUYxJnxfTiPJIa4OOaA,3829
77
78
  sonusai/speech/librispeech.py,sha256=ugP3NVOenSsBF1cUG4Nyl7dumGHQmE4Ugk1yYjtOyj4,3070
78
79
  sonusai/speech/mcgill.py,sha256=sgPHEZTPHlFXF8GVYFfKXMUEyBikfKha2RWOPfpNy_U,1981
79
80
  sonusai/speech/textgrid.py,sha256=WvsUeamKoYyXBNnNnZgug-xfTiq2Z6RnFc1u0swmqNw,2813
@@ -81,13 +82,13 @@ sonusai/speech/timit.py,sha256=B1DZCS5Crt9Y54drqVqurhEiOMUZGxVOW7gxzZA5ErY,4099
81
82
  sonusai/speech/types.py,sha256=4eKVPAktpkIrZ2qoVp2iT45zxTVNocQEGT6O_Zlub_w,214
82
83
  sonusai/speech/vctk.py,sha256=WInvRRRkZCW6t_NcZAJffJzgCbyetal-j2w0kKX5SDw,1527
83
84
  sonusai/speech/voxceleb.py,sha256=Uu1kB1krf8hess1yuvGbYfV_VgYhklEyoz4I7KfrVpw,2658
84
- sonusai/summarize_metric_spenh.py,sha256=2HBFfVlezIoz18DTBi5rLyUqWy4QL87OXahMaJ6NDUQ,1818
85
- sonusai/utils/__init__.py,sha256=BAo0J8ZqDHiTb6dpfBu0KrueCtsSlrtOZ9Kstst3kBk,2342
85
+ sonusai/summarize_metric_spenh.py,sha256=2w81ZgJahYvD6wCpE3DFoUFrXexLXjO44ITRVm1HJXw,1858
86
+ sonusai/utils/__init__.py,sha256=z72OlzZCHpYfYHKnHn7jznj6Zt7zB-FyO6hIgFk45As,2379
86
87
  sonusai/utils/asl_p56.py,sha256=cPUVwXawF7vLJgs4zUtoRGk7Wdbe5KKti_-v_8xIU10,3862
87
88
  sonusai/utils/asr.py,sha256=20eKkatNqGrbxFQoyeCRzqXaSH3lcA-9ZXGneCXjLvs,2791
88
89
  sonusai/utils/asr_functions/__init__.py,sha256=HKGRm_c48tcxlfwqH63m-MvhAoK_pCcw76lxmFmiP_U,63
89
- sonusai/utils/asr_functions/aaware_whisper.py,sha256=MHH238wj6arkQUMDHqHjc4DDVY2sXzu6iGi3ISswTeM,2129
90
- sonusai/utils/audio_devices.py,sha256=Z_xstSy8KeJ2xtzHJGmrIHyCiNMgpdpJd5T-19u8dGU,1421
90
+ sonusai/utils/asr_functions/aaware_whisper.py,sha256=M9Y8Pgh1oIrDOPZZPSRPDig8foxfgs3f8AsoZ8W00B0,2120
91
+ sonusai/utils/audio_devices.py,sha256=_Eiah86SZjbdp2baD2AUVF4FmhseiNuG3KJkd_LbULk,2041
91
92
  sonusai/utils/braced_glob.py,sha256=uvxo7USbxH6cWuVdNeGrz1SbZISFR1gPGbpy0EWm3m8,1645
92
93
  sonusai/utils/calculate_input_shape.py,sha256=TIa_rHW3VIvOhlv5Wa3orcWFPMT-a3EPrIFHstbrmo4,906
93
94
  sonusai/utils/compress.py,sha256=tT983XlgRf9bzutCegtHzkfKHK5LZD6a_mMFP47FGMI,605
@@ -96,20 +97,21 @@ sonusai/utils/create_timestamp.py,sha256=s7ALOX3MAyK3EOX2BVOiYTIcspsKlIM6zXJk2cb
96
97
  sonusai/utils/create_ts_name.py,sha256=3xu10hbZkV18sDqK4oR1JYvXeYE53ufzddmvGYx83Vg,405
97
98
  sonusai/utils/dataclass_from_dict.py,sha256=iUagjF7CzbDIBKTX4ktd7EXn8q1jxmiRClMH3fu2_oA,389
98
99
  sonusai/utils/db.py,sha256=lI77MJJLs4CTYxhjFUvBom2Kk2imAP34okOeO4irbDc,371
99
- sonusai/utils/docstring.py,sha256=nJEwaVlOuSEZiSH34zwNdfGNxrY0NLCTZ7VoLzc9-cU,1447
100
- sonusai/utils/energy_f.py,sha256=4gN5mNGuHgCgUbnOQ9ReYkDqNvE2pueoYBYWE-GBQPU,1457
100
+ sonusai/utils/docstring.py,sha256=aPFrVpqlbYq3kIJE_sLCjhXWEqWCBo_q_DUmEXcGONQ,1516
101
+ sonusai/utils/energy_f.py,sha256=k1S5ELsNsm3Sn0RogFEzZv1bW-X8yl2dc2KjWne_t2I,1515
101
102
  sonusai/utils/engineering_number.py,sha256=SToFf6S0Xu0NtAJ1SjsVH4wxylH7qK8S9TBkPa15opY,5510
102
103
  sonusai/utils/get_frames_per_batch.py,sha256=xnq4tV7MT74N0H6b5ZsiAezqdXucboCLQw1Np9XpZbs,134
103
104
  sonusai/utils/get_label_names.py,sha256=df4jZVaQ3WnYQqNj21iUV4aYWyQEZUNmgs93qKW-_rA,820
104
105
  sonusai/utils/grouper.py,sha256=qyZ0nj84yOrC-RZsXHC-KJvcUliGktnV8S6-P3PD6_w,203
105
- sonusai/utils/human_readable_size.py,sha256=CmLxq9y5f-OPkwTEu4Gm0Io-H6p4SRhD2ciJRuYXfWk,293
106
+ sonusai/utils/human_readable_size.py,sha256=DOCS7SAymrtTZli8AczvyCMCh44r7ZDgVBA7jSZupmA,356
107
+ sonusai/utils/load_object.py,sha256=-XMMwSNUPhtg6G6FhLwL1zvxwu-PLwj25QYUEielW2k,356
106
108
  sonusai/utils/max_text_width.py,sha256=pxiJMwb_zlkNntexgo7S6lAuF7NLLZvFdOCkxdsQJVY,315
107
109
  sonusai/utils/model_utils.py,sha256=OIJBhOjxR0wpxsd7A2r6J2AjqfdYgZzi6UEThw4S1lI,828
108
110
  sonusai/utils/numeric_conversion.py,sha256=iFPXFU8C_1mW5tmDqHq8-xP1tL8nVaSmhQRakdCqy30,328
109
- sonusai/utils/onnx_utils.py,sha256=mbat4xvLhKMSvMC2kTEc4ukc7PI_gjsG4IVGvzpcOd4,5764
110
- sonusai/utils/parallel.py,sha256=eT8PNtELUekjk8EXWgJEhaMwXuQe4T8CNSklCj4ejo8,2205
111
+ sonusai/utils/onnx_utils.py,sha256=cN8NZDrERPvbbJFSGI9YzseCezAz-Bckfel-EhkfRUU,5860
112
+ sonusai/utils/parallel.py,sha256=yvRZvZWPR5slM51i08m7sYx-Mvsb5oryCqqJXVoJ8tQ,2190
111
113
  sonusai/utils/path_info.py,sha256=QY7iQ0nYpeEDnPN9RyPh4DsgYmVYsLrrlAzKuzkqX1o,118
112
- sonusai/utils/print_mixture_details.py,sha256=Wh5M0aTy3NzxvR3P0HDlSq_S3G9L7LoQx-FnDCrHODs,2911
114
+ sonusai/utils/print_mixture_details.py,sha256=EypVeiQ8IjA0rGVfU91S3IIhzgGjkhU2oJ0DKJUBbWQ,2947
113
115
  sonusai/utils/ranges.py,sha256=-TtAR0Vg_j4kYtJOvEOYQllBZEat_KfUKsfRxr5oj-o,1235
114
116
  sonusai/utils/read_predict_data.py,sha256=PUSroxmWQGtr6_EcdSHmIFQoRGou8CKKqcggWylfTqQ,1056
115
117
  sonusai/utils/reshape.py,sha256=Ozuh3UlmAS5NCeOK7NR8KgcQacHvgq10pys0VfCnOPU,5746
@@ -119,7 +121,7 @@ sonusai/utils/stratified_shuffle_split.py,sha256=d7WLUirywSvgZWkt_5a0F8YvTnJjuXl
119
121
  sonusai/utils/write_audio.py,sha256=0lKdaX57N6H-UWdioqmXCJMjwT1eBz5B-bSGqDvloAc,838
120
122
  sonusai/utils/yes_or_no.py,sha256=0h1okjXmDNbJp7rZJFR2V-HFU1GJDm3YFTUVmYExkOU,263
121
123
  sonusai/vars.py,sha256=kBBzuvC8szmdIZEEDA7XXmD765addZKdM2aFipeGO1w,933
122
- sonusai-0.19.5.dist-info/METADATA,sha256=dSLUrr68uSSXvEz2NHkQM9vtfDqWm9yprz12fRLG6zY,2536
123
- sonusai-0.19.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
124
- sonusai-0.19.5.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
125
- sonusai-0.19.5.dist-info/RECORD,,
124
+ sonusai-0.19.8.dist-info/METADATA,sha256=KQEqF0XgSi8xV6rSYzn-bync-wXfEjzGyWXgb909gDo,2535
125
+ sonusai-0.19.8.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
126
+ sonusai-0.19.8.dist-info/entry_points.txt,sha256=zMNjEphEPO6B3cD1GNpit7z-yA9tUU5-j3W2v-UWstU,92
127
+ sonusai-0.19.8.dist-info/RECORD,,
@@ -1,37 +0,0 @@
1
- from dataclasses import dataclass
2
-
3
- from sonusai.mixture.datatypes import AudioT
4
-
5
-
6
- class TruthFunctionConfig:
7
- def __init__(self, feature: str, num_classes: int, class_indices: list[int], target_gain: float, config: dict):
8
- from pyaaware import ForwardTransform
9
- from pyaaware import InverseTransform
10
- from pyaaware import feature_forward_transform_config
11
- from pyaaware import feature_inverse_transform_config
12
- from pyaaware import feature_parameters
13
-
14
- self.feature = feature
15
- self.num_classes = num_classes
16
- self.class_indices = class_indices
17
- self.target_gain = target_gain
18
- self.config = config
19
-
20
- self.feature_parameters = feature_parameters(feature)
21
- ft_config = feature_forward_transform_config(feature)
22
- it_config = feature_inverse_transform_config(feature)
23
-
24
- self.ttype = it_config["ttype"]
25
- self.frame_size = it_config["overlap"]
26
-
27
- self.target_fft = ForwardTransform(**ft_config)
28
- self.noise_fft = ForwardTransform(**ft_config)
29
- self.mixture_fft = ForwardTransform(**ft_config)
30
- self.swin = InverseTransform(**it_config).window
31
-
32
-
33
- @dataclass
34
- class TruthFunctionData:
35
- target_audio: AudioT
36
- noise_audio: AudioT
37
- mixture_audio: AudioT