sonusai 0.18.8__tar.gz → 0.18.9__tar.gz

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 (124) hide show
  1. {sonusai-0.18.8 → sonusai-0.18.9}/PKG-INFO +1 -1
  2. {sonusai-0.18.8 → sonusai-0.18.9}/pyproject.toml +1 -1
  3. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/feature.py +11 -9
  4. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/mixdb.py +13 -1
  5. {sonusai-0.18.8 → sonusai-0.18.9}/README.rst +0 -0
  6. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/__init__.py +0 -0
  7. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/aawscd_probwrite.py +0 -0
  8. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/audiofe.py +0 -0
  9. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/calc_metric_spenh.py +0 -0
  10. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/data/__init__.py +0 -0
  11. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/data/genmixdb.yml +0 -0
  12. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/data/speech_ma01_01.wav +0 -0
  13. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/data/whitenoise.wav +0 -0
  14. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/doc/__init__.py +0 -0
  15. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/doc/doc.py +0 -0
  16. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/doc.py +0 -0
  17. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/genft.py +0 -0
  18. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/genmetrics.py +0 -0
  19. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/genmix.py +0 -0
  20. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/genmixdb.py +0 -0
  21. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/gentcst.py +0 -0
  22. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/lsdb.py +0 -0
  23. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/main.py +0 -0
  24. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/__init__.py +0 -0
  25. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_audio_stats.py +0 -0
  26. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_class_weights.py +0 -0
  27. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_optimal_thresholds.py +0 -0
  28. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_pcm.py +0 -0
  29. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_pesq.py +0 -0
  30. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_phase_distance.py +0 -0
  31. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_sa_sdr.py +0 -0
  32. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_sample_weights.py +0 -0
  33. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_segsnr_f.py +0 -0
  34. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_speech.py +0 -0
  35. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_wer.py +0 -0
  36. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/calc_wsdr.py +0 -0
  37. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/class_summary.py +0 -0
  38. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/confusion_matrix_summary.py +0 -0
  39. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/one_hot.py +0 -0
  40. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/metrics/snr_summary.py +0 -0
  41. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/__init__.py +0 -0
  42. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/audio.py +0 -0
  43. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/augmentation.py +0 -0
  44. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/class_count.py +0 -0
  45. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/config.py +0 -0
  46. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/constants.py +0 -0
  47. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/datatypes.py +0 -0
  48. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/db_datatypes.py +0 -0
  49. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/eq_rule_is_valid.py +0 -0
  50. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/generation.py +0 -0
  51. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/helpers.py +0 -0
  52. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/log_duration_and_sizes.py +0 -0
  53. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/soundfile_audio.py +0 -0
  54. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/sox_audio.py +0 -0
  55. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/sox_augmentation.py +0 -0
  56. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/spectral_mask.py +0 -0
  57. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/target_class_balancing.py +0 -0
  58. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/targets.py +0 -0
  59. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/tokenized_shell_vars.py +0 -0
  60. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/torchaudio_audio.py +0 -0
  61. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/torchaudio_augmentation.py +0 -0
  62. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth.py +0 -0
  63. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/__init__.py +0 -0
  64. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/crm.py +0 -0
  65. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/data.py +0 -0
  66. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/energy.py +0 -0
  67. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/file.py +0 -0
  68. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/phoneme.py +0 -0
  69. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/sed.py +0 -0
  70. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mixture/truth_functions/target.py +0 -0
  71. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/mkwav.py +0 -0
  72. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/onnx_predict.py +0 -0
  73. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/plot.py +0 -0
  74. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/queries/__init__.py +0 -0
  75. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/queries/queries.py +0 -0
  76. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/__init__.py +0 -0
  77. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/l2arctic.py +0 -0
  78. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/librispeech.py +0 -0
  79. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/mcgill.py +0 -0
  80. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/textgrid.py +0 -0
  81. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/timit.py +0 -0
  82. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/types.py +0 -0
  83. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/vctk.py +0 -0
  84. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/speech/voxceleb.py +0 -0
  85. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/summarize_metric_spenh.py +0 -0
  86. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/tplot.py +0 -0
  87. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/__init__.py +0 -0
  88. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/asl_p56.py +0 -0
  89. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/asr.py +0 -0
  90. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/asr_functions/__init__.py +0 -0
  91. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/asr_functions/aaware_whisper.py +0 -0
  92. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/audio_devices.py +0 -0
  93. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/braced_glob.py +0 -0
  94. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/calculate_input_shape.py +0 -0
  95. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/compress.py +0 -0
  96. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/convert_string_to_number.py +0 -0
  97. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/create_timestamp.py +0 -0
  98. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/create_ts_name.py +0 -0
  99. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/dataclass_from_dict.py +0 -0
  100. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/db.py +0 -0
  101. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/docstring.py +0 -0
  102. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/energy_f.py +0 -0
  103. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/engineering_number.py +0 -0
  104. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/get_frames_per_batch.py +0 -0
  105. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/get_label_names.py +0 -0
  106. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/grouper.py +0 -0
  107. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/human_readable_size.py +0 -0
  108. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/max_text_width.py +0 -0
  109. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/model_utils.py +0 -0
  110. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/numeric_conversion.py +0 -0
  111. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/onnx_utils.py +0 -0
  112. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/parallel.py +0 -0
  113. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/path_info.py +0 -0
  114. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/print_mixture_details.py +0 -0
  115. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/ranges.py +0 -0
  116. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/read_mixture_data.py +0 -0
  117. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/read_predict_data.py +0 -0
  118. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/reshape.py +0 -0
  119. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/seconds_to_hms.py +0 -0
  120. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/stacked_complex.py +0 -0
  121. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/stratified_shuffle_split.py +0 -0
  122. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/write_audio.py +0 -0
  123. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/utils/yes_or_no.py +0 -0
  124. {sonusai-0.18.8 → sonusai-0.18.9}/sonusai/vars.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sonusai
