neverlib 0.2.8__py3-none-any.whl → 0.2.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- neverlib/QA/ImpactNoiseRejection.py +119 -0
- neverlib/QA/impact_noise_rejection.png +0 -0
- neverlib/QA/out.pcm +0 -0
- neverlib/QA/out.wav +0 -0
- neverlib/audio_aug/README.md +3 -0
- neverlib/audio_aug/__init__.py +0 -54
- neverlib/data_analyze/__init__.py +0 -44
- neverlib/filter/__init__.py +0 -23
- neverlib/filter/auto_eq/__init__.py +0 -36
- neverlib/filter/core.py +8 -5
- neverlib/metrics/README.md +35 -0
- neverlib/metrics/__init__.py +0 -36
- neverlib/metrics/pesq_c/PESQ +0 -0
- neverlib/signal_gen/babble_noise_generate.py +113 -0
- neverlib/tests/__init__.py +0 -17
- neverlib/utils/README.md +29 -0
- neverlib/utils/__init__.py +6 -50
- neverlib/utils/audio_split.py +20 -20
- neverlib/utils/checkGPU.py +52 -79
- neverlib/utils/floder.py +115 -0
- neverlib/utils/pcm.py +42 -0
- neverlib/utils/utils.py +3 -92
- neverlib/vad/__init__.py +0 -38
- {neverlib-0.2.8.dist-info → neverlib-0.2.9.dist-info}/METADATA +15 -1
- neverlib-0.2.9.dist-info/RECORD +119 -0
- neverlib/.claude/settings.local.json +0 -9
- neverlib/.history/Docs/audio_aug/del_20250827162530.py +0 -0
- neverlib/.history/Docs/audio_aug/del_20250827162540.py +0 -2
- neverlib/.history/Docs/audio_aug/del_20250827162541.py +0 -7
- neverlib/.history/Docs/audio_aug/del_20250827162606.py +0 -7
- neverlib/.history/Docs/audio_aug/del_20250827162637.py +0 -8
- neverlib/.history/Docs/audio_aug/del_20250827162645.py +0 -8
- neverlib/.history/Docs/audio_aug/del_20250827162723.py +0 -9
- neverlib/.history/Docs/audio_aug/del_20250827162739.py +0 -9
- neverlib/.history/Docs/audio_aug/test_snr_20250806011311.py +0 -0
- neverlib/.history/Docs/audio_aug/test_snr_20250806011331.py +0 -75
- neverlib/.history/Docs/audio_aug/test_snr_20250806011342.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250806011352.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250806011403.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250806011413.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250806011435.py +0 -55
- neverlib/.history/Docs/audio_aug/test_snr_20250827161751.py +0 -55
- neverlib/.history/Docs/audio_aug/test_snr_20250827161754.py +0 -55
- neverlib/.history/Docs/audio_aug/test_snr_20250827161833.py +0 -54
- neverlib/.history/Docs/audio_aug/test_snr_20250827162017.py +0 -56
- neverlib/.history/Docs/audio_aug/test_snr_20250827162021.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250827162028.py +0 -57
- neverlib/.history/Docs/audio_aug/test_snr_20250827162033.py +0 -55
- neverlib/.history/Docs/audio_aug_test/del_20250827162738.py +0 -9
- neverlib/.history/Docs/audio_aug_test/del_20250827162819.py +0 -9
- neverlib/.history/Docs/audio_aug_test/del_20250827162830.py +0 -9
- neverlib/.history/Docs/audio_aug_test/del_20250827162846.py +0 -9
- neverlib/.history/Docs/audio_aug_test/del_20250827162851.py +0 -9
- neverlib/.history/Docs/audio_aug_test/del_20250827162903.py +0 -10
- neverlib/.history/Docs/audio_aug_test/del_20250827162921.py +0 -10
- neverlib/.history/Docs/audio_aug_test/del_20250827162926.py +0 -10
- neverlib/.history/Docs/audio_aug_test/del_20250827163030.py +0 -10
- neverlib/.history/Docs/audio_aug_test/del_20250827163032.py +0 -10
- neverlib/.history/Docs/vad/1_20250810032405.py +0 -0
- neverlib/.history/Docs/vad/1_20250810032417.py +0 -39
- neverlib/.history/QA/html2markdown_20250822234112.md +0 -0
- neverlib/.history/QA/html2markdown_20250822234140.py +0 -9
- neverlib/.history/QA/html2markdown_20250822234141.md +0 -9
- neverlib/.history/QA/html2markdown_20250822234159.py +0 -12
- neverlib/.history/QA/html2markdown_20250822234200.py +0 -17
- neverlib/.history/QA/html2markdown_20250822234236.py +0 -17
- neverlib/.history/QA/html2markdown_20250822234340.py +0 -14
- neverlib/.history/QA/html2markdown_20250822234522.py +0 -18
- neverlib/.history/QA/html2markdown_20250822234601.py +0 -20
- neverlib/.history/QA/html2markdown_20250822234615.py +0 -22
- neverlib/.history/QA/html2markdown_20250822234715.py +0 -28
- neverlib/.history/QA/html2markdown_20250822234720.py +0 -27
- neverlib/.history/QA/html2markdown_20250822234903.py +0 -27
- neverlib/.history/__init___20250805234212.py +0 -41
- neverlib/.history/__init___20250904102635.py +0 -39
- neverlib/.history/__init___20250904102836.py +0 -34
- neverlib/.history/__init___20250904102838.py +0 -39
- neverlib/.history/__init___20250904102851.py +0 -33
- neverlib/.history/audio_aug/audio_aug_20250806010451.py +0 -125
- neverlib/.history/audio_aug/audio_aug_20250806010750.py +0 -138
- neverlib/.history/audio_aug/audio_aug_20250806010759.py +0 -140
- neverlib/.history/audio_aug/audio_aug_20250806010803.py +0 -140
- neverlib/.history/audio_aug/audio_aug_20250806010809.py +0 -140
- neverlib/.history/audio_aug/audio_aug_20250806011108.py +0 -140
- neverlib/.history/audio_aug/audio_aug_20250826155913.py +0 -158
- neverlib/.history/audio_aug/audio_aug_20250826164159.py +0 -159
- neverlib/.history/audio_aug/audio_aug_20250826164217.py +0 -160
- neverlib/.history/audio_aug/audio_aug_20250826164408.py +0 -161
- neverlib/.history/audio_aug/audio_aug_20250826164423.py +0 -161
- neverlib/.history/audio_aug/audio_aug_20250826164529.py +0 -161
- neverlib/.history/audio_aug/audio_aug_20250826164824.py +0 -161
- neverlib/.history/audio_aug/audio_aug_20250826164932.py +0 -162
- neverlib/.history/audio_aug/audio_aug_20250826164947.py +0 -162
- neverlib/.history/audio_aug/audio_aug_20250826165403.py +0 -162
- neverlib/.history/audio_aug/audio_aug_20250826165421.py +0 -162
- neverlib/.history/audio_aug/audio_aug_20250826165509.py +0 -163
- neverlib/.history/audio_aug/audio_aug_20250826165702.py +0 -163
- neverlib/.history/audio_aug/audio_aug_20250826165732.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826170041.py +0 -163
- neverlib/.history/audio_aug/audio_aug_20250826170105.py +0 -164
- neverlib/.history/audio_aug/audio_aug_20250826170154.py +0 -164
- neverlib/.history/audio_aug/audio_aug_20250826170220.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826170221.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826170228.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826170231.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826212001.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220038.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220133.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220148.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220154.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220156.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220314.py +0 -165
- neverlib/.history/audio_aug/audio_aug_20250826220343.py +0 -184
- neverlib/.history/audio_aug/audio_aug_20250826220345.py +0 -184
- neverlib/.history/audio_aug/audio_aug_20250826220349.py +0 -184
- neverlib/.history/audio_aug/audio_aug_20250826220429.py +0 -184
- neverlib/.history/audio_aug/audio_aug_20250826220447.py +0 -184
- neverlib/.history/audio_aug/audio_aug_20250826220601.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220638.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220641.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220647.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220653.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220655.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220731.py +0 -185
- neverlib/.history/audio_aug/audio_aug_20250826220739.py +0 -185
- neverlib/.history/audio_aug/audio_aug_20250826220747.py +0 -185
- neverlib/.history/audio_aug/audio_aug_20250826220801.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220822.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826220901.py +0 -186
- neverlib/.history/audio_aug/audio_aug_20250826221107.py +0 -187
- neverlib/.history/audio_aug/audio_aug_20250826221310.py +0 -188
- neverlib/.history/audio_aug/audio_aug_20250826221353.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221821.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221838.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221906.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221930.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221939.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826221955.py +0 -191
- neverlib/.history/audio_aug/audio_aug_20250826222008.py +0 -197
- neverlib/.history/audio_aug/audio_aug_20250826222017.py +0 -200
- neverlib/.history/audio_aug/audio_aug_20250826222046.py +0 -203
- neverlib/.history/audio_aug/audio_aug_20250826222105.py +0 -203
- neverlib/.history/audio_aug/audio_aug_20250826222206.py +0 -203
- neverlib/.history/audio_aug/audio_aug_20250826222302.py +0 -203
- neverlib/.history/audio_aug/audio_aug_20250826222336.py +0 -203
- neverlib/.history/audio_aug/audio_aug_20250826222455.py +0 -204
- neverlib/.history/audio_aug/audio_aug_20250826222526.py +0 -204
- neverlib/.history/audio_aug/audio_aug_20250826222541.py +0 -204
- neverlib/.history/audio_aug/audio_aug_20250826222624.py +0 -202
- neverlib/.history/audio_aug/audio_aug_20250826222714.py +0 -205
- neverlib/.history/audio_aug/audio_aug_20250826222820.py +0 -205
- neverlib/.history/audio_aug/audio_aug_20250826222827.py +0 -205
- neverlib/.history/audio_aug/audio_aug_20250826222927.py +0 -232
- neverlib/.history/audio_aug/audio_aug_20250826223009.py +0 -232
- neverlib/.history/audio_aug/audio_aug_20250826223054.py +0 -232
- neverlib/.history/audio_aug/audio_aug_20250826223225.py +0 -233
- neverlib/.history/audio_aug/audio_aug_20250826223344.py +0 -236
- neverlib/.history/audio_aug/audio_aug_20250826223356.py +0 -236
- neverlib/.history/audio_aug/audio_aug_20250826223955.py +0 -242
- neverlib/.history/audio_aug/audio_aug_20250826224210.py +0 -240
- neverlib/.history/audio_aug/audio_aug_20250826224250.py +0 -242
- neverlib/.history/audio_aug/audio_aug_20250826224323.py +0 -280
- neverlib/.history/audio_aug/audio_aug_20250826224452.py +0 -263
- neverlib/.history/audio_aug/audio_aug_20250826224455.py +0 -263
- neverlib/.history/audio_aug/audio_aug_20250826224502.py +0 -263
- neverlib/.history/audio_aug/audio_aug_20250826224528.py +0 -263
- neverlib/.history/audio_aug/audio_aug_20250826224658.py +0 -263
- neverlib/.history/audio_aug/audio_aug_20250826224833.py +0 -264
- neverlib/.history/audio_aug/audio_aug_20250826225013.py +0 -269
- neverlib/.history/audio_aug/audio_aug_20250826225050.py +0 -269
- neverlib/.history/audio_aug/audio_aug_20250826225241.py +0 -268
- neverlib/.history/audio_aug/audio_aug_20250826225315.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826225404.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826225502.py +0 -265
- neverlib/.history/audio_aug/audio_aug_20250826225950.py +0 -267
- neverlib/.history/audio_aug/audio_aug_20250826225959.py +0 -268
- neverlib/.history/audio_aug/audio_aug_20250826230222.py +0 -271
- neverlib/.history/audio_aug/audio_aug_20250826230248.py +0 -270
- neverlib/.history/audio_aug/audio_aug_20250826230638.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826230755.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826230941.py +0 -265
- neverlib/.history/audio_aug/audio_aug_20250826231054.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826231117.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826231219.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826232330.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250826232352.py +0 -266
- neverlib/.history/audio_aug/audio_aug_20250827152748.py +0 -268
- neverlib/.history/audio_aug/audio_aug_20250827152806.py +0 -268
- neverlib/.history/audio_aug/audio_aug_20250827152808.py +0 -268
- neverlib/.history/audio_aug/audio_aug_20250827152917.py +0 -283
- neverlib/.history/audio_aug/audio_aug_20250827152929.py +0 -281
- neverlib/.history/audio_aug/audio_aug_20250827153100.py +0 -286
- neverlib/.history/audio_aug/audio_aug_20250827153102.py +0 -286
- neverlib/.history/audio_aug/audio_aug_20250827153301.py +0 -295
- neverlib/.history/audio_aug/audio_aug_20250827153331.py +0 -298
- neverlib/.history/audio_aug/audio_aug_20250827153525.py +0 -303
- neverlib/.history/audio_aug/audio_aug_20250827153533.py +0 -304
- neverlib/.history/audio_aug/audio_aug_20250827153541.py +0 -321
- neverlib/.history/audio_aug/audio_aug_20250827153805.py +0 -322
- neverlib/.history/audio_aug/audio_aug_20250827153832.py +0 -323
- neverlib/.history/audio_aug/audio_aug_20250827153836.py +0 -324
- neverlib/.history/audio_aug/audio_aug_20250827153846.py +0 -324
- neverlib/.history/audio_aug/audio_aug_20250827153859.py +0 -325
- neverlib/.history/audio_aug/audio_aug_20250827154453.py +0 -337
- neverlib/.history/audio_aug/audio_aug_20250827154513.py +0 -355
- neverlib/.history/audio_aug/audio_aug_20250827154538.py +0 -356
- neverlib/.history/audio_aug/audio_aug_20250827154541.py +0 -357
- neverlib/.history/audio_aug/audio_aug_20250827154612.py +0 -357
- neverlib/.history/audio_aug/audio_aug_20250827154657.py +0 -360
- neverlib/.history/audio_aug/audio_aug_20250827154708.py +0 -360
- neverlib/.history/audio_aug/audio_aug_20250827154728.py +0 -366
- neverlib/.history/audio_aug/audio_aug_20250827154755.py +0 -367
- neverlib/.history/audio_aug/audio_aug_20250827154800.py +0 -367
- neverlib/.history/audio_aug/audio_aug_20250827154917.py +0 -368
- neverlib/.history/audio_aug/audio_aug_20250827154928.py +0 -369
- neverlib/.history/audio_aug/audio_aug_20250827154932.py +0 -370
- neverlib/.history/audio_aug/audio_aug_20250827154947.py +0 -372
- neverlib/.history/audio_aug/audio_aug_20250827155015.py +0 -375
- neverlib/.history/audio_aug/audio_aug_20250827155106.py +0 -375
- neverlib/.history/audio_aug/audio_aug_20250827155114.py +0 -393
- neverlib/.history/audio_aug/audio_aug_20250827155207.py +0 -415
- neverlib/.history/audio_aug/audio_aug_20250827155300.py +0 -415
- neverlib/.history/audio_aug/audio_aug_20250827155321.py +0 -471
- neverlib/.history/audio_aug/audio_aug_20250827164703.py +0 -471
- neverlib/.history/audio_aug/audio_aug_20250827164749.py +0 -471
- neverlib/.history/audio_aug/audio_aug_20250827165252.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827165334.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827165404.py +0 -473
- neverlib/.history/audio_aug/audio_aug_20250827165610.py +0 -473
- neverlib/.history/audio_aug/audio_aug_20250827165805.py +0 -473
- neverlib/.history/audio_aug/audio_aug_20250827170056.py +0 -473
- neverlib/.history/audio_aug/audio_aug_20250827170106.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827170143.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827170216.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827170218.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827170314.py +0 -472
- neverlib/.history/audio_aug/audio_aug_20250827171500.py +0 -471
- neverlib/.history/audio_aug/audio_aug_20250827172347.py +0 -471
- neverlib/.history/audio_aug/audio_aug_20250827172558.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827172559.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827172801.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827182522.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827182526.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827182626.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250827182715.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250904185444.py +0 -470
- neverlib/.history/audio_aug/audio_aug_20250904185538.py +0 -445
- neverlib/.history/dataAnalyze/__init___20250805234204.py +0 -87
- neverlib/.history/dataAnalyze/__init___20250806204125.py +0 -14
- neverlib/.history/dataAnalyze/__init___20250806204139.py +0 -14
- neverlib/.history/dataAnalyze/__init___20250806204159.py +0 -14
- neverlib/.history/data_analyze/__init___20250806204158.py +0 -14
- neverlib/.history/data_analyze/__init___20250827163248.py +0 -14
- neverlib/.history/filter/__init___20250820103351.py +0 -70
- neverlib/.history/filter/__init___20250821102348.py +0 -70
- neverlib/.history/filter/__init___20250821102405.py +0 -14
- neverlib/.history/filter/auto_eq/__init___20250819213121.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102241.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102259.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102307.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102310.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102318.py +0 -36
- neverlib/.history/filter/auto_eq/__init___20250821102507.py +0 -36
- neverlib/.history/filter/auto_eq/de_eq_20250820103848.py +0 -361
- neverlib/.history/filter/auto_eq/de_eq_20250821102422.py +0 -360
- neverlib/.history/filter/auto_eq/freq_eq_20250805234206.py +0 -75
- neverlib/.history/filter/auto_eq/freq_eq_20250820140732.py +0 -75
- neverlib/.history/filter/auto_eq/freq_eq_20250820140745.py +0 -75
- neverlib/.history/filter/auto_eq/freq_eq_20250820140816.py +0 -75
- neverlib/.history/filter/auto_eq/freq_eq_20250820140938.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141003.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141006.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141019.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141049.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141211.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141227.py +0 -77
- neverlib/.history/filter/auto_eq/freq_eq_20250820141311.py +0 -78
- neverlib/.history/filter/auto_eq/freq_eq_20250820141340.py +0 -78
- neverlib/.history/filter/auto_eq/freq_eq_20250820141712.py +0 -78
- neverlib/.history/filter/auto_eq/freq_eq_20250820141733.py +0 -78
- neverlib/.history/filter/auto_eq/freq_eq_20250820141755.py +0 -78
- neverlib/.history/filter/auto_eq/freq_eq_20250821102434.py +0 -76
- neverlib/.history/filter/auto_eq/freq_eq_20250821102500.py +0 -76
- neverlib/.history/filter/auto_eq/freq_eq_20250821102502.py +0 -76
- neverlib/.history/filter/auto_eq/freq_eq_20250821143140.py +0 -76
- neverlib/.history/filter/auto_eq/freq_eq_20250821153208.py +0 -76
- neverlib/.history/filter/auto_eq/freq_eq_20250821153214.py +0 -76
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250820102957.py +0 -380
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113054.py +0 -380
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113150.py +0 -380
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113520.py +0 -385
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250820113525.py +0 -385
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250821102212.py +0 -385
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110521.py +0 -385
- neverlib/.history/filter/auto_eq/ga_eq_basic_20250901110652.py +0 -385
- neverlib/.history/filter/common_20250806002134.py +0 -37
- neverlib/.history/filter/common_20250821120448.py +0 -49
- neverlib/.history/filter/common_20250821120453.py +0 -49
- neverlib/.history/metrics/dnsmos_20250806001612.py +0 -160
- neverlib/.history/metrics/dnsmos_20250815180659.py +0 -160
- neverlib/.history/metrics/dnsmos_20250815180701.py +0 -158
- neverlib/.history/metrics/dnsmos_20250815181321.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181327.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181331.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181620.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181631.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181742.py +0 -154
- neverlib/.history/metrics/dnsmos_20250815181824.py +0 -153
- neverlib/.history/metrics/dnsmos_20250815181834.py +0 -153
- neverlib/.history/metrics/dnsmos_20250815181922.py +0 -153
- neverlib/.history/metrics/dnsmos_20250815182011.py +0 -147
- neverlib/.history/metrics/dnsmos_20250815182036.py +0 -144
- neverlib/.history/metrics/dnsmos_20250815182936.py +0 -143
- neverlib/.history/metrics/dnsmos_20250815182942.py +0 -143
- neverlib/.history/metrics/dnsmos_20250815183032.py +0 -137
- neverlib/.history/metrics/dnsmos_20250815183101.py +0 -144
- neverlib/.history/metrics/dnsmos_20250815183121.py +0 -144
- neverlib/.history/metrics/dnsmos_20250815183123.py +0 -143
- neverlib/.history/metrics/dnsmos_20250815183214.py +0 -143
- neverlib/.history/metrics/dnsmos_20250815183240.py +0 -143
- neverlib/.history/metrics/dnsmos_20250815183248.py +0 -144
- neverlib/.history/metrics/dnsmos_20250815183407.py +0 -142
- neverlib/.history/metrics/dnsmos_20250815183409.py +0 -142
- neverlib/.history/metrics/dnsmos_20250815183431.py +0 -142
- neverlib/.history/metrics/dnsmos_20250815183507.py +0 -140
- neverlib/.history/metrics/dnsmos_20250815183513.py +0 -139
- neverlib/.history/metrics/dnsmos_20250815183618.py +0 -139
- neverlib/.history/metrics/dnsmos_20250815183709.py +0 -140
- neverlib/.history/metrics/dnsmos_20250815183756.py +0 -137
- neverlib/.history/metrics/dnsmos_20250815183815.py +0 -128
- neverlib/.history/metrics/dnsmos_20250815183827.py +0 -129
- neverlib/.history/metrics/dnsmos_20250815183913.py +0 -117
- neverlib/.history/metrics/dnsmos_20250815183914.py +0 -117
- neverlib/.history/metrics/dnsmos_20250815184003.py +0 -118
- neverlib/.history/metrics/dnsmos_20250815184040.py +0 -118
- neverlib/.history/metrics/dnsmos_20250815184049.py +0 -118
- neverlib/.history/metrics/dnsmos_20250815184104.py +0 -117
- neverlib/.history/metrics/dnsmos_20250815184200.py +0 -117
- neverlib/.history/metrics/lpc_lsp_metric_20250816015944.py +0 -128
- neverlib/.history/metrics/lpc_lsp_metric_20250816020142.py +0 -128
- neverlib/.history/metrics/lpc_lsp_metric_20250816020156.py +0 -128
- neverlib/.history/metrics/lpc_lsp_metric_20250816020554.py +0 -130
- neverlib/.history/metrics/lpc_lsp_metric_20250816020600.py +0 -125
- neverlib/.history/metrics/lpc_lsp_metric_20250816020631.py +0 -120
- neverlib/.history/metrics/lpc_lsp_metric_20250816020746.py +0 -118
- neverlib/.history/metrics/lpc_me_20250816013111.py +0 -0
- neverlib/.history/metrics/lpc_me_20250816013129.py +0 -121
- neverlib/.history/metrics/lpc_me_20250816015430.py +0 -103
- neverlib/.history/metrics/lpc_me_20250816015535.py +0 -96
- neverlib/.history/metrics/lpc_me_20250816015542.py +0 -96
- neverlib/.history/metrics/lpc_me_20250816015636.py +0 -97
- neverlib/.history/metrics/lpc_me_20250816015658.py +0 -104
- neverlib/.history/metrics/lpc_me_20250816015703.py +0 -100
- neverlib/.history/metrics/lpc_me_20250816015945.py +0 -128
- neverlib/.history/metrics/snr_20250806010538.py +0 -177
- neverlib/.history/metrics/snr_20250806211634.py +0 -184
- neverlib/.history/metrics/snr_20250827224201.py +0 -182
- neverlib/.history/metrics/snr_20250827234019.py +0 -186
- neverlib/.history/metrics/snr_20250827234028.py +0 -186
- neverlib/.history/metrics/snr_20250827234030.py +0 -186
- neverlib/.history/metrics/spec_20250805234209.py +0 -45
- neverlib/.history/metrics/spec_20250816135530.py +0 -11
- neverlib/.history/metrics/spec_20250816135654.py +0 -16
- neverlib/.history/metrics/spec_20250816135736.py +0 -68
- neverlib/.history/metrics/spec_20250816135904.py +0 -75
- neverlib/.history/metrics/spec_20250816135921.py +0 -82
- neverlib/.history/metrics/spec_20250816140111.py +0 -82
- neverlib/.history/metrics/spec_20250816140543.py +0 -136
- neverlib/.history/metrics/spec_20250816140559.py +0 -172
- neverlib/.history/metrics/spec_20250816140602.py +0 -172
- neverlib/.history/metrics/spec_20250816140608.py +0 -172
- neverlib/.history/metrics/spec_20250816140654.py +0 -148
- neverlib/.history/metrics/spec_20250816140705.py +0 -144
- neverlib/.history/metrics/spec_20250816140755.py +0 -138
- neverlib/.history/metrics/spec_20250816140823.py +0 -170
- neverlib/.history/metrics/spec_20250816140832.py +0 -170
- neverlib/.history/metrics/spec_20250816140833.py +0 -170
- neverlib/.history/metrics/spec_20250816140922.py +0 -147
- neverlib/.history/metrics/spec_20250816141148.py +0 -107
- neverlib/.history/metrics/spec_20250816141219.py +0 -123
- neverlib/.history/metrics/spec_20250816141732.py +0 -178
- neverlib/.history/metrics/spec_20250816141740.py +0 -178
- neverlib/.history/metrics/spec_20250816142030.py +0 -178
- neverlib/.history/metrics/spec_20250816142107.py +0 -135
- neverlib/.history/metrics/spec_20250816142126.py +0 -135
- neverlib/.history/metrics/spec_20250816142410.py +0 -135
- neverlib/.history/metrics/spec_20250816142415.py +0 -136
- neverlib/.history/metrics/spec_metric_20250816135156.py +0 -0
- neverlib/.history/metrics/spec_metric_20250816135226.py +0 -5
- neverlib/.history/metrics/spec_metric_20250816135227.py +0 -10
- neverlib/.history/metrics/spec_metric_20250816135306.py +0 -15
- neverlib/.history/metrics/spec_metric_20250816135442.py +0 -31
- neverlib/.history/metrics/spec_metric_20250816135448.py +0 -31
- neverlib/.history/metrics/spec_metric_20250816135520.py +0 -29
- neverlib/.history/metrics/spec_metric_20250816135537.py +0 -63
- neverlib/.history/metrics/spec_metric_20250816135653.py +0 -65
- neverlib/.history/utils/audio_split_20250805234209.py +0 -268
- neverlib/.history/utils/audio_split_20250904185309.py +0 -268
- neverlib/.history/utils/utils_20250813165516.py +0 -330
- neverlib/.history/utils/utils_20250904181341.py +0 -328
- neverlib/.history/utils/utils_20250904185546.py +0 -352
- neverlib/.history/utils/utils_20250904185548.py +0 -353
- neverlib/.history/utils/utils_20250904185603.py +0 -353
- neverlib/.history/utils/utils_20250904185636.py +0 -353
- neverlib/.history/utils/utils_20250904185658.py +0 -358
- neverlib/.history/utils/utils_20250904190053.py +0 -359
- neverlib/.history/vad/PreProcess_20250805234211.py +0 -63
- neverlib/.history/vad/PreProcess_20250809232455.py +0 -63
- neverlib/.history/vad/PreProcess_20250816020725.py +0 -66
- neverlib/.history/vad/VAD_Silero_20250805234211.py +0 -50
- neverlib/.history/vad/VAD_Silero_20250809232456.py +0 -50
- neverlib/.history/vad/VAD_WebRTC_20250805234211.py +0 -61
- neverlib/.history/vad/VAD_WebRTC_20250809232456.py +0 -61
- neverlib/.history/vad/VAD_funasr_20250805234211.py +0 -54
- neverlib/.history/vad/VAD_funasr_20250809232456.py +0 -54
- neverlib/.history/vad/VAD_vadlib_20250805234211.py +0 -70
- neverlib/.history/vad/VAD_vadlib_20250809232455.py +0 -70
- neverlib/.history/vad/VAD_whisper_20250805234211.py +0 -55
- neverlib/.history/vad/VAD_whisper_20250809232456.py +0 -55
- neverlib/.specstory/.what-is-this.md +0 -69
- 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/.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/.specstory/history/2025-08-26_11-54Z-oserror-missing-shared-object-file.md +0 -87
- 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/.specstory/history/2025-08-27_08-29Z-delete-python-file-command.md +0 -211
- 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.8.dist-info/RECORD +0 -510
- {neverlib-0.2.8.dist-info → neverlib-0.2.9.dist-info}/WHEEL +0 -0
- {neverlib-0.2.8.dist-info → neverlib-0.2.9.dist-info}/licenses/LICENSE +0 -0
- {neverlib-0.2.8.dist-info → neverlib-0.2.9.dist-info}/top_level.txt +0 -0
|
@@ -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()
|
|
Binary file
|
neverlib/QA/out.pcm
ADDED
|
Binary file
|
neverlib/QA/out.wav
ADDED
|
Binary file
|
neverlib/audio_aug/__init__.py
CHANGED
|
@@ -1,20 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .HarmonicDistortion import apply_harmonic_distortion, apply_pedalboard_distortion
|
|
9
|
-
from .TFMask import FreqMask, TimeMask
|
|
10
|
-
from .audio_aug import 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
|
|
11
|
-
from .clip_aug import clipping_aug
|
|
12
|
-
from .coder_aug import aac_aug_save, amr_nb_aug, amr_wb_aug, flac_aug, flac_encode_save, mp3_aug, opus_aug_save, vorbis_aug
|
|
13
|
-
from .coder_aug2 import apply_codec_distortion, check_codec_available
|
|
14
|
-
from .loss_packet_aug import simulate_packet_loss_vectorized
|
|
15
|
-
from .quant_aug import apply_mulaw_quantization, apply_uniform_quantization
|
|
16
|
-
|
|
17
|
-
# 运行时使用懒加载
|
|
18
3
|
from lazy_loader import attach
|
|
19
4
|
|
|
20
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -41,42 +26,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
41
26
|
"quant_aug": ['apply_mulaw_quantization', 'apply_uniform_quantization'],
|
|
42
27
|
}
|
|
43
28
|
)
|
|
44
|
-
|
|
45
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
46
|
-
if TYPE_CHECKING:
|
|
47
|
-
__all__ = [
|
|
48
|
-
'apply_harmonic_distortion',
|
|
49
|
-
'apply_pedalboard_distortion',
|
|
50
|
-
'FreqMask',
|
|
51
|
-
'TimeMask',
|
|
52
|
-
'add_reverb',
|
|
53
|
-
'get_snr_use_vad',
|
|
54
|
-
'limiter',
|
|
55
|
-
'measure_loudness',
|
|
56
|
-
'snr_aug_Interpolation',
|
|
57
|
-
'snr_aug_changeClean',
|
|
58
|
-
'snr_aug_changeNoise',
|
|
59
|
-
'snr_aug_vad_Interpolation',
|
|
60
|
-
'snr_diff_changeClean',
|
|
61
|
-
'snr_diff_changeNoise',
|
|
62
|
-
'volume_aug',
|
|
63
|
-
'volume_aug_dbrms',
|
|
64
|
-
'volume_aug_linmax',
|
|
65
|
-
'volume_aug_lufs',
|
|
66
|
-
'volume_convert',
|
|
67
|
-
'volume_norm',
|
|
68
|
-
'clipping_aug',
|
|
69
|
-
'aac_aug_save',
|
|
70
|
-
'amr_nb_aug',
|
|
71
|
-
'amr_wb_aug',
|
|
72
|
-
'flac_aug',
|
|
73
|
-
'flac_encode_save',
|
|
74
|
-
'mp3_aug',
|
|
75
|
-
'opus_aug_save',
|
|
76
|
-
'vorbis_aug',
|
|
77
|
-
'apply_codec_distortion',
|
|
78
|
-
'check_codec_available',
|
|
79
|
-
'simulate_packet_loss_vectorized',
|
|
80
|
-
'apply_mulaw_quantization',
|
|
81
|
-
'apply_uniform_quantization',
|
|
82
|
-
]
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .dataset_analyzer import AudioFileInfo, DatasetAnalyzer, analyze_audio_dataset
|
|
9
|
-
from .quality_metrics import QualityAnalyzer, audio_health_check, comprehensive_quality_assessment
|
|
10
|
-
from .rms_distrubution import get_rms_vad
|
|
11
|
-
from .spectral_analysis import SpectralAnalyzer, compute_spectral_features, frequency_domain_stats
|
|
12
|
-
from .statistics import AudioStatistics, compare_datasets, quick_audio_stats
|
|
13
|
-
from .temporal_features import dB, dc_offset, max_rms_amplitude, mean_rms_amplitude, min_rms_amplitude, peak_amplitude, rms_amplitude, short_time_energy, zero_crossing_rate
|
|
14
|
-
from .visualization import AudioVisualizer, create_analysis_dashboard, plot_dataset_overview
|
|
15
|
-
|
|
16
|
-
# 运行时使用懒加载
|
|
17
3
|
from lazy_loader import attach
|
|
18
4
|
|
|
19
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -37,33 +23,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
37
23
|
"visualization": ['AudioVisualizer', 'create_analysis_dashboard', 'plot_dataset_overview'],
|
|
38
24
|
}
|
|
39
25
|
)
|
|
40
|
-
|
|
41
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
42
|
-
if TYPE_CHECKING:
|
|
43
|
-
__all__ = [
|
|
44
|
-
'AudioFileInfo',
|
|
45
|
-
'DatasetAnalyzer',
|
|
46
|
-
'analyze_audio_dataset',
|
|
47
|
-
'QualityAnalyzer',
|
|
48
|
-
'audio_health_check',
|
|
49
|
-
'comprehensive_quality_assessment',
|
|
50
|
-
'get_rms_vad',
|
|
51
|
-
'SpectralAnalyzer',
|
|
52
|
-
'compute_spectral_features',
|
|
53
|
-
'frequency_domain_stats',
|
|
54
|
-
'AudioStatistics',
|
|
55
|
-
'compare_datasets',
|
|
56
|
-
'quick_audio_stats',
|
|
57
|
-
'dB',
|
|
58
|
-
'dc_offset',
|
|
59
|
-
'max_rms_amplitude',
|
|
60
|
-
'mean_rms_amplitude',
|
|
61
|
-
'min_rms_amplitude',
|
|
62
|
-
'peak_amplitude',
|
|
63
|
-
'rms_amplitude',
|
|
64
|
-
'short_time_energy',
|
|
65
|
-
'zero_crossing_rate',
|
|
66
|
-
'AudioVisualizer',
|
|
67
|
-
'create_analysis_dashboard',
|
|
68
|
-
'plot_dataset_overview',
|
|
69
|
-
]
|
neverlib/filter/__init__.py
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .biquad import BiquadFilter
|
|
9
|
-
from .common import HPFilter, HPFilter_torch, LPFilter
|
|
10
|
-
from .core import EQFilter, EQ_test, eq_process, eq_process_test
|
|
11
|
-
|
|
12
|
-
# 运行时使用懒加载
|
|
13
3
|
from lazy_loader import attach
|
|
14
4
|
|
|
15
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -25,16 +15,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
25
15
|
"core": ['EQFilter', 'EQ_test', 'eq_process', 'eq_process_test'],
|
|
26
16
|
}
|
|
27
17
|
)
|
|
28
|
-
|
|
29
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
30
|
-
if TYPE_CHECKING:
|
|
31
|
-
__all__ = [
|
|
32
|
-
'BiquadFilter',
|
|
33
|
-
'HPFilter',
|
|
34
|
-
'HPFilter_torch',
|
|
35
|
-
'LPFilter',
|
|
36
|
-
'EQFilter',
|
|
37
|
-
'EQ_test',
|
|
38
|
-
'eq_process',
|
|
39
|
-
'eq_process_test',
|
|
40
|
-
]
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .de_eq import get_filter_function, match_frequency_response, plot_spectra_comparison
|
|
9
|
-
from .freq_eq import get_freq_eq
|
|
10
|
-
from .ga_eq_advanced import EQConfig, EQOptimizer, load_config_from_yaml, main
|
|
11
|
-
from .ga_eq_basic import custom_mutate, evaluate_individual, generate_active_gene, generate_dbgain_gene, generate_fc_gene, generate_q_gene, generate_type_gene, get_combined_eq_response_db, get_magnitude_spectrum_db, get_single_filter_freq_response_db_from_coeffs, individual_creator, main_ga
|
|
12
|
-
|
|
13
|
-
# 运行时使用懒加载
|
|
14
3
|
from lazy_loader import attach
|
|
15
4
|
|
|
16
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -28,28 +17,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
28
17
|
"ga_eq_basic": ['custom_mutate', 'evaluate_individual', 'generate_active_gene', 'generate_dbgain_gene', 'generate_fc_gene', 'generate_q_gene', 'generate_type_gene', 'get_combined_eq_response_db', 'get_magnitude_spectrum_db', 'get_single_filter_freq_response_db_from_coeffs', 'individual_creator', 'main_ga'],
|
|
29
18
|
}
|
|
30
19
|
)
|
|
31
|
-
|
|
32
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
33
|
-
if TYPE_CHECKING:
|
|
34
|
-
__all__ = [
|
|
35
|
-
'get_filter_function',
|
|
36
|
-
'match_frequency_response',
|
|
37
|
-
'plot_spectra_comparison',
|
|
38
|
-
'get_freq_eq',
|
|
39
|
-
'EQConfig',
|
|
40
|
-
'EQOptimizer',
|
|
41
|
-
'load_config_from_yaml',
|
|
42
|
-
'main',
|
|
43
|
-
'custom_mutate',
|
|
44
|
-
'evaluate_individual',
|
|
45
|
-
'generate_active_gene',
|
|
46
|
-
'generate_dbgain_gene',
|
|
47
|
-
'generate_fc_gene',
|
|
48
|
-
'generate_q_gene',
|
|
49
|
-
'generate_type_gene',
|
|
50
|
-
'get_combined_eq_response_db',
|
|
51
|
-
'get_magnitude_spectrum_db',
|
|
52
|
-
'get_single_filter_freq_response_db_from_coeffs',
|
|
53
|
-
'individual_creator',
|
|
54
|
-
'main_ga',
|
|
55
|
-
]
|
neverlib/filter/core.py
CHANGED
|
@@ -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
|
neverlib/metrics/__init__.py
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .dnsmos import ComputeScore
|
|
9
|
-
from .lpc_lsp import framing, lpc_lsp_distance, lpc_to_lsp
|
|
10
|
-
from .snr import get_snr, get_snr_from_noisy, psnr, seg_snr, si_sdr
|
|
11
|
-
from .spec import lsd, mcd, sd
|
|
12
|
-
from .test_pesq import mos2pesq, pesq2mos
|
|
13
|
-
from .time import dc_offset, mean_rms_amplitude, peak_amplitude, rms_amplitude
|
|
14
|
-
|
|
15
|
-
# 运行时使用懒加载
|
|
16
3
|
from lazy_loader import attach
|
|
17
4
|
|
|
18
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -34,26 +21,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
34
21
|
"time": ['dc_offset', 'mean_rms_amplitude', 'peak_amplitude', 'rms_amplitude'],
|
|
35
22
|
}
|
|
36
23
|
)
|
|
37
|
-
|
|
38
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
39
|
-
if TYPE_CHECKING:
|
|
40
|
-
__all__ = [
|
|
41
|
-
'ComputeScore',
|
|
42
|
-
'framing',
|
|
43
|
-
'lpc_lsp_distance',
|
|
44
|
-
'lpc_to_lsp',
|
|
45
|
-
'get_snr',
|
|
46
|
-
'get_snr_from_noisy',
|
|
47
|
-
'psnr',
|
|
48
|
-
'seg_snr',
|
|
49
|
-
'si_sdr',
|
|
50
|
-
'lsd',
|
|
51
|
-
'mcd',
|
|
52
|
-
'sd',
|
|
53
|
-
'mos2pesq',
|
|
54
|
-
'pesq2mos',
|
|
55
|
-
'dc_offset',
|
|
56
|
-
'mean_rms_amplitude',
|
|
57
|
-
'peak_amplitude',
|
|
58
|
-
'rms_amplitude',
|
|
59
|
-
]
|
neverlib/metrics/pesq_c/PESQ
CHANGED
|
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() # 回收进程池
|
neverlib/tests/__init__.py
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .test_preprocess import test_NS_shape, test_pre_emphasis
|
|
9
|
-
from .test_vad import test_vad2nad
|
|
10
|
-
|
|
11
|
-
# 运行时使用懒加载
|
|
12
3
|
from lazy_loader import attach
|
|
13
4
|
|
|
14
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -23,11 +14,3 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
23
14
|
"test_vad": ['test_vad2nad'],
|
|
24
15
|
}
|
|
25
16
|
)
|
|
26
|
-
|
|
27
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
28
|
-
if TYPE_CHECKING:
|
|
29
|
-
__all__ = [
|
|
30
|
-
'test_NS_shape',
|
|
31
|
-
'test_pre_emphasis',
|
|
32
|
-
'test_vad2nad',
|
|
33
|
-
]
|
neverlib/utils/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
prsync
|
|
2
|
+
来源:https://github.com/nathanhaigh/parallel-rsync
|
|
3
|
+
用法
|
|
4
|
+
如果您的命令如下所示:rsync
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
rsync \
|
|
8
|
+
--times --recursive --progress \
|
|
9
|
+
--exclude "raw_reads" --exclude ".snakemake" \
|
|
10
|
+
user@example.com:/my_remote_dir/ /my_local_dir/
|
|
11
|
+
```
|
|
12
|
+
只需替换此脚本的可执行文件:rsync
|
|
13
|
+
```bash
|
|
14
|
+
./prsync \
|
|
15
|
+
--times --recursive --progress \
|
|
16
|
+
--exclude "raw_reads" --exclude ".snakemake" \
|
|
17
|
+
user@example.com:/my_remote_dir/ /my_local_dir/
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
并行作业数
|
|
21
|
+
默认情况下,脚本将为计算机上的每个处理器使用 1 个并行作业。 这是由确定的,如果失败,我们将回退到并行作业来传输文件。
|
|
22
|
+
可以通过使用作为脚本的第一个命令行参数来覆盖此行为:```nproc 10 --parallel```
|
|
23
|
+
```bash
|
|
24
|
+
./prsync \
|
|
25
|
+
--parallel=20 \
|
|
26
|
+
--times --recursive --progress \
|
|
27
|
+
--exclude "raw_reads" --exclude ".snakemake" \
|
|
28
|
+
user@example.com:/my_remote_dir/ /my_local_dir/
|
|
29
|
+
```
|
neverlib/utils/__init__.py
CHANGED
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated. Do NOT edit manually.
|
|
2
2
|
# Generated by neverlib.QA.gen_init
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# 仅在类型检查时导入,提供IDE补全支持
|
|
8
|
-
from .audio_split import audio_split_VADfunasr, audio_split_VADsilero, audio_split_ffmpeg, audio_split_np, audio_split_pydub, audio_split_random, audio_split_sox
|
|
9
|
-
from .checkGPU import get_gpu_utilization, is_gpu_idle, monitor_gpu_utilization
|
|
10
|
-
from .lazy_expose import attach_and_expose_all
|
|
11
|
-
from .lazy_module import LazyModule
|
|
12
|
-
from .message import send_QQEmail, send_QQEmail_with_images
|
|
13
|
-
from .utils import DatasetSubfloderSplit, TrainValSplit, TrainValTestSplit, del_empty_folders, get_audio_segments, get_file_time, \
|
|
14
|
-
get_leaf_folders, get_path_list, pcm2wav, read_pcm, rename_files_and_folders, save_weight_histogram, wav2pcm, EPS
|
|
15
|
-
|
|
16
|
-
# 运行时使用懒加载
|
|
17
3
|
from lazy_loader import attach
|
|
18
4
|
|
|
19
5
|
__getattr__, __dir__, __all__ = attach(
|
|
@@ -21,51 +7,21 @@ __getattr__, __dir__, __all__ = attach(
|
|
|
21
7
|
submodules=[
|
|
22
8
|
"audio_split",
|
|
23
9
|
"checkGPU",
|
|
10
|
+
"floder",
|
|
24
11
|
"lazy_expose",
|
|
25
12
|
"lazy_module",
|
|
26
13
|
"message",
|
|
14
|
+
"pcm",
|
|
27
15
|
"utils",
|
|
28
16
|
],
|
|
29
17
|
submod_attrs={
|
|
30
18
|
"audio_split": ['audio_split_VADfunasr', 'audio_split_VADsilero', 'audio_split_ffmpeg', 'audio_split_np', 'audio_split_pydub', 'audio_split_random', 'audio_split_sox'],
|
|
31
|
-
"checkGPU": ['get_gpu_utilization', '
|
|
19
|
+
"checkGPU": ['get_gpu_utilization', 'get_gpu_utilization2', 'monitor_gpu_utilization'],
|
|
20
|
+
"floder": ['change_path', 'del_empty_folders', 'get_leaf_folders', 'rename_files_and_folders'],
|
|
32
21
|
"lazy_expose": ['attach_and_expose_all'],
|
|
33
22
|
"lazy_module": ['LazyModule'],
|
|
34
23
|
"message": ['send_QQEmail', 'send_QQEmail_with_images'],
|
|
35
|
-
"
|
|
36
|
-
|
|
24
|
+
"pcm": ['pcm2wav', 'read_pcm', 'wav2pcm'],
|
|
25
|
+
"utils": ['DatasetSubfloderSplit', 'TrainValSplit', 'TrainValTestSplit', 'get_audio_segments', 'get_file_time', 'get_path_list', 'save_weight_histogram'],
|
|
37
26
|
}
|
|
38
27
|
)
|
|
39
|
-
|
|
40
|
-
# 显式声明 __all__ 以便 IDE 识别
|
|
41
|
-
if TYPE_CHECKING:
|
|
42
|
-
__all__ = [
|
|
43
|
-
'audio_split_VADfunasr',
|
|
44
|
-
'audio_split_VADsilero',
|
|
45
|
-
'audio_split_ffmpeg',
|
|
46
|
-
'audio_split_np',
|
|
47
|
-
'audio_split_pydub',
|
|
48
|
-
'audio_split_random',
|
|
49
|
-
'audio_split_sox',
|
|
50
|
-
'get_gpu_utilization',
|
|
51
|
-
'is_gpu_idle',
|
|
52
|
-
'monitor_gpu_utilization',
|
|
53
|
-
'attach_and_expose_all',
|
|
54
|
-
'LazyModule',
|
|
55
|
-
'send_QQEmail',
|
|
56
|
-
'send_QQEmail_with_images',
|
|
57
|
-
'DatasetSubfloderSplit',
|
|
58
|
-
'TrainValSplit',
|
|
59
|
-
'TrainValTestSplit',
|
|
60
|
-
'del_empty_folders',
|
|
61
|
-
'get_audio_segments',
|
|
62
|
-
'get_file_time',
|
|
63
|
-
'get_leaf_folders',
|
|
64
|
-
'get_path_list',
|
|
65
|
-
'pcm2wav',
|
|
66
|
-
'read_pcm',
|
|
67
|
-
'rename_files_and_folders',
|
|
68
|
-
'save_weight_histogram',
|
|
69
|
-
'wav2pcm',
|
|
70
|
-
'EPS',
|
|
71
|
-
]
|