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.
- {neverlib-0.2.7/neverlib.egg-info → neverlib-0.2.9}/PKG-INFO +15 -1
- {neverlib-0.2.7 → neverlib-0.2.9}/README.md +14 -0
- neverlib-0.2.9/neverlib/QA/ImpactNoiseRejection.py +119 -0
- neverlib-0.2.9/neverlib/QA/gen_init.py +218 -0
- neverlib-0.2.9/neverlib/QA/impact_noise_rejection.png +0 -0
- neverlib-0.2.9/neverlib/QA/out.pcm +0 -0
- neverlib-0.2.9/neverlib/QA/out.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/__init__.py +19 -0
- neverlib-0.2.9/neverlib/audio_aug/README.md +3 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/TFDrop.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/TFMask.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/__init__.py +2 -4
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/quant_aug.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/core.py +8 -5
- neverlib-0.2.9/neverlib/metrics/README.md +35 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/__init__.py +1 -1
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/PESQ +0 -0
- neverlib-0.2.9/neverlib/signal_gen/babble_noise_generate.py +113 -0
- neverlib-0.2.9/neverlib/tests/__init__.py +16 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_imports.py +2 -0
- neverlib-0.2.9/neverlib/utils/README.md +29 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/__init__.py +7 -6
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/audio_split.py +21 -20
- neverlib-0.2.9/neverlib/utils/checkGPU.py +95 -0
- neverlib-0.2.9/neverlib/utils/floder.py +115 -0
- neverlib-0.2.9/neverlib/utils/pcm.py +42 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/utils.py +3 -77
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/PreProcess.py +66 -66
- {neverlib-0.2.7 → neverlib-0.2.9/neverlib.egg-info}/PKG-INFO +15 -1
- neverlib-0.2.9/neverlib.egg-info/SOURCES.txt +124 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/pyproject.toml +1 -1
- neverlib-0.2.7/neverlib/.claude/settings.local.json +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162530.py +0 -0
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162540.py +0 -2
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162541.py +0 -7
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162606.py +0 -7
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162637.py +0 -8
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162645.py +0 -8
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162723.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/del_20250827162739.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011311.py +0 -0
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011331.py +0 -75
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011342.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011352.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011403.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011413.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250806011435.py +0 -55
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161751.py +0 -55
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161754.py +0 -55
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827161833.py +0 -54
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162017.py +0 -56
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162021.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162028.py +0 -57
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug/test_snr_20250827162033.py +0 -55
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162738.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162819.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162830.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162846.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162851.py +0 -9
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162903.py +0 -10
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162921.py +0 -10
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827162926.py +0 -10
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827163030.py +0 -10
- neverlib-0.2.7/neverlib/.history/Docs/audio_aug_test/del_20250827163032.py +0 -10
- neverlib-0.2.7/neverlib/.history/Docs/vad/1_20250810032405.py +0 -0
- neverlib-0.2.7/neverlib/.history/Docs/vad/1_20250810032417.py +0 -39
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234112.md +0 -0
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234140.py +0 -9
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234141.md +0 -9
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234159.py +0 -12
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234200.py +0 -17
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234236.py +0 -17
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234340.py +0 -14
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234522.py +0 -18
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234601.py +0 -20
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234615.py +0 -22
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234715.py +0 -28
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234720.py +0 -27
- neverlib-0.2.7/neverlib/.history/QA/html2markdown_20250822234903.py +0 -27
- neverlib-0.2.7/neverlib/.history/__init___20250805234212.py +0 -41
- neverlib-0.2.7/neverlib/.history/__init___20250904102635.py +0 -39
- neverlib-0.2.7/neverlib/.history/__init___20250904102836.py +0 -34
- neverlib-0.2.7/neverlib/.history/__init___20250904102838.py +0 -39
- neverlib-0.2.7/neverlib/.history/__init___20250904102851.py +0 -33
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010451.py +0 -125
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010750.py +0 -138
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010759.py +0 -140
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010803.py +0 -140
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806010809.py +0 -140
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250806011108.py +0 -140
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826155913.py +0 -158
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164159.py +0 -159
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164217.py +0 -160
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164408.py +0 -161
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164423.py +0 -161
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164529.py +0 -161
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164824.py +0 -161
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164932.py +0 -162
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826164947.py +0 -162
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165403.py +0 -162
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165421.py +0 -162
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165509.py +0 -163
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165702.py +0 -163
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826165732.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170041.py +0 -163
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170105.py +0 -164
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170154.py +0 -164
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170220.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170221.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170228.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826170231.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826212001.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220038.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220133.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220148.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220154.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220156.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220314.py +0 -165
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220343.py +0 -184
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220345.py +0 -184
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220349.py +0 -184
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220429.py +0 -184
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220447.py +0 -184
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220601.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220638.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220641.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220647.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220653.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220655.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220731.py +0 -185
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220739.py +0 -185
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220747.py +0 -185
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220801.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220822.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826220901.py +0 -186
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221107.py +0 -187
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221310.py +0 -188
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221353.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221821.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221838.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221906.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221930.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221939.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826221955.py +0 -191
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222008.py +0 -197
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222017.py +0 -200
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222046.py +0 -203
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222105.py +0 -203
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222206.py +0 -203
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222302.py +0 -203
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222336.py +0 -203
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222455.py +0 -204
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222526.py +0 -204
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222541.py +0 -204
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222624.py +0 -202
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222714.py +0 -205
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222820.py +0 -205
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222827.py +0 -205
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826222927.py +0 -232
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223009.py +0 -232
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223054.py +0 -232
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223225.py +0 -233
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223344.py +0 -236
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223356.py +0 -236
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826223955.py +0 -242
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224210.py +0 -240
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224250.py +0 -242
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224323.py +0 -280
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224452.py +0 -263
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224455.py +0 -263
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224502.py +0 -263
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224528.py +0 -263
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224658.py +0 -263
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826224833.py +0 -264
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225013.py +0 -269
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225050.py +0 -269
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225241.py +0 -268
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225315.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225404.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225502.py +0 -265
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225950.py +0 -267
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826225959.py +0 -268
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230222.py +0 -271
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230248.py +0 -270
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230638.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230755.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826230941.py +0 -265
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231054.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231117.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826231219.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826232330.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250826232352.py +0 -266
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152748.py +0 -268
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152806.py +0 -268
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152808.py +0 -268
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152917.py +0 -283
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827152929.py +0 -281
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153100.py +0 -286
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153102.py +0 -286
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153301.py +0 -295
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153331.py +0 -298
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153525.py +0 -303
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153533.py +0 -304
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153541.py +0 -321
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153805.py +0 -322
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153832.py +0 -323
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153836.py +0 -324
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153846.py +0 -324
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827153859.py +0 -325
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154453.py +0 -337
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154513.py +0 -355
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154538.py +0 -356
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154541.py +0 -357
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154612.py +0 -357
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154657.py +0 -360
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154708.py +0 -360
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154728.py +0 -366
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154755.py +0 -367
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154800.py +0 -367
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154917.py +0 -368
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154928.py +0 -369
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154932.py +0 -370
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827154947.py +0 -372
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155015.py +0 -375
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155106.py +0 -375
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155114.py +0 -393
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155207.py +0 -415
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155300.py +0 -415
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827155321.py +0 -471
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827164703.py +0 -471
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827164749.py +0 -471
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165252.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165334.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165404.py +0 -473
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165610.py +0 -473
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827165805.py +0 -473
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170056.py +0 -473
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170106.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170143.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170216.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170218.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827170314.py +0 -472
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827171500.py +0 -471
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172347.py +0 -471
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172558.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172559.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827172801.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182522.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182526.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182626.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250827182715.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250904185444.py +0 -470
- neverlib-0.2.7/neverlib/.history/audio_aug/audio_aug_20250904185538.py +0 -445
- neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250805234204.py +0 -87
- neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204125.py +0 -14
- neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204139.py +0 -14
- neverlib-0.2.7/neverlib/.history/dataAnalyze/__init___20250806204159.py +0 -14
- neverlib-0.2.7/neverlib/.history/data_analyze/__init___20250806204158.py +0 -14
- neverlib-0.2.7/neverlib/.history/data_analyze/__init___20250827163248.py +0 -14
- neverlib-0.2.7/neverlib/.history/filter/__init___20250820103351.py +0 -70
- neverlib-0.2.7/neverlib/.history/filter/__init___20250821102348.py +0 -70
- neverlib-0.2.7/neverlib/.history/filter/__init___20250821102405.py +0 -14
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250819213121.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102241.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102259.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102307.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102310.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102318.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/__init___20250821102507.py +0 -36
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/de_eq_20250820103848.py +0 -361
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/de_eq_20250821102422.py +0 -360
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250805234206.py +0 -75
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140732.py +0 -75
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140745.py +0 -75
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140816.py +0 -75
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820140938.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141003.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141006.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141019.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141049.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141211.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141227.py +0 -77
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141311.py +0 -78
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141340.py +0 -78
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141712.py +0 -78
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141733.py +0 -78
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250820141755.py +0 -78
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102434.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102500.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821102502.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821143140.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821153208.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/freq_eq_20250821153214.py +0 -76
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820102957.py +0 -380
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113054.py +0 -380
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113150.py +0 -380
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113520.py +0 -385
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113525.py +0 -385
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250821102212.py +0 -385
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110521.py +0 -385
- neverlib-0.2.7/neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110652.py +0 -385
- neverlib-0.2.7/neverlib/.history/filter/common_20250806002134.py +0 -37
- neverlib-0.2.7/neverlib/.history/filter/common_20250821120448.py +0 -49
- neverlib-0.2.7/neverlib/.history/filter/common_20250821120453.py +0 -49
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250806001612.py +0 -160
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815180659.py +0 -160
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815180701.py +0 -158
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181321.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181327.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181331.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181620.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181631.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181742.py +0 -154
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181824.py +0 -153
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181834.py +0 -153
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815181922.py +0 -153
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182011.py +0 -147
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182036.py +0 -144
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182936.py +0 -143
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815182942.py +0 -143
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183032.py +0 -137
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183101.py +0 -144
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183121.py +0 -144
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183123.py +0 -143
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183214.py +0 -143
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183240.py +0 -143
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183248.py +0 -144
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183407.py +0 -142
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183409.py +0 -142
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183431.py +0 -142
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183507.py +0 -140
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183513.py +0 -139
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183618.py +0 -139
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183709.py +0 -140
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183756.py +0 -137
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183815.py +0 -128
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183827.py +0 -129
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183913.py +0 -117
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815183914.py +0 -117
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184003.py +0 -118
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184040.py +0 -118
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184049.py +0 -118
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184104.py +0 -117
- neverlib-0.2.7/neverlib/.history/metrics/dnsmos_20250815184200.py +0 -117
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816015944.py +0 -128
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020142.py +0 -128
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020156.py +0 -128
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020554.py +0 -130
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020600.py +0 -125
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020631.py +0 -120
- neverlib-0.2.7/neverlib/.history/metrics/lpc_lsp_metric_20250816020746.py +0 -118
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816013111.py +0 -0
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816013129.py +0 -121
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015430.py +0 -103
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015535.py +0 -96
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015542.py +0 -96
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015636.py +0 -97
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015658.py +0 -104
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015703.py +0 -100
- neverlib-0.2.7/neverlib/.history/metrics/lpc_me_20250816015945.py +0 -128
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250806010538.py +0 -177
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250806211634.py +0 -184
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250827224201.py +0 -182
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234019.py +0 -186
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234028.py +0 -186
- neverlib-0.2.7/neverlib/.history/metrics/snr_20250827234030.py +0 -186
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250805234209.py +0 -45
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135530.py +0 -11
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135654.py +0 -16
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135736.py +0 -68
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135904.py +0 -75
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816135921.py +0 -82
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140111.py +0 -82
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140543.py +0 -136
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140559.py +0 -172
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140602.py +0 -172
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140608.py +0 -172
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140654.py +0 -148
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140705.py +0 -144
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140755.py +0 -138
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140823.py +0 -170
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140832.py +0 -170
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140833.py +0 -170
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816140922.py +0 -147
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141148.py +0 -107
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141219.py +0 -123
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141732.py +0 -178
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816141740.py +0 -178
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142030.py +0 -178
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142107.py +0 -135
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142126.py +0 -135
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142410.py +0 -135
- neverlib-0.2.7/neverlib/.history/metrics/spec_20250816142415.py +0 -136
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135156.py +0 -0
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135226.py +0 -5
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135227.py +0 -10
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135306.py +0 -15
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135442.py +0 -31
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135448.py +0 -31
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135520.py +0 -29
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135537.py +0 -63
- neverlib-0.2.7/neverlib/.history/metrics/spec_metric_20250816135653.py +0 -65
- neverlib-0.2.7/neverlib/.history/utils/audio_split_20250805234209.py +0 -268
- neverlib-0.2.7/neverlib/.history/utils/audio_split_20250904185309.py +0 -268
- neverlib-0.2.7/neverlib/.history/utils/utils_20250813165516.py +0 -330
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904181341.py +0 -328
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904185546.py +0 -352
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904185548.py +0 -353
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904185603.py +0 -353
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904185636.py +0 -353
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904185658.py +0 -358
- neverlib-0.2.7/neverlib/.history/utils/utils_20250904190053.py +0 -359
- neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250805234211.py +0 -63
- neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250809232455.py +0 -63
- neverlib-0.2.7/neverlib/.history/vad/PreProcess_20250816020725.py +0 -66
- neverlib-0.2.7/neverlib/.history/vad/VAD_Silero_20250805234211.py +0 -50
- neverlib-0.2.7/neverlib/.history/vad/VAD_Silero_20250809232456.py +0 -50
- neverlib-0.2.7/neverlib/.history/vad/VAD_WebRTC_20250805234211.py +0 -61
- neverlib-0.2.7/neverlib/.history/vad/VAD_WebRTC_20250809232456.py +0 -61
- neverlib-0.2.7/neverlib/.history/vad/VAD_funasr_20250805234211.py +0 -54
- neverlib-0.2.7/neverlib/.history/vad/VAD_funasr_20250809232456.py +0 -54
- neverlib-0.2.7/neverlib/.history/vad/VAD_vadlib_20250805234211.py +0 -70
- neverlib-0.2.7/neverlib/.history/vad/VAD_vadlib_20250809232455.py +0 -70
- neverlib-0.2.7/neverlib/.history/vad/VAD_whisper_20250805234211.py +0 -55
- neverlib-0.2.7/neverlib/.history/vad/VAD_whisper_20250809232456.py +0 -55
- neverlib-0.2.7/neverlib/.specstory/.what-is-this.md +0 -69
- 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
- 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
- neverlib-0.2.7/neverlib/.specstory/history/2025-08-26_11-54Z-oserror-missing-shared-object-file.md +0 -87
- 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
- neverlib-0.2.7/neverlib/.specstory/history/2025-08-27_08-29Z-delete-python-file-command.md +0 -211
- 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
- neverlib-0.2.7/neverlib/QA/gen_init.py +0 -117
- neverlib-0.2.7/neverlib/tests/__init__.py +0 -1
- neverlib-0.2.7/neverlib/utils/checkGPU.py +0 -122
- neverlib-0.2.7/neverlib.egg-info/SOURCES.txt +0 -515
- {neverlib-0.2.7 → neverlib-0.2.9}/CLAUDE.md +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/LICENSE +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/MANIFEST.in +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug/test_volume.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_snr.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_volume.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/audio_aug_test/test_volume.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/biquad.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/filter_family.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/highpass.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/filter/scipy_filter_family.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_Energy.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_Silero.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_WebRTC.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_funasr.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_rvADfast.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_statistics.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_tenVAD.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_vadlib.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/Docs/vad/VAD_whisper.ipynb +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/QA/get_fun.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/QA/html2markdown.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/HarmonicDistortion.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/audio_aug.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/clip_aug.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/coder_aug.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/coder_aug2.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/audio_aug/loss_packet_aug.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/000_short_enhance.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/3956_speech.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/3956_sweep.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/vad_example.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white_EQ.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data/white_matched.wav +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/README.md +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/__init__.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/dataset_analyzer.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/quality_metrics.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/rms_distrubution.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/spectral_analysis.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/statistics.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/temporal_features.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/data_analyze/visualization.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/README.md +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/__init__.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/README.md +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/__init__.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/de_eq.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/freq_eq.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/ga_eq_advanced.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/auto_eq/ga_eq_basic.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/biquad.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/filter/common.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/bak_ovr.onnx +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/model_v8.onnx +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/sig.onnx +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/DNSMOS/sig_bak_ovr.onnx +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/dnsmos.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/lpc_lsp.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pDNSMOS/sig_bak_ovr.onnx +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/dsp.c +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/dsp.h +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesq.h +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqdsp.c +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqio.c +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqmain.c +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqmod.c +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/pesq_c/pesqpar.h +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/snr.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/spec.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/test_pesq.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/metrics/time.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_preprocess.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/tests/test_vad.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/lazy_expose.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/lazy_module.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/utils/message.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/README.md +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_Energy.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_Silero.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_WebRTC.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_funasr.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_statistics.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_vadlib.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/VAD_whisper.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/__init__.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/class_get_speech.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/class_vad.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/img.png +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib/vad/utils.py +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/dependency_links.txt +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/requires.txt +0 -0
- {neverlib-0.2.7 → neverlib-0.2.9}/neverlib.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
|
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
|
+
]
|
|
File without changes
|
|
File without changes
|
|
@@ -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'],
|
|
File without changes
|
|
@@ -322,9 +322,8 @@ def EQ_test():
|
|
|
322
322
|
from scipy import signal
|
|
323
323
|
|
|
324
324
|
fs = 16000
|
|
325
|
-
|
|
326
|
-
|
|
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.
|
|
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'
|
|
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'],
|
|
File without changes
|
|
@@ -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__))))
|