3
- Version: 0.18.8
3
+ Version: 0.18.9
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,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sonusai"
3
- version = "0.18.8"
3
+ version = "0.18.9"
4
4
  description = "Framework for building deep neural network models for sound, speech, and voice AI"
5
5
  authors = ["Chris Eddington <chris@aaware.com>", "Jason Calderwood <jason@aaware.com>"]
6
6
  maintainers = ["Chris Eddington <chris@aaware.com>", "Jason Calderwood <jason@aaware.com>"]
@@ -27,9 +27,6 @@ def get_feature_from_audio(audio: AudioT,
27
27
  num_classes=num_classes,
28
28
  truth_mutex=truth_mutex)
29
29
 
30
- feature_step_samples = fg.ftransform_R * fg.decimation * fg.step
31
- audio = pad_audio_to_frame(audio, feature_step_samples)
32
-
33
30
  audio_f = forward_transform(audio=audio,
34
31
  config=TransformConfig(N=fg.ftransform_N,
35
32
  R=fg.ftransform_R,
@@ -37,10 +34,8 @@ def get_feature_from_audio(audio: AudioT,
37
34
  bin_end=fg.bin_end,
38
35
  ttype=fg.ftransform_ttype))
39
36
 
40
- samples = len(audio)
41
- transform_frames = samples // fg.ftransform_R
42
- feature_frames = samples // feature_step_samples
43
-
37
+ transform_frames = audio_f.shape[0]
38
+ feature_frames = transform_frames // (fg.decimation * fg.step)
44
39
  feature = np.empty((feature_frames, fg.stride, fg.feature_parameters), dtype=np.float32)
45
40
 
46
41
  feature_frame = 0
@@ -60,7 +55,7 @@ def get_audio_from_feature(feature: Feature,
60
55
  truth_mutex: Optional[bool] = False) -> AudioT:
61
56
  """Apply inverse transform to feature data to generate audio data
62
57
 
63
- :param feature: Feature data [frames, strides, feature_parameters]
58
+ :param feature: Feature data [frames, stride=1, feature_parameters]
64
59
  :param feature_mode: Feature mode
65
60
  :param num_classes: Number of classes
66
61
  :param truth_mutex: Whether to calculate 'other' label
@@ -70,16 +65,23 @@ def get_audio_from_feature(feature: Feature,
70
65
 
71
66
  from pyaaware import FeatureGenerator
72
67
 
68
+ from sonusai import SonusAIError
73
69
  from .datatypes import TransformConfig
74
70
  from .helpers import inverse_transform
75
71
  from sonusai.utils.stacked_complex import unstack_complex
76
72
  from sonusai.utils.compress import power_uncompress
77
73
 
74
+ if feature.ndim != 3:
75
+ raise SonusAIError('feature must have 3 dimensions: [frames, stride=1, feature_parameters]')
76
+
77
+ if feature.shape[1] != 1:
78
+ raise SonusAIError('Strided feature data is not supported for audio extraction; stride must be 1.')
79
+
78
80
  fg = FeatureGenerator(feature_mode=feature_mode,
79
81
  num_classes=num_classes,
80
82
  truth_mutex=truth_mutex)
81
83
 
82
- feature_complex = unstack_complex(feature)
84
+ feature_complex = unstack_complex(feature.squeeze())
83
85
  if feature_mode[0:1] == 'h':
84
86
  feature_complex = power_uncompress(feature_complex)
85
87
  return np.squeeze(inverse_transform(transform=feature_complex,
@@ -218,8 +218,10 @@ class MixtureDatabase:
218
218
  f'Target[0] ASR text using {name} ASR as defined in mixdb asr_configs parameter'))
219
219
  metrics.append(MetricDoc('Mixture Metrics', f'mxasr.{name}',
220
220
  f'ASR text using {name} ASR as defined in mixdb asr_configs parameter'))
221
+ metrics.append(MetricDoc('Target Metrics', f'basewer.{name}',
222
+ f'Word error rate of tasr.{name} vs. speech text metadata for the target'))
221
223
  metrics.append(MetricDoc('Mixture Metrics', f'mxwer.{name}',
222
- f'Word error rate using {name} ASR as defined in mixdb asr_configs parameter'))
224
+ f'Word error rate of mxasr.{name} vs. tasr.{name}'))
223
225
 
224
226
  return metrics
225
227
 
@@ -1405,6 +1407,16 @@ class MixtureDatabase:
1405
1407
  # TODO: should this be NaN like above?
1406
1408
  return float(0)
1407
1409
 
1410
+ if m.startswith('basewer'):
1411
+ asr_name = get_asr_name(m)
1412
+
1413
+ text = self.mixture_speech_metadata(m_id, 'text')[0]
1414
+ if text is not None:
1415
+ return calc_wer(target_asr(asr_name), text).wer * 100
1416
+
1417
+ # TODO: should this be NaN like above?
1418
+ return float(0)
1419
+
1408
1420
  if m.startswith('mxasr'):
1409
1421
  return mixture_asr(get_asr_name(m))
1410
1422
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes