neverlib 0.2.7__tar.gz → 0.2.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 (531) hide show
  1. {neverlib-0.2.7/neverlib.egg-info → neverlib-0.2.9}/PKG-INFO +15 -1
  2. {neverlib-0.2.7 → neverlib-0.2.9}/README.md +14 -0
  3. neverlib-0.2.9/neverlib/QA/ImpactNoiseRejection.py +119 -0
  4. neverlib-0.2.9/neverlib/QA/gen_init.py +218 -0
  5. neverlib-0.2.9/neverlib/QA/impact_noise_rejection.png +0 -0
  6. neverlib-0.2.9/neverlib/QA/out.pcm +0 -0
  7. neverlib-0.2.9/neverlib/QA/out.wav +0 -0
  8. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/__init__.py +19 -0
  9. neverlib-0.2.9/neverlib/audio_aug/README.md +3 -0
  10. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/TFDrop.py +0 -0
  11. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/TFMask.py +0 -0
  12. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/__init__.py +2 -4
  13. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/quant_aug.py +0 -0
  14. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/core.py +8 -5
  15. neverlib-0.2.9/neverlib/metrics/README.md +35 -0
  16. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/__init__.py +1 -1
  17. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/PESQ +0 -0
  18. neverlib-0.2.9/neverlib/signal_gen/babble_noise_generate.py +113 -0
  19. neverlib-0.2.9/neverlib/tests/__init__.py +16 -0
  20. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_imports.py +2 -0
  21. neverlib-0.2.9/neverlib/utils/README.md +29 -0
  22. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/__init__.py +7 -6
  23. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/audio_split.py +21 -20
  24. neverlib-0.2.9/neverlib/utils/checkGPU.py +95 -0
  25. neverlib-0.2.9/neverlib/utils/floder.py +115 -0
  26. neverlib-0.2.9/neverlib/utils/pcm.py +42 -0
  27. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/utils.py +3 -77
  28. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/PreProcess.py +66 -66
  29. {neverlib-0.2.7 → neverlib-0.2.9/neverlib.egg-info}/PKG-INFO +15 -1
  30. neverlib-0.2.9/neverlib.egg-info/SOURCES.txt +124 -0
  31. {neverlib-0.2.7 → neverlib-0.2.9}/pyproject.toml +1 -1
  32. neverlib-0.2.7/neverlib/.claude/settings.local.json +0 -9
  33. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162530.py +0 -0
  34. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162540.py +0 -2
  35. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162541.py +0 -7
  36. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162606.py +0 -7
  37. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162637.py +0 -8
  38. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162645.py +0 -8
  39. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162723.py +0 -9
  40. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162739.py +0 -9
  41. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011311.py +0 -0
  42. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011331.py +0 -75
  43. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011342.py +0 -57
  44. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011352.py +0 -57
  45. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011403.py +0 -57
  46. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011413.py +0 -57
  47. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011435.py +0 -55
  48. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161751.py +0 -55
  49. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161754.py +0 -55
  50. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161833.py +0 -54
  51. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162017.py +0 -56
  52. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162021.py +0 -57
  53. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162028.py +0 -57
  54. neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162033.py +0 -55
  55. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162738.py +0 -9
  56. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162819.py +0 -9
  57. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162830.py +0 -9
  58. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162846.py +0 -9
  59. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162851.py +0 -9
  60. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162903.py +0 -10
  61. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162921.py +0 -10
  62. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162926.py +0 -10
  63. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827163030.py +0 -10
  64. neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827163032.py +0 -10
  65. neverlib-0.2.7/neverlib/.history/Docs/vad/1_20250810032405.py +0 -0
  66. neverlib-0.2.7/neverlib/.history/Docs/vad/1_20250810032417.py +0 -39
  67. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234112.md +0 -0
  68. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234140.py +0 -9
  69. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234141.md +0 -9
  70. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234159.py +0 -12
  71. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234200.py +0 -17
  72. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234236.py +0 -17
  73. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234340.py +0 -14
  74. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234522.py +0 -18
  75. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234601.py +0 -20
  76. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234615.py +0 -22
  77. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234715.py +0 -28
  78. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234720.py +0 -27
  79. neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234903.py +0 -27
  80. neverlib-0.2.7/neverlib/.history/__init___20250805234212.py +0 -41
  81. neverlib-0.2.7/neverlib/.history/__init___20250904102635.py +0 -39
  82. neverlib-0.2.7/neverlib/.history/__init___20250904102836.py +0 -34
  83. neverlib-0.2.7/neverlib/.history/__init___20250904102838.py +0 -39
  84. neverlib-0.2.7/neverlib/.history/__init___20250904102851.py +0 -33
  85. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010451.py +0 -125
  86. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010750.py +0 -138
  87. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010759.py +0 -140
  88. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010803.py +0 -140
  89. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010809.py +0 -140
  90. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806011108.py +0 -140
  91. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826155913.py +0 -158
  92. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164159.py +0 -159
  93. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164217.py +0 -160
  94. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164408.py +0 -161
  95. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164423.py +0 -161
  96. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164529.py +0 -161
  97. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164824.py +0 -161
  98. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164932.py +0 -162
  99. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164947.py +0 -162
  100. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165403.py +0 -162
  101. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165421.py +0 -162
  102. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165509.py +0 -163
  103. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165702.py +0 -163
  104. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165732.py +0 -165
  105. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170041.py +0 -163
  106. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170105.py +0 -164
  107. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170154.py +0 -164
  108. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170220.py +0 -165
  109. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170221.py +0 -165
  110. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170228.py +0 -165
  111. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170231.py +0 -165
  112. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826212001.py +0 -165
  113. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220038.py +0 -165
  114. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220133.py +0 -165
  115. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220148.py +0 -165
  116. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220154.py +0 -165
  117. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220156.py +0 -165
  118. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220314.py +0 -165
  119. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220343.py +0 -184
  120. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220345.py +0 -184
  121. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220349.py +0 -184
  122. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220429.py +0 -184
  123. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220447.py +0 -184
  124. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220601.py +0 -186
  125. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220638.py +0 -186
  126. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220641.py +0 -186
  127. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220647.py +0 -186
  128. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220653.py +0 -186
  129. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220655.py +0 -186
  130. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220731.py +0 -185
  131. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220739.py +0 -185
  132. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220747.py +0 -185
  133. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220801.py +0 -186
  134. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220822.py +0 -186
  135. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220901.py +0 -186
  136. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221107.py +0 -187
  137. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221310.py +0 -188
  138. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221353.py +0 -191
  139. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221821.py +0 -191
  140. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221838.py +0 -191
  141. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221906.py +0 -191
  142. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221930.py +0 -191
  143. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221939.py +0 -191
  144. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221955.py +0 -191
  145. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222008.py +0 -197
  146. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222017.py +0 -200
  147. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222046.py +0 -203
  148. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222105.py +0 -203
  149. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222206.py +0 -203
  150. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222302.py +0 -203
  151. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222336.py +0 -203
  152. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222455.py +0 -204
  153. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222526.py +0 -204
  154. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222541.py +0 -204
  155. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222624.py +0 -202
  156. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222714.py +0 -205
  157. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222820.py +0 -205
  158. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222827.py +0 -205
  159. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222927.py +0 -232
  160. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223009.py +0 -232
  161. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223054.py +0 -232
  162. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223225.py +0 -233
  163. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223344.py +0 -236
  164. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223356.py +0 -236
  165. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223955.py +0 -242
  166. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224210.py +0 -240
  167. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224250.py +0 -242
  168. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224323.py +0 -280
  169. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224452.py +0 -263
  170. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224455.py +0 -263
  171. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224502.py +0 -263
  172. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224528.py +0 -263
  173. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224658.py +0 -263
  174. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224833.py +0 -264
  175. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225013.py +0 -269
  176. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225050.py +0 -269
  177. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225241.py +0 -268
  178. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225315.py +0 -266
  179. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225404.py +0 -266
  180. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225502.py +0 -265
  181. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225950.py +0 -267
  182. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225959.py +0 -268
  183. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230222.py +0 -271
  184. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230248.py +0 -270
  185. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230638.py +0 -266
  186. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230755.py +0 -266
  187. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230941.py +0 -265
  188. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231054.py +0 -266
  189. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231117.py +0 -266
  190. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231219.py +0 -266
  191. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826232330.py +0 -266
  192. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826232352.py +0 -266
  193. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152748.py +0 -268
  194. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152806.py +0 -268
  195. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152808.py +0 -268
  196. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152917.py +0 -283
  197. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152929.py +0 -281
  198. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153100.py +0 -286
  199. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153102.py +0 -286
  200. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153301.py +0 -295
  201. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153331.py +0 -298
  202. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153525.py +0 -303
  203. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153533.py +0 -304
  204. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153541.py +0 -321
  205. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153805.py +0 -322
  206. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153832.py +0 -323
  207. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153836.py +0 -324
  208. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153846.py +0 -324
  209. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153859.py +0 -325
  210. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154453.py +0 -337
  211. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154513.py +0 -355
  212. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154538.py +0 -356
  213. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154541.py +0 -357
  214. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154612.py +0 -357
  215. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154657.py +0 -360
  216. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154708.py +0 -360
  217. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154728.py +0 -366
  218. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154755.py +0 -367
  219. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154800.py +0 -367
  220. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154917.py +0 -368
  221. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154928.py +0 -369
  222. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154932.py +0 -370
  223. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154947.py +0 -372
  224. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155015.py +0 -375
  225. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155106.py +0 -375
  226. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155114.py +0 -393
  227. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155207.py +0 -415
  228. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155300.py +0 -415
  229. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155321.py +0 -471
  230. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827164703.py +0 -471
  231. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827164749.py +0 -471
  232. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165252.py +0 -472
  233. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165334.py +0 -472
  234. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165404.py +0 -473
  235. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165610.py +0 -473
  236. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165805.py +0 -473
  237. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170056.py +0 -473
  238. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170106.py +0 -472
  239. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170143.py +0 -472
  240. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170216.py +0 -472
  241. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170218.py +0 -472
  242. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170314.py +0 -472
  243. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827171500.py +0 -471
  244. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172347.py +0 -471
  245. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172558.py +0 -470
  246. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172559.py +0 -470
  247. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172801.py +0 -470
  248. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182522.py +0 -470
  249. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182526.py +0 -470
  250. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182626.py +0 -470
  251. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182715.py +0 -470
  252. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250904185444.py +0 -470
  253. neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250904185538.py +0 -445
  254. neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250805234204.py +0 -87
  255. neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204125.py +0 -14
  256. neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204139.py +0 -14
  257. neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204159.py +0 -14
  258. neverlib-0.2.7/neverlib/.history/data_analyze/__init___20250806204158.py +0 -14
  259. neverlib-0.2.7/neverlib/.history/data_analyze/__init___20250827163248.py +0 -14
  260. neverlib-0.2.7/neverlib/.history/filter/__init___20250820103351.py +0 -70
  261. neverlib-0.2.7/neverlib/.history/filter/__init___20250821102348.py +0 -70
  262. neverlib-0.2.7/neverlib/.history/filter/__init___20250821102405.py +0 -14
  263. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250819213121.py +0 -36
  264. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102241.py +0 -36
  265. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102259.py +0 -36
  266. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102307.py +0 -36
  267. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102310.py +0 -36
  268. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102318.py +0 -36
  269. neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102507.py +0 -36
  270. neverlib-0.2.7/neverlib/.history/filter/auto_eq/de_eq_20250820103848.py +0 -361
  271. neverlib-0.2.7/neverlib/.history/filter/auto_eq/de_eq_20250821102422.py +0 -360
  272. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250805234206.py +0 -75
  273. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140732.py +0 -75
  274. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140745.py +0 -75
  275. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140816.py +0 -75
  276. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140938.py +0 -77
  277. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141003.py +0 -77
  278. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141006.py +0 -77
  279. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141019.py +0 -77
  280. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141049.py +0 -77
  281. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141211.py +0 -77
  282. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141227.py +0 -77
  283. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141311.py +0 -78
  284. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141340.py +0 -78
  285. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141712.py +0 -78
  286. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141733.py +0 -78
  287. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141755.py +0 -78
  288. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102434.py +0 -76
  289. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102500.py +0 -76
  290. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102502.py +0 -76
  291. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821143140.py +0 -76
  292. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821153208.py +0 -76
  293. neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821153214.py +0 -76
  294. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820102957.py +0 -380
  295. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113054.py +0 -380
  296. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113150.py +0 -380
  297. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113520.py +0 -385
  298. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113525.py +0 -385
  299. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250821102212.py +0 -385
  300. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110521.py +0 -385
  301. neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110652.py +0 -385
  302. neverlib-0.2.7/neverlib/.history/filter/common_20250806002134.py +0 -37
  303. neverlib-0.2.7/neverlib/.history/filter/common_20250821120448.py +0 -49
  304. neverlib-0.2.7/neverlib/.history/filter/common_20250821120453.py +0 -49
  305. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250806001612.py +0 -160
  306. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815180659.py +0 -160
  307. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815180701.py +0 -158
  308. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181321.py +0 -154
  309. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181327.py +0 -154
  310. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181331.py +0 -154
  311. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181620.py +0 -154
  312. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181631.py +0 -154
  313. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181742.py +0 -154
  314. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181824.py +0 -153
  315. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181834.py +0 -153
  316. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181922.py +0 -153
  317. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182011.py +0 -147
  318. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182036.py +0 -144
  319. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182936.py +0 -143
  320. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182942.py +0 -143
  321. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183032.py +0 -137
  322. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183101.py +0 -144
  323. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183121.py +0 -144
  324. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183123.py +0 -143
  325. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183214.py +0 -143
  326. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183240.py +0 -143
  327. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183248.py +0 -144
  328. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183407.py +0 -142
  329. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183409.py +0 -142
  330. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183431.py +0 -142
  331. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183507.py +0 -140
  332. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183513.py +0 -139
  333. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183618.py +0 -139
  334. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183709.py +0 -140
  335. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183756.py +0 -137
  336. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183815.py +0 -128
  337. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183827.py +0 -129
  338. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183913.py +0 -117
  339. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183914.py +0 -117
  340. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184003.py +0 -118
  341. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184040.py +0 -118
  342. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184049.py +0 -118
  343. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184104.py +0 -117
  344. neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184200.py +0 -117
  345. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816015944.py +0 -128
  346. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020142.py +0 -128
  347. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020156.py +0 -128
  348. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020554.py +0 -130
  349. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020600.py +0 -125
  350. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020631.py +0 -120
  351. neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020746.py +0 -118
  352. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816013111.py +0 -0
  353. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816013129.py +0 -121
  354. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015430.py +0 -103
  355. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015535.py +0 -96
  356. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015542.py +0 -96
  357. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015636.py +0 -97
  358. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015658.py +0 -104
  359. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015703.py +0 -100
  360. neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015945.py +0 -128
  361. neverlib-0.2.7/neverlib/.history/metrics/snr_20250806010538.py +0 -177
  362. neverlib-0.2.7/neverlib/.history/metrics/snr_20250806211634.py +0 -184
  363. neverlib-0.2.7/neverlib/.history/metrics/snr_20250827224201.py +0 -182
  364. neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234019.py +0 -186
  365. neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234028.py +0 -186
  366. neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234030.py +0 -186
  367. neverlib-0.2.7/neverlib/.history/metrics/spec_20250805234209.py +0 -45
  368. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135530.py +0 -11
  369. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135654.py +0 -16
  370. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135736.py +0 -68
  371. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135904.py +0 -75
  372. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135921.py +0 -82
  373. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140111.py +0 -82
  374. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140543.py +0 -136
  375. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140559.py +0 -172
  376. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140602.py +0 -172
  377. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140608.py +0 -172
  378. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140654.py +0 -148
  379. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140705.py +0 -144
  380. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140755.py +0 -138
  381. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140823.py +0 -170
  382. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140832.py +0 -170
  383. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140833.py +0 -170
  384. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140922.py +0 -147
  385. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141148.py +0 -107
  386. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141219.py +0 -123
  387. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141732.py +0 -178
  388. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141740.py +0 -178
  389. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142030.py +0 -178
  390. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142107.py +0 -135
  391. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142126.py +0 -135
  392. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142410.py +0 -135
  393. neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142415.py +0 -136
  394. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135156.py +0 -0
  395. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135226.py +0 -5
  396. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135227.py +0 -10
  397. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135306.py +0 -15
  398. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135442.py +0 -31
  399. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135448.py +0 -31
  400. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135520.py +0 -29
  401. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135537.py +0 -63
  402. neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135653.py +0 -65
  403. neverlib-0.2.7/neverlib/.history/utils/audio_split_20250805234209.py +0 -268
  404. neverlib-0.2.7/neverlib/.history/utils/audio_split_20250904185309.py +0 -268
  405. neverlib-0.2.7/neverlib/.history/utils/utils_20250813165516.py +0 -330
  406. neverlib-0.2.7/neverlib/.history/utils/utils_20250904181341.py +0 -328
  407. neverlib-0.2.7/neverlib/.history/utils/utils_20250904185546.py +0 -352
  408. neverlib-0.2.7/neverlib/.history/utils/utils_20250904185548.py +0 -353
  409. neverlib-0.2.7/neverlib/.history/utils/utils_20250904185603.py +0 -353
  410. neverlib-0.2.7/neverlib/.history/utils/utils_20250904185636.py +0 -353
  411. neverlib-0.2.7/neverlib/.history/utils/utils_20250904185658.py +0 -358
  412. neverlib-0.2.7/neverlib/.history/utils/utils_20250904190053.py +0 -359
  413. neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250805234211.py +0 -63
  414. neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250809232455.py +0 -63
  415. neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250816020725.py +0 -66
  416. neverlib-0.2.7/neverlib/.history/vad/VAD_Silero_20250805234211.py +0 -50
  417. neverlib-0.2.7/neverlib/.history/vad/VAD_Silero_20250809232456.py +0 -50
  418. neverlib-0.2.7/neverlib/.history/vad/VAD_WebRTC_20250805234211.py +0 -61
  419. neverlib-0.2.7/neverlib/.history/vad/VAD_WebRTC_20250809232456.py +0 -61
  420. neverlib-0.2.7/neverlib/.history/vad/VAD_funasr_20250805234211.py +0 -54
  421. neverlib-0.2.7/neverlib/.history/vad/VAD_funasr_20250809232456.py +0 -54
  422. neverlib-0.2.7/neverlib/.history/vad/VAD_vadlib_20250805234211.py +0 -70
  423. neverlib-0.2.7/neverlib/.history/vad/VAD_vadlib_20250809232455.py +0 -70
  424. neverlib-0.2.7/neverlib/.history/vad/VAD_whisper_20250805234211.py +0 -55
  425. neverlib-0.2.7/neverlib/.history/vad/VAD_whisper_20250809232456.py +0 -55
  426. neverlib-0.2.7/neverlib/.specstory/.what-is-this.md +0 -69
  427. neverlib-0.2.7/neverlib/.specstory/history/2025-08-05_17-06Z-/350/277/231/344/270/200/346/255/245/347/232/204/347/233/256/347/232/204/346/230/257/344/273/200/344/271/210.md +0 -424
  428. neverlib-0.2.7/neverlib/.specstory/history/2025-08-22_02-10Z-/345/256/214/345/226/204/345/207/275/346/225/260/347/232/204/345/212/237/350/203/275/345/222/214/345/217/230/351/207/217/345/220/215/345/273/272/350/256/256.md +0 -247
  429. neverlib-0.2.7/neverlib/.specstory/history/2025-08-26_11-54Z-oserror-missing-shared-object-file.md +0 -87
  430. neverlib-0.2.7/neverlib/.specstory/history/2025-08-27_08-07Z-/345/256/214/345/226/204/346/265/213/350/257/225/346/226/207/346/241/243/347/232/204/350/256/250/350/256/272.md +0 -296
  431. neverlib-0.2.7/neverlib/.specstory/history/2025-08-27_08-29Z-delete-python-file-command.md +0 -211
  432. neverlib-0.2.7/neverlib/.specstory/history/2025-08-27_09-05Z-/345/234/250jupyter/344/270/255/346/222/255/346/224/276/351/237/263/351/242/221/347/232/204/344/273/243/347/240/201/344/277/256/346/224/271.md +0 -357
  433. neverlib-0.2.7/neverlib/QA/gen_init.py +0 -117
  434. neverlib-0.2.7/neverlib/tests/__init__.py +0 -1
  435. neverlib-0.2.7/neverlib/utils/checkGPU.py +0 -122
  436. neverlib-0.2.7/neverlib.egg-info/SOURCES.txt +0 -515
  437. {neverlib-0.2.7 → neverlib-0.2.9}/CLAUDE.md +0 -0
  438. {neverlib-0.2.7 → neverlib-0.2.9}/LICENSE +0 -0
  439. {neverlib-0.2.7 → neverlib-0.2.9}/MANIFEST.in +0 -0
  440. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug/test_volume.ipynb +0 -0
  441. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_snr.py +0 -0
  442. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_volume.ipynb +0 -0
  443. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_volume.py +0 -0
  444. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/biquad.ipynb +0 -0
  445. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/filter_family.ipynb +0 -0
  446. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/highpass.ipynb +0 -0
  447. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/scipy_filter_family.ipynb +0 -0
  448. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_Energy.ipynb +0 -0
  449. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_Silero.ipynb +0 -0
  450. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_WebRTC.ipynb +0 -0
  451. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_funasr.ipynb +0 -0
  452. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_rvADfast.ipynb +0 -0
  453. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_statistics.ipynb +0 -0
  454. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_tenVAD.ipynb +0 -0
  455. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_vadlib.ipynb +0 -0
  456. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_whisper.ipynb +0 -0
  457. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/QA/get_fun.py +0 -0
  458. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/QA/html2markdown.py +0 -0
  459. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/HarmonicDistortion.py +0 -0
  460. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/audio_aug.py +0 -0
  461. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/clip_aug.py +0 -0
  462. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/coder_aug.py +0 -0
  463. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/coder_aug2.py +0 -0
  464. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/loss_packet_aug.py +0 -0
  465. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/000_short_enhance.wav +0 -0
  466. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/3956_speech.wav +0 -0
  467. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/3956_sweep.wav +0 -0
  468. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/vad_example.wav +0 -0
  469. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white.wav +0 -0
  470. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white_EQ.wav +0 -0
  471. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white_matched.wav +0 -0
  472. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/README.md +0 -0
  473. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/__init__.py +0 -0
  474. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/dataset_analyzer.py +0 -0
  475. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/quality_metrics.py +0 -0
  476. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/rms_distrubution.py +0 -0
  477. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/spectral_analysis.py +0 -0
  478. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/statistics.py +0 -0
  479. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/temporal_features.py +0 -0
  480. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/visualization.py +0 -0
  481. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/README.md +0 -0
  482. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/__init__.py +0 -0
  483. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/README.md +0 -0
  484. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/__init__.py +0 -0
  485. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/de_eq.py +0 -0
  486. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/freq_eq.py +0 -0
  487. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/ga_eq_advanced.py +0 -0
  488. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/ga_eq_basic.py +0 -0
  489. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/biquad.py +0 -0
  490. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/common.py +0 -0
  491. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/bak_ovr.onnx +0 -0
  492. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/model_v8.onnx +0 -0
  493. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/sig.onnx +0 -0
  494. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/sig_bak_ovr.onnx +0 -0
  495. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/dnsmos.py +0 -0
  496. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/lpc_lsp.py +0 -0
  497. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pDNSMOS/sig_bak_ovr.onnx +0 -0
  498. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/dsp.c +0 -0
  499. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/dsp.h +0 -0
  500. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesq.h +0 -0
  501. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqdsp.c +0 -0
  502. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqio.c +0 -0
  503. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqmain.c +0 -0
  504. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqmod.c +0 -0
  505. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqpar.h +0 -0
  506. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/snr.py +0 -0
  507. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/spec.py +0 -0
  508. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/test_pesq.py +0 -0
  509. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/time.py +0 -0
  510. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_preprocess.py +0 -0
  511. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_vad.py +0 -0
  512. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/lazy_expose.py +0 -0
  513. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/lazy_module.py +0 -0
  514. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/message.py +0 -0
  515. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/README.md +0 -0
  516. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_Energy.py +0 -0
  517. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_Silero.py +0 -0
  518. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_WebRTC.py +0 -0
  519. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_funasr.py +0 -0
  520. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_statistics.py +0 -0
  521. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_vadlib.py +0 -0
  522. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_whisper.py +0 -0
  523. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/__init__.py +0 -0
  524. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/class_get_speech.py +0 -0
  525. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/class_vad.py +0 -0
  526. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/img.png +0 -0
  527. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/utils.py +0 -0
  528. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/dependency_links.txt +0 -0
  529. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/requires.txt +0 -0
  530. {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/top_level.txt +0 -0
  531. {neverlib-0.2.7 → neverlib-0.2.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neverlib
3
- Version: 0.2.7
3
+ Version: 0.2.9
4
4
  Summary: A successful sign for python setup
5
5
  Author-email: "Never.Ling" <1786088386@qq.com>
6
6
  License: MIT
@@ -47,6 +47,14 @@ Requires-Dist: neverlib[vad]; extra == "all"
47
47
  Requires-Dist: neverlib[gpu]; extra == "all"
48
48
  Dynamic: license-file
49
49
 
50
+ <!--
51
+ * @Author: never.ling never.ling@anker-in.com
52
+ * @Date: 2025-11-04 17:10:57
53
+ * @LastEditors: never.ling never.ling@anker-in.com
54
+ * @LastEditTime: 2025-12-15 11:47:03
55
+ * @FilePath: /neverlib/README.md
56
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
57
+ -->
50
58
  # NeverLib
51
59
 
52
60
  一个用于音频处理和VAD(语音活动检测)的Python工具库。
@@ -113,6 +121,12 @@ from neverlib import utils
113
121
  from neverlib.message import seed_QQEmail
114
122
  ```
115
123
 
124
+ ## TODO List
125
+ - [ ] 客观指标添加 [DNSMOSPro ](https://github.com/fcumlin/DNSMOSPro)
126
+ - [ ] github界面的自我介绍
127
+ - [ ] https://github.com/nathanhaigh/parallel-rsync
128
+
129
+
116
130
  ## 许可证
117
131
 
118
132
  本项目采用MIT许可证。详情请参阅LICENSE文件。
@@ -1,3 +1,11 @@
1
+ <!--
2
+ * @Author: never.ling never.ling@anker-in.com
3
+ * @Date: 2025-11-04 17:10:57
4
+ * @LastEditors: never.ling never.ling@anker-in.com
5
+ * @LastEditTime: 2025-12-15 11:47:03
6
+ * @FilePath: /neverlib/README.md
7
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
+ -->
1
9
  # NeverLib
2
10
 
3
11
  一个用于音频处理和VAD(语音活动检测)的Python工具库。
@@ -64,6 +72,12 @@ from neverlib import utils
64
72
  from neverlib.message import seed_QQEmail
65
73
  ```
66
74
 
75
+ ## TODO List
76
+ - [ ] 客观指标添加 [DNSMOSPro ](https://github.com/fcumlin/DNSMOSPro)
77
+ - [ ] github界面的自我介绍
78
+ - [ ] https://github.com/nathanhaigh/parallel-rsync
79
+
80
+
67
81
  ## 许可证
68
82
 
69
83
  本项目采用MIT许可证。详情请参阅LICENSE文件。
@@ -0,0 +1,119 @@
1
+ """VPU 冲击声检测 + 可视化(轻量版)。"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+ from typing import List, Tuple
7
+
8
+ import matplotlib.pyplot as plt
9
+ import numpy as np
10
+ import soundfile as sf
11
+
12
+ # 基本参数,可按需修改
13
+ AUDIO_PATH = Path(__file__).resolve().parent / "out.wav"
14
+ CHANNEL_INDEX = 4
15
+ DC_WINDOW_MS = 40.0
16
+ SHORT_MS = 6.0
17
+ LONG_MS = 60.0
18
+ RATIO_THRESHOLD = 3.0
19
+ MIN_DURATION_MS = 8.0
20
+ MIN_GAP_MS = 35.0
21
+
22
+
23
+ def moving_average(x: np.ndarray, window: int) -> np.ndarray:
24
+ if window <= 1:
25
+ return x
26
+ kernel = np.ones(window, dtype=np.float64) / window
27
+ return np.convolve(x, kernel, mode="same")
28
+
29
+
30
+ def preprocess(signal: np.ndarray, sr: int) -> np.ndarray:
31
+ dc_window = max(int(sr * DC_WINDOW_MS / 1000.0), 1)
32
+ return signal - moving_average(signal, dc_window)
33
+
34
+
35
+ def ratio_score(signal: np.ndarray, sr: int) -> np.ndarray:
36
+ short = max(int(sr * SHORT_MS / 1000.0), 1)
37
+ long = max(int(sr * LONG_MS / 1000.0), 1)
38
+ short_env = moving_average(np.abs(signal), short)
39
+ long_env = moving_average(np.abs(signal), long)
40
+ return short_env / np.maximum(long_env, 1e-6)
41
+
42
+
43
+ def detect_events(mask: np.ndarray, sr: int) -> List[Tuple[float, float]]:
44
+ min_samples = max(int(sr * MIN_DURATION_MS / 1000.0), 1)
45
+ gap_samples = max(int(sr * MIN_GAP_MS / 1000.0), 1)
46
+
47
+ events: List[Tuple[int, int]] = []
48
+ start = -1
49
+ for idx, active in enumerate(mask):
50
+ if active and start < 0:
51
+ start = idx
52
+ elif not active and start >= 0:
53
+ if idx - start >= min_samples:
54
+ events = _append_or_merge(events, start, idx, gap_samples)
55
+ start = -1
56
+
57
+ if start >= 0 and len(mask) - start >= min_samples:
58
+ events = _append_or_merge(events, start, len(mask), gap_samples)
59
+
60
+ return [(s / sr, e / sr) for s, e in events]
61
+
62
+
63
+ def _append_or_merge(events: List[Tuple[int, int]], start: int, end: int, gap: int) -> List[Tuple[int, int]]:
64
+ if events and start - events[-1][1] <= gap:
65
+ previous_start, _ = events[-1]
66
+ events[-1] = (previous_start, end)
67
+ else:
68
+ events.append((start, end))
69
+ return events
70
+
71
+
72
+ def plot_detection(time: np.ndarray, signal: np.ndarray, score: np.ndarray, events: List[Tuple[float, float]]) -> None:
73
+ fig, axes = plt.subplots(2, 1, figsize=(12, 6), sharex=True)
74
+
75
+ axes[0].plot(time, signal, color="steelblue", linewidth=0.8)
76
+ axes[0].set_ylabel("Amplitude")
77
+ axes[0].set_title("VPU 信号与冲击事件")
78
+
79
+ axes[1].plot(time, score, color="crimson", linewidth=0.8)
80
+ axes[1].axhline(RATIO_THRESHOLD, color="gray", linestyle="--", linewidth=0.8, label="阈值")
81
+ axes[1].set_ylabel("短/长包络比")
82
+ axes[1].set_xlabel("时间 (s)")
83
+ axes[1].legend(loc="upper right")
84
+
85
+ for axis in axes:
86
+ for start, end in events:
87
+ axis.axvspan(start, end, color="lime", alpha=0.25)
88
+ axis.grid(alpha=0.2)
89
+
90
+ fig.tight_layout()
91
+ plt.savefig('./impact_noise_rejection.png')
92
+
93
+
94
+ def main() -> None:
95
+ if not AUDIO_PATH.exists():
96
+ raise FileNotFoundError(f"找不到音频文件: {AUDIO_PATH}")
97
+
98
+ data, sr = sf.read(AUDIO_PATH, always_2d=True)
99
+ if CHANNEL_INDEX >= data.shape[1]:
100
+ raise ValueError(f"音频仅有 {data.shape[1]} 通道,无法访问 VPU 通道 {CHANNEL_INDEX}")
101
+
102
+ signal = data[:, CHANNEL_INDEX].astype(np.float64)
103
+ signal = preprocess(signal, sr)
104
+ score = ratio_score(signal, sr)
105
+ events = detect_events(score > RATIO_THRESHOLD, sr)
106
+
107
+ if events:
108
+ print("检测到的冲击事件:")
109
+ for start, end in events:
110
+ print(f" 起始 {start:.3f}s 结束 {end:.3f}s 持续 {(end-start)*1000:.1f}ms")
111
+ else:
112
+ print("未检测到明显的冲击事件。")
113
+
114
+ time_axis = np.arange(len(signal)) / sr
115
+ plot_detection(time_axis, signal, score, events)
116
+
117
+
118
+ if __name__ == "__main__":
119
+ main()
@@ -0,0 +1,218 @@
1
+ # 自动生成指定包目录下的 __init__.py(懒加载格式:lazy_loader.attach)
2
+ # 并且支持IDE友好的 __init__.py 版本
3
+
4
+ import ast
5
+ from pathlib import Path
6
+ from typing import Dict, List, Set
7
+
8
+
9
+ def _extract_exports_from_module(py_file: Path) -> List[str]:
10
+ """
11
+ 优先读取模块内显式定义的 __all__,否则收集顶层的类与函数名(排除以下划线开头的)。
12
+ """
13
+ try:
14
+ source = py_file.read_text(encoding='utf-8')
15
+ except UnicodeDecodeError:
16
+ source = py_file.read_text(errors='ignore')
17
+
18
+ try:
19
+ tree = ast.parse(source, filename=str(py_file))
20
+ except SyntaxError:
21
+ return []
22
+
23
+ # 1) 如果定义了 __all__ 则优先使用
24
+ for node in tree.body:
25
+ if isinstance(node, ast.Assign):
26
+ for target in node.targets:
27
+ if isinstance(target, ast.Name) and target.id == '__all__':
28
+ values: List[str] = []
29
+ if isinstance(node.value, (ast.List, ast.Tuple)):
30
+ for elt in node.value.elts:
31
+ if isinstance(elt, ast.Str): # py<3.8
32
+ values.append(elt.s)
33
+ elif isinstance(elt, ast.Constant) and isinstance(elt.value, str):
34
+ values.append(elt.value)
35
+ return [name for name in values if name and not name.startswith('_')]
36
+
37
+ # 2) 否则收集顶层函数与类名
38
+ exports: Set[str] = set()
39
+ for node in tree.body:
40
+ if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
41
+ name = node.name
42
+ if not name.startswith('_'):
43
+ exports.add(name)
44
+ return sorted(exports)
45
+
46
+
47
+ def generate_init_for_directory(package_dir: Path, ide_friendly: bool = False) -> Path:
48
+ """
49
+ 为指定目录生成懒加载版 __init__.py(覆盖写入)。
50
+ - 仅扫描一级子模块(同级 .py 文件),忽略以下划线开头的模块与 __init__.py 本身。
51
+ - 生成结构:
52
+ from lazy_loader import attach
53
+
54
+ __getattr__, __dir__, __all__ = attach(
55
+ __name__,
56
+ submodules=["m1", "m2", ...],
57
+ submod_attrs={"m1": ["A", "B"], ...}
58
+ )
59
+
60
+ Args:
61
+ package_dir: 包目录路径
62
+ ide_friendly: 是否生成IDE友好版本(使用TYPE_CHECKING)
63
+ """
64
+ package_dir = package_dir.resolve()
65
+ if not package_dir.is_dir():
66
+ raise ValueError(f"目标不是目录: {package_dir}")
67
+
68
+ module_to_exports: Dict[str, List[str]] = {}
69
+ module_names: List[str] = []
70
+ for py_file in sorted(package_dir.glob('*.py')):
71
+ if py_file.name == '__init__.py':
72
+ continue
73
+ if py_file.name.startswith('_'):
74
+ continue
75
+ module_name = py_file.stem
76
+ module_names.append(module_name)
77
+ exports = _extract_exports_from_module(py_file)
78
+ if exports:
79
+ module_to_exports[module_name] = exports
80
+
81
+ lines: List[str] = []
82
+ lines.append('# This file is auto-generated. Do NOT edit manually.')
83
+ lines.append('# Generated by neverlib.QA.gen_init')
84
+
85
+ if ide_friendly:
86
+ lines.append('')
87
+ lines.append('from typing import TYPE_CHECKING, Any')
88
+ lines.append('')
89
+ lines.append('if TYPE_CHECKING:')
90
+ lines.append(' # 仅在类型检查时导入,提供IDE补全支持')
91
+
92
+ # 生成 TYPE_CHECKING 导入
93
+ for module_name in sorted(module_to_exports.keys()):
94
+ exports = module_to_exports[module_name]
95
+ if exports:
96
+ imports = ', '.join(exports)
97
+ lines.append(f' from .{module_name} import {imports}')
98
+
99
+ lines.append('')
100
+ lines.append('# 运行时使用懒加载')
101
+
102
+ lines.append('from lazy_loader import attach')
103
+ lines.append('')
104
+ lines.append('__getattr__, __dir__, __all__ = attach(')
105
+ lines.append(' __name__,')
106
+ lines.append(' submodules=[')
107
+ for name in sorted(module_names):
108
+ lines.append(f' "{name}",')
109
+ lines.append(' ],')
110
+ lines.append(' submod_attrs={')
111
+ for module_name in sorted(module_to_exports.keys()):
112
+ exports_sorted = sorted(module_to_exports[module_name])
113
+ joined = ', '.join([f"'{e}'" for e in exports_sorted])
114
+ lines.append(f' "{module_name}": [{joined}],')
115
+ lines.append(' }')
116
+ lines.append(')')
117
+ lines.append('')
118
+
119
+ if ide_friendly:
120
+ # 生成显式的 __all__ 声明
121
+ lines.append('# 显式声明 __all__ 以便 IDE 识别')
122
+ lines.append('if TYPE_CHECKING:')
123
+ lines.append(' __all__ = [')
124
+
125
+ all_exports = []
126
+ for module_name in sorted(module_to_exports.keys()):
127
+ exports = module_to_exports[module_name]
128
+ for export in exports:
129
+ all_exports.append(f" '{export}',")
130
+
131
+ lines.extend(all_exports)
132
+ lines.append(' ]')
133
+
134
+ init_file = package_dir / '__init__.py'
135
+ init_file.write_text('\n'.join(lines), encoding='utf-8')
136
+ return init_file
137
+
138
+
139
+ def generate_all_packages(root_dir: Path, ide_friendly: bool = False) -> List[Path]:
140
+ """
141
+ 为所有子包生成 __init__.py 文件
142
+
143
+ Args:
144
+ root_dir: 根目录路径
145
+ ide_friendly: 是否生成IDE友好版本
146
+
147
+ Returns:
148
+ 生成的文件路径列表
149
+ """
150
+ generated_files = []
151
+ processed_dirs = set() # 避免重复处理
152
+
153
+ # 查找所有包含 __init__.py 的包目录
154
+ for init_file in root_dir.rglob('__init__.py'):
155
+ package_dir = init_file.parent
156
+
157
+ # 跳过根目录和已处理的目录
158
+ if package_dir == root_dir or package_dir in processed_dirs:
159
+ continue
160
+
161
+ # 检查是否包含其他Python文件(不是只有__init__.py)
162
+ has_other_py_files = any(
163
+ f.name != '__init__.py' and f.suffix == '.py'
164
+ for f in package_dir.iterdir()
165
+ )
166
+
167
+ if has_other_py_files:
168
+ processed_dirs.add(package_dir)
169
+ try:
170
+ init_path = generate_init_for_directory(package_dir, ide_friendly=ide_friendly)
171
+ generated_files.append(init_path)
172
+ print(f'✅ 已生成: {init_path}')
173
+ except Exception as e:
174
+ print(f'❌ 生成失败 {package_dir}: {e}')
175
+
176
+ return generated_files
177
+
178
+
179
+ def main():
180
+ import argparse
181
+
182
+ parser = argparse.ArgumentParser(description='为指定包目录自动生成 __init__.py')
183
+ parser.add_argument('-p', '--package-dir', dest='package_dir',
184
+ help='包目录路径,比如 /path/to/pkg 或 ./neverlib/utils')
185
+ parser.add_argument('--all', action='store_true',
186
+ help='为所有子包生成 __init__.py')
187
+ parser.add_argument('--ide-friendly', action='store_true',
188
+ help='生成IDE友好版本(使用TYPE_CHECKING)')
189
+ parser.add_argument('--backup', action='store_true',
190
+ help='备份原始文件')
191
+ args = parser.parse_args()
192
+
193
+ if args.all:
194
+ # 批量生成所有包
195
+ root_dir = Path(__file__).parent.parent # neverlib 目录
196
+ generated_files = generate_all_packages(root_dir, ide_friendly=args.ide_friendly)
197
+ else:
198
+ # 生成单个包
199
+ if not args.package_dir:
200
+ parser.error('请指定包目录路径 (-p) 或使用 --all 批量生成')
201
+
202
+ target_dir = Path(args.package_dir)
203
+
204
+ if args.backup and (target_dir / '__init__.py').exists():
205
+ backup_path = target_dir / '__init__.py.backup'
206
+ (target_dir / '__init__.py').rename(backup_path)
207
+ print(f"已备份原始文件到: {backup_path}")
208
+
209
+ init_path = generate_init_for_directory(target_dir, ide_friendly=args.ide_friendly)
210
+ print(f'已生成: {init_path}')
211
+ if args.ide_friendly:
212
+ print('✅ 已生成IDE友好版本(支持代码补全和类型检查)')
213
+ else:
214
+ print('ℹ️ 生成标准懒加载版本,如需IDE支持请使用 --ide-friendly 参数')
215
+
216
+
217
+ if __name__ == '__main__':
218
+ main()
Binary file
Binary file
@@ -37,6 +37,13 @@ try:
37
37
  except Exception:
38
38
  __version__ = "0.1.2" # 如果出错, 使用默认版本号
39
39
 
40
+ from typing import TYPE_CHECKING, Any
41
+
42
+
43
+ if TYPE_CHECKING:
44
+ from .utils import get_path_list
45
+ from .filter import HPFilter
46
+ from .audio_aug import volume_norm
40
47
 
41
48
  # 懒加载子包,减少初始导入开销
42
49
  from lazy_loader import attach
@@ -45,4 +52,16 @@ __getattr__, __dir__, __all__ = attach(
45
52
  __name__,
46
53
  submodules=["audio_aug", "data_analyze", "filter", "metrics", "utils", "vad", ],
47
54
  # 只导出子模块,不直接导出函数
55
+ submod_attrs={
56
+ "utils": ["get_path_list"],
57
+ "filter": ["HPFilter"],
58
+ "audio_aug": ["volume_norm"],
59
+ }
48
60
  )
61
+
62
+ if TYPE_CHECKING:
63
+ __all__ = [
64
+ "get_path_list",
65
+ "HPFilter",
66
+ "volume_norm",
67
+ ]
@@ -0,0 +1,3 @@
1
+ https://github.com/iver56/audiomentations
2
+ https://github.com/gfdb/wav2aug
3
+ https://github.com/documentation-ai/DocumentationAI-Docs
@@ -6,6 +6,7 @@ __getattr__, __dir__, __all__ = attach(
6
6
  __name__,
7
7
  submodules=[
8
8
  "HarmonicDistortion",
9
+ "TFDrop",
9
10
  "TFMask",
10
11
  "audio_aug",
11
12
  "clip_aug",
@@ -17,10 +18,7 @@ __getattr__, __dir__, __all__ = attach(
17
18
  submod_attrs={
18
19
  "HarmonicDistortion": ['apply_harmonic_distortion', 'apply_pedalboard_distortion'],
19
20
  "TFMask": ['FreqMask', 'TimeMask'],
20
- "audio_aug": ['add_reverb', 'get_snr_use_vad', 'limiter', 'measure_loudness', 'snr_aug_Interpolation',
21
- 'snr_aug_changeClean', 'snr_aug_changeNoise', 'snr_aug_vad_Interpolation',
22
- 'snr_diff_changeClean', 'snr_diff_changeNoise', 'volume_aug', 'volume_aug_dbrms',
23
- 'volume_aug_linmax', 'volume_aug_lufs', 'volume_convert', 'volume_norm'],
21
+ "audio_aug": ['add_reverb', 'get_snr_use_vad', 'limiter', 'measure_loudness', 'snr_aug_Interpolation', 'snr_aug_changeClean', 'snr_aug_changeNoise', 'snr_aug_vad_Interpolation', 'snr_diff_changeClean', 'snr_diff_changeNoise', 'volume_aug', 'volume_aug_dbrms', 'volume_aug_linmax', 'volume_aug_lufs', 'volume_convert', 'volume_norm'],
24
22
  "clip_aug": ['clipping_aug'],
25
23
  "coder_aug": ['aac_aug_save', 'amr_nb_aug', 'amr_wb_aug', 'flac_aug', 'flac_encode_save', 'mp3_aug', 'opus_aug_save', 'vorbis_aug'],
26
24
  "coder_aug2": ['apply_codec_distortion', 'check_codec_available'],
@@ -322,9 +322,8 @@ def EQ_test():
322
322
  from scipy import signal
323
323
 
324
324
  fs = 16000
325
-
326
- # b, a = LowshelfFilter(1500, 15, Q=0.5)
327
- b, a = PeakingFilter(1500, 5, Q=0.5)
325
+ eq = EQFilter(fs)
326
+ b, a = eq.LowshelfFilter(4000, 6, Q=0.7)
328
327
  print(b)
329
328
  print(a)
330
329
 
@@ -335,5 +334,9 @@ def EQ_test():
335
334
  plt.ylabel('Amplitude [dB]')
336
335
  plt.grid(which='both', axis='both') # 显示网格
337
336
  # 画红色的垂直线, 标记截止频率
338
- plt.xscale('log') # x轴对数化
339
- plt.show()
337
+ # plt.xscale('log') # x轴对数化
338
+ plt.savefig('./lowshelf_freq_response.png')
339
+
340
+
341
+ if __name__ == "__main__":
342
+ EQ_test()
@@ -0,0 +1,35 @@
1
+ https://github.com/ftshijt/speech_evaluation?tab=readme-ov-file
2
+ https://github.com/Amir-Ivry/MAPSS-measures
3
+ https://github.com/espnet/espnet/blob/f517b63fe5defb865e2067b11c2dfc516150868d/utils/eval-source-separation.py#L361
4
+
5
+
6
+
7
+
8
+
9
+ F0 Correlation
10
+
11
+ F0 Root Mean Square Error
12
+ sdr
13
+ isr
14
+ sir
15
+ sar
16
+ perm
17
+
18
+
19
+ Convolutional scale-invariant signal-to-distortion ratio (CI-SDR) [x]
20
+ Scale-invariant signal-to-noise ratio (SI-SNR) [x]
21
+ Speech BERT Score
22
+ Discrete Speech BLEU Score [x]
23
+ Discrete Speech Token Edit Distance
24
+
25
+
26
+
27
+
28
+ STOI
29
+ ESTOI
30
+ PESQ
31
+
32
+
33
+ 音频特征:
34
+ https://github.com/libAudioFlux/audioFlux
35
+ https://github.com/csteinmetz1/pyloudnorm
@@ -13,7 +13,7 @@ __getattr__, __dir__, __all__ = attach(
13
13
  "time",
14
14
  ],
15
15
  submod_attrs={
16
- "dnsmos": ['ComputeScore', 'main'],
16
+ "dnsmos": ['ComputeScore'],
17
17
  "lpc_lsp": ['framing', 'lpc_lsp_distance', 'lpc_to_lsp'],
18
18
  "snr": ['get_snr', 'get_snr_from_noisy', 'psnr', 'seg_snr', 'si_sdr'],
19
19
  "spec": ['lsd', 'mcd', 'sd'],
@@ -0,0 +1,113 @@
1
+ # -*- coding:utf-8 -*-
2
+ # Author:凌逆战 | Never
3
+ # Date: 2024/6/14
4
+ """
5
+ babble噪声生成
6
+ """
7
+ import os
8
+ import torch
9
+ import random
10
+ import numpy as np
11
+ import soundfile as sf
12
+ import pickle
13
+
14
+ from neverlib.utils import get_path_list
15
+ from vad import EnergyVAD
16
+ from utils.audio_aug import volume_aug, add_reverb
17
+ from joblib import Parallel, delayed
18
+ from multiprocessing import Pool
19
+
20
+ vad = EnergyVAD(
21
+ sample_rate=16000,
22
+ frame_length=25, # in milliseconds
23
+ frame_shift=20, # in milliseconds
24
+ energy_threshold=0.05, # you may need to adjust this value
25
+ pre_emphasis=0.95,
26
+ ) # default values are used here
27
+
28
+
29
+ def get_one_babble(speech_path_list, rir_path_list):
30
+ sub_len = 0
31
+ sub_list = []
32
+ while sub_len < sentence_len:
33
+ speech_path = random.choice(speech_path_list)
34
+ rir_path = random.choice(rir_path_list)
35
+ # 加rir
36
+ with open(rir_path, 'rb') as f:
37
+ # arrayCoor (2,3) (num_mic, 3(x,y,z))
38
+ # sPos (4,3) (num_source, 3(x,y,z))
39
+ [arrayCoor, sPos, sAziPth, rir, L, rt, c, mtype, n, fs] = pickle.load(f)
40
+ rir = np.array(rir) # (souece, mic, T) (4, 3, 2668)
41
+ rir_idx = np.random.randint(0, rir.shape[0]) # 随机选择一个source
42
+ sPos = sPos[rir_idx] # (3,) (x,y,z)
43
+ DistMic2Source_1 = np.sqrt(np.sum((arrayCoor[0] - sPos) ** 2))
44
+ DistMic2Source_2 = np.sqrt(np.sum((arrayCoor[1] - sPos) ** 2))
45
+ if DistMic2Source_1 < 2 or DistMic2Source_2 < 2:
46
+ continue
47
+ rir = rir[rir_idx]
48
+
49
+ wav, _ = sf.read(speech_path, dtype='float32', always_2d=True)
50
+ assert wav.shape[-1] == 1, f"音频应该为单通道"
51
+ if len(wav) > sentence_len:
52
+ idx = random.randint(0, len(wav) - sentence_len)
53
+ wav = wav[idx:idx + sentence_len]
54
+
55
+ wav = wav / np.abs(wav).max() # 归一化
56
+ wav = vad.apply_vad(wav.T).T
57
+
58
+ wav = add_reverb(wav, rir, add_rir_ratio=1) # 双麦wav
59
+ # 音量增强
60
+ rms = np.sqrt(np.mean(wav ** 2))
61
+ wav *= random.uniform(0.5, 1.0) / rms
62
+
63
+ sub_len += len(wav)
64
+ sub_list.append(wav)
65
+
66
+ sub_babble = np.concatenate(sub_list, axis=0)
67
+ if sub_len >= sentence_len:
68
+ sub_babble = sub_babble[:sentence_len]
69
+ return sub_babble
70
+
71
+
72
+ def babble_noise_generate(i, speech_path_list, rir_path_list):
73
+ source_num = random.randint(15, 25)
74
+ babble_noise = np.zeros((sentence_len, 2))
75
+ for _ in range(source_num):
76
+ sub_babble = get_one_babble(speech_path_list, rir_path_list)
77
+ babble_noise += sub_babble
78
+
79
+ babble_path = os.path.join(target_dir, f"babble_noise_{i}.wav")
80
+ print(babble_path)
81
+ babble_noise = babble_noise / np.max(np.abs(babble_noise)) * 0.5
82
+ sf.write(babble_path, babble_noise, sr)
83
+
84
+
85
+ if __name__ == "__main__":
86
+ speech_dir = "/data/never/kws_data/BigDataset/speech"
87
+ rir_dir = "/data/never/RIR/2mic_Line_r50mm_fs16k_4source_t60mix08_maxdist8m_2w"
88
+ target_dir = "/data/never/SE_dataset/babble_noise10"
89
+ # if os.path.exists(target_dir):
90
+ # os.system(f"rm -rf {target_dir}")
91
+ # os.makedirs(target_dir, exist_ok=True)
92
+ # else:
93
+ # os.makedirs(target_dir, exist_ok=True)
94
+ speech_path_list = get_path_list(speech_dir, "*.wav")
95
+ rir_path_list = get_path_list(rir_dir, "*.rir")
96
+
97
+ sentence_num = 20000
98
+ sr = 16000
99
+ volume_range = [0.5, 1.0]
100
+ sentence_len = sr * 10
101
+ # for i in range(10):
102
+ # babble_noise_generate(i, speech_path_list, rir_path_list)
103
+
104
+ # 多核并行处理
105
+ # Parallel(n_jobs=-1)(delayed(babble_noise_generate)(i, speech_path_list, rir_path_list) for i in range(sentence_num))
106
+
107
+ pool = Pool(32) # 创建进程池, 一定要放在 事件函数之后, 不然会保错
108
+
109
+ for i in range(sentence_num):
110
+ r = pool.apply_async(func=babble_noise_generate, args=(i, speech_path_list, rir_path_list,))
111
+
112
+ pool.close() # 关闭进程池
113
+ pool.join() # 回收进程池
@@ -0,0 +1,16 @@
1
+ # This file is auto-generated. Do NOT edit manually.
2
+ # Generated by neverlib.QA.gen_init
3
+ from lazy_loader import attach
4
+
5
+ __getattr__, __dir__, __all__ = attach(
6
+ __name__,
7
+ submodules=[
8
+ "test_imports",
9
+ "test_preprocess",
10
+ "test_vad",
11
+ ],
12
+ submod_attrs={
13
+ "test_preprocess": ['test_NS_shape', 'test_pre_emphasis'],
14
+ "test_vad": ['test_vad2nad'],
15
+ }
16
+ )
@@ -8,6 +8,8 @@ Description: 测试neverlib导入功能
8
8
  import sys
9
9
  import os
10
10
  import time
11
+ from neverlib.utils import get_path_list
12
+ from neverlib.data_analyze.dataset_analyzer import AudioFileInfo
11
13
 
12
14
  # 确保当前目录在Python路径中,以便导入neverlib
13
15
  # sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))