neverlib 0.2.6__py3-none-any.whl → 0.2.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. neverlib/.claude/settings.local.json +9 -0
  2. neverlib/Docs/audio_aug/test_volume.ipynb +416 -0
  3. neverlib/Docs/audio_aug_test/test_volume.ipynb +289 -0
  4. neverlib/Docs/filter/biquad.ipynb +129 -0
  5. neverlib/Docs/filter/filter_family.ipynb +450 -0
  6. neverlib/Docs/filter/highpass.ipynb +139 -0
  7. neverlib/Docs/filter/scipy_filter_family.ipynb +110 -0
  8. neverlib/Docs/vad/VAD_Energy.ipynb +167 -0
  9. neverlib/Docs/vad/VAD_Silero.ipynb +325 -0
  10. neverlib/Docs/vad/VAD_WebRTC.ipynb +189 -0
  11. neverlib/Docs/vad/VAD_funasr.ipynb +192 -0
  12. neverlib/Docs/vad/VAD_rvADfast.ipynb +162 -0
  13. neverlib/Docs/vad/VAD_statistics.ipynb +532 -0
  14. neverlib/Docs/vad/VAD_tenVAD.ipynb +292 -0
  15. neverlib/Docs/vad/VAD_vadlib.ipynb +168 -0
  16. neverlib/Docs/vad/VAD_whisper.ipynb +404 -0
  17. neverlib/QA/gen_init.py +218 -0
  18. neverlib/QA/get_fun.py +19 -0
  19. neverlib/__init__.py +40 -4
  20. neverlib/audio_aug/HarmonicDistortion.py +19 -13
  21. neverlib/audio_aug/__init__.py +82 -12
  22. neverlib/audio_aug/audio_aug.py +19 -14
  23. neverlib/audio_aug/clip_aug.py +15 -18
  24. neverlib/audio_aug/coder_aug.py +44 -24
  25. neverlib/audio_aug/coder_aug2.py +54 -37
  26. neverlib/audio_aug/loss_packet_aug.py +7 -7
  27. neverlib/audio_aug/quant_aug.py +19 -17
  28. neverlib/data/000_short_enhance.wav +0 -0
  29. neverlib/data/3956_speech.wav +0 -0
  30. neverlib/data/3956_sweep.wav +0 -0
  31. neverlib/data/vad_example.wav +0 -0
  32. neverlib/data/white.wav +0 -0
  33. neverlib/data/white_EQ.wav +0 -0
  34. neverlib/data/white_matched.wav +0 -0
  35. neverlib/data_analyze/__init__.py +69 -20
  36. neverlib/data_analyze/dataset_analyzer.py +109 -114
  37. neverlib/data_analyze/quality_metrics.py +87 -89
  38. neverlib/data_analyze/rms_distrubution.py +23 -42
  39. neverlib/data_analyze/spectral_analysis.py +43 -46
  40. neverlib/data_analyze/statistics.py +76 -76
  41. neverlib/data_analyze/temporal_features.py +15 -6
  42. neverlib/data_analyze/visualization.py +208 -144
  43. neverlib/filter/__init__.py +40 -20
  44. neverlib/filter/auto_eq/__init__.py +50 -31
  45. neverlib/filter/auto_eq/de_eq.py +0 -2
  46. neverlib/filter/common.py +24 -5
  47. neverlib/metrics/DNSMOS/bak_ovr.onnx +0 -0
  48. neverlib/metrics/DNSMOS/model_v8.onnx +0 -0
  49. neverlib/metrics/DNSMOS/sig.onnx +0 -0
  50. neverlib/metrics/DNSMOS/sig_bak_ovr.onnx +0 -0
  51. neverlib/metrics/__init__.py +59 -0
  52. neverlib/metrics/dnsmos.py +4 -15
  53. neverlib/metrics/pDNSMOS/sig_bak_ovr.onnx +0 -0
  54. neverlib/metrics/pesq_c/PESQ +0 -0
  55. neverlib/metrics/pesq_c/dsp.c +553 -0
  56. neverlib/metrics/pesq_c/dsp.h +138 -0
  57. neverlib/metrics/pesq_c/pesq.h +294 -0
  58. neverlib/metrics/pesq_c/pesqdsp.c +1047 -0
  59. neverlib/metrics/pesq_c/pesqio.c +392 -0
  60. neverlib/metrics/pesq_c/pesqmain.c +610 -0
  61. neverlib/metrics/pesq_c/pesqmod.c +1417 -0
  62. neverlib/metrics/pesq_c/pesqpar.h +297 -0
  63. neverlib/metrics/snr.py +5 -1
  64. neverlib/metrics/spec.py +31 -21
  65. neverlib/metrics/test_pesq.py +0 -4
  66. neverlib/tests/__init__.py +33 -1
  67. neverlib/tests/test_imports.py +19 -0
  68. neverlib/utils/__init__.py +71 -15
  69. neverlib/utils/audio_split.py +6 -1
  70. neverlib/utils/checkGPU.py +17 -9
  71. neverlib/utils/lazy_expose.py +29 -0
  72. neverlib/utils/utils.py +55 -12
  73. neverlib/vad/PreProcess.py +66 -66
  74. neverlib/vad/__init__.py +71 -25
  75. neverlib/vad/class_get_speech.py +1 -1
  76. neverlib/vad/class_vad.py +3 -3
  77. neverlib/vad/img.png +0 -0
  78. {neverlib-0.2.6.dist-info → neverlib-0.2.8.dist-info}/METADATA +1 -1
  79. {neverlib-0.2.6.dist-info → neverlib-0.2.8.dist-info}/RECORD +82 -39
  80. {neverlib-0.2.6.dist-info → neverlib-0.2.8.dist-info}/WHEEL +0 -0
  81. {neverlib-0.2.6.dist-info → neverlib-0.2.8.dist-info}/licenses/LICENSE +0 -0
  82. {neverlib-0.2.6.dist-info → neverlib-0.2.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,29 @@
1
+ from lazy_loader import attach
2
+ import importlib
3
+
4
+
5
+ def attach_and_expose_all(pkg_name: str, g: dict, submodules, submod_attrs=None):
6
+ submod_attrs = submod_attrs or {}
7
+ _getattr, _dir, _all = attach(pkg_name, submodules=submodules, submod_attrs=submod_attrs)
8
+ _all_set = set(_all)
9
+
10
+ def __getattr__(name: str):
11
+ try:
12
+ return _getattr(name)
13
+ except AttributeError:
14
+ for mod in submodules:
15
+ m = importlib.import_module(f"{pkg_name}.{mod}")
16
+ if hasattr(m, name) and not name.startswith("_"):
17
+ obj = getattr(m, name)
18
+ g[name] = obj
19
+ _all_set.add(name)
20
+ return obj
21
+ raise
22
+
23
+ def __dir__():
24
+ # 避免为补全而导入所有子模块,保持冷启动轻量
25
+ # 仅返回 attach 提供的名称 + 已经懒暴露过的名称
26
+ return sorted(set(_dir()) | _all_set)
27
+
28
+ g["__all__"] = sorted(_all_set)
29
+ return __getattr__, __dir__, g["__all__"]
neverlib/utils/utils.py CHANGED
@@ -12,6 +12,7 @@ from tqdm import tqdm
12
12
  from datetime import datetime
13
13
  import soundfile as sf
14
14
  import numpy as np
15
+
15
16
  EPS = np.finfo(float).eps
16
17
 
17
18
 
@@ -28,7 +29,10 @@ def get_path_list(source_path, end="*.wav", shuffle=False):
28
29
  return wav_list
29
30
 
30
31
 
31
- def get_audio_segments(sentence_len, wav_path_list, sr=16000, insert_silence=None):
32
+ def get_audio_segments(sentence_len,
33
+ wav_path_list,
34
+ sr=16000,
35
+ insert_silence=None):
32
36
  """
33
37
  从音频列表中随机拼接指定长度音频
34
38
  Args:
@@ -102,7 +106,8 @@ def TrainValSplit(dataset_dir, train_dir, val_dir, percentage=0.9):
102
106
  total_wav_num = len(wav_path_list)
103
107
  # 计算训练集和验证集的分割点
104
108
  split_idx = int(total_wav_num * percentage)
105
- train_path_list, val_path_list = wav_path_list[:split_idx], wav_path_list[split_idx:]
109
+ train_path_list, val_path_list = wav_path_list[:split_idx], wav_path_list[
110
+ split_idx:]
106
111
 
107
112
  for train_wavpath in tqdm(train_path_list, desc="Copying train wav"):
108
113
  target_path = train_wavpath.replace(dataset_dir, train_dir)
@@ -119,7 +124,11 @@ def TrainValSplit(dataset_dir, train_dir, val_dir, percentage=0.9):
119
124
  print("Done!")
120
125
 
121
126
 
122
- def TrainValTestSplit(dataset_dir, train_dir, val_dir, test_dir, percentage=[0.8, 0.1, 0.1]):
127
+ def TrainValTestSplit(dataset_dir,
128
+ train_dir,
129
+ val_dir,
130
+ test_dir,
131
+ percentage=[0.8, 0.1, 0.1]):
123
132
  """ 分割数据集为训练集、验证集和测试集
124
133
  :param dataset_dir: 源数据集地址
125
134
  :param train_dir: 训练集地址
@@ -160,7 +169,9 @@ def TrainValTestSplit(dataset_dir, train_dir, val_dir, test_dir, percentage=[0.8
160
169
  os.makedirs(os.path.split(target_path)[0])
161
170
  shutil.copy(test_wavpath, target_path)
162
171
 
163
- print(f"完成! 训练集: {len(train_path_list)}个文件, 验证集: {len(val_path_list)}个文件, 测试集: {len(test_path_list)}个文件")
172
+ print(
173
+ f"完成! 训练集: {len(train_path_list)}个文件, 验证集: {len(val_path_list)}个文件, 测试集: {len(test_path_list)}个文件"
174
+ )
164
175
 
165
176
 
166
177
  def get_leaf_folders(directory):
@@ -178,7 +189,10 @@ def del_empty_folders(path):
178
189
  return
179
190
 
180
191
  # 获取子文件夹
181
- subfolders = [os.path.join(path, d) for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))]
192
+ subfolders = [
193
+ os.path.join(path, d) for d in os.listdir(path)
194
+ if os.path.isdir(os.path.join(path, d))
195
+ ]
182
196
 
183
197
  # 递归处理子文件夹
184
198
  for subfolder in subfolders:
@@ -254,7 +268,8 @@ def DatasetSubfloderSplit(source_dir, split_dirs, percentage=None):
254
268
 
255
269
  # 复制文件夹
256
270
  split_names = ['train', 'val', 'test']
257
- for folders, target_dir, split_name in zip(split_folder_lists, split_dirs, split_names[:len(split_dirs)]):
271
+ for folders, target_dir, split_name in zip(split_folder_lists, split_dirs,
272
+ split_names[:len(split_dirs)]):
258
273
  for folder in tqdm(folders, desc=f"Copying {split_name} folders"):
259
274
  target_folder = folder.replace(source_dir, target_dir)
260
275
  os.makedirs(os.path.dirname(target_folder), exist_ok=True)
@@ -262,7 +277,8 @@ def DatasetSubfloderSplit(source_dir, split_dirs, percentage=None):
262
277
 
263
278
  # 打印统计信息
264
279
  print(f"Total folders: {total_folder_num}")
265
- for folders, split_name in zip(split_folder_lists, split_names[:len(split_dirs)]):
280
+ for folders, split_name in zip(split_folder_lists,
281
+ split_names[:len(split_dirs)]):
266
282
  print(f"{split_name.capitalize()} folders: {len(folders)}")
267
283
 
268
284
 
@@ -290,7 +306,11 @@ def wav2pcm(wav_path, pcm_path):
290
306
  data.tofile(pcm_path)
291
307
 
292
308
 
293
- def save_weight_histogram(model, save_dir, mode=["params", "buffers"], ignore_name=["scale", "bias"], bins=100):
309
+ def save_weight_histogram(model,
310
+ save_dir,
311
+ mode=["params", "buffers"],
312
+ ignore_name=["scale", "bias"],
313
+ bins=100):
294
314
  """
295
315
  保存模型权重分布直方图
296
316
  Args:
@@ -322,11 +342,15 @@ def save_weight_histogram(model, save_dir, mode=["params", "buffers"], ignore_na
322
342
  plt.ylabel("count")
323
343
  plt.grid(alpha=0.5)
324
344
  # 在右上角添加统计信息
325
- plt.text(1, 1, f"max: {param_max:.2f}\n \
345
+ plt.text(1,
346
+ 1,
347
+ f"max: {param_max:.2f}\n \
326
348
  min: {param_min:.2f}\n \
327
349
  mean: {param_mean:.2f}\n \
328
350
  std: {param_std:.2f}",
329
- ha='right', va='top', transform=plt.gca().transAxes)
351
+ ha='right',
352
+ va='top',
353
+ transform=plt.gca().transAxes)
330
354
  plt.hist(param, bins=bins)
331
355
  plt.savefig(os.path.join(save_dir, "param", f"{name}.png"))
332
356
  plt.close()
@@ -349,11 +373,30 @@ def save_weight_histogram(model, save_dir, mode=["params", "buffers"], ignore_na
349
373
  plt.ylabel("count")
350
374
  plt.grid(alpha=0.5)
351
375
  # 在右上角添加统计信息
352
- plt.text(1, 1, f"max: {buffer_max:.2f}\n \
376
+ plt.text(1,
377
+ 1,
378
+ f"max: {buffer_max:.2f}\n \
353
379
  min: {buffer_min:.2f}\n \
354
380
  mean: {buffer_mean:.2f}\n \
355
381
  std: {buffer_std:.2f}",
356
- ha='right', va='top', transform=plt.gca().transAxes)
382
+ ha='right',
383
+ va='top',
384
+ transform=plt.gca().transAxes)
357
385
  plt.hist(buffer, bins=bins)
358
386
  plt.savefig(os.path.join(save_dir, "buffer", f"{name}.png"))
359
387
  plt.close()
388
+
389
+
390
+ def read_pcm(file_path, channels=5, sample_rate=16000, sample_width=2):
391
+ # Read raw binary data from the PCM file
392
+ with open(file_path, 'rb') as f:
393
+ raw_data = f.read()
394
+
395
+ # Convert binary data to numpy array of the correct dtype
396
+ audio_data = np.frombuffer(raw_data, dtype=np.int16)
397
+
398
+ # Reshape the data into a 2D array with shape (num_frames, channels)
399
+ num_frames = len(audio_data) // channels
400
+ audio_data = audio_data.reshape((num_frames, channels))
401
+
402
+ return audio_data
@@ -1,66 +1,66 @@
1
- '''
2
- Author: 凌逆战 | Never
3
- Date: 2025-02-13 20:06:07
4
- LastEditTime: 2025-08-16 02:07:24
5
- FilePath: \neverlib\vad\PreProcess.py
6
- Description:
7
- '''
8
- # -*- coding:utf-8 -*-
9
- # Author:凌逆战 | Never
10
- # Date: 2024/9/14
11
- """
12
- 通过一些预处理方法, 来提高VAD的准确率
13
- """
14
- import numpy as np
15
- import noisereduce as nr
16
-
17
-
18
- def pre_emphasis(audio_data, alpha=0.97):
19
- """
20
- 预加重
21
- """
22
- # y(n)=x(n)−α⋅x(n−1)
23
- emphasized_audio = np.append(audio_data[0], audio_data[1:] - alpha * audio_data[:-1])
24
- return emphasized_audio
25
-
26
-
27
- def NS(wav, sr=16000, stationary=True, prop_decrease=1.):
28
- """ 传统降噪 Doc: https://pypi.org/project/noisereduce/
29
- :param wav: (xxx,) or (channels, xxx)
30
- :param sr: 采样率
31
- :param stationary: 平稳降噪还是非平稳降噪
32
- :param prop_decrease: 0~1, 降噪噪声百分比
33
- :return:
34
- """
35
- if stationary:
36
- # 平稳噪声抑制 stationary=True
37
- reduced_noise = nr.reduce_noise(y=wav, sr=sr, stationary=True,
38
- prop_decrease=prop_decrease, # 降噪噪声的比例
39
- )
40
- else:
41
- # 非平稳噪声抑制 stationary=False
42
- reduced_noise = nr.reduce_noise(y=wav, sr=sr, stationary=False,
43
- prop_decrease=prop_decrease,
44
- )
45
- return reduced_noise
46
-
47
-
48
- def NS_test():
49
- import soundfile as sf
50
- sr = 16000
51
- wav_path = "../../data/vad_example.wav"
52
- wav, wav_sr = sf.read(wav_path, always_2d=False, dtype="float32")
53
- wav_NS = NS(wav, sr=sr, stationary=True, prop_decrease=0.6)
54
- sf.write("../../wav_data/000_short_NS.wav", wav_NS, samplerate=sr)
55
-
56
- # 绘制降噪后的频谱图
57
- import matplotlib.pyplot as plt
58
- plt.subplot(211)
59
- plt.specgram(wav, Fs=sr, scale_by_freq=True, sides='default', cmap="jet")
60
- plt.subplot(212)
61
- plt.specgram(wav_NS, Fs=sr, scale_by_freq=True, sides='default', cmap="jet")
62
- plt.show()
63
-
64
-
65
- if __name__ == "__main__":
66
- NS_test()
1
+ '''
2
+ Author: 凌逆战 | Never
3
+ Date: 2025-02-13 20:06:07
4
+ LastEditTime: 2025-08-16 02:07:24
5
+ FilePath: \\neverlib\\vad\\PreProcess.py
6
+ Description:
7
+ '''
8
+ # -*- coding:utf-8 -*-
9
+ # Author:凌逆战 | Never
10
+ # Date: 2024/9/14
11
+ """
12
+ 通过一些预处理方法, 来提高VAD的准确率
13
+ """
14
+ import numpy as np
15
+ import noisereduce as nr
16
+
17
+
18
+ def pre_emphasis(audio_data, alpha=0.97):
19
+ """
20
+ 预加重
21
+ """
22
+ # y(n)=x(n)−α⋅x(n−1)
23
+ emphasized_audio = np.append(audio_data[0], audio_data[1:] - alpha * audio_data[:-1])
24
+ return emphasized_audio
25
+
26
+
27
+ def NS(wav, sr=16000, stationary=True, prop_decrease=1.):
28
+ """ 传统降噪 Doc: https://pypi.org/project/noisereduce/
29
+ :param wav: (xxx,) or (channels, xxx)
30
+ :param sr: 采样率
31
+ :param stationary: 平稳降噪还是非平稳降噪
32
+ :param prop_decrease: 0~1, 降噪噪声百分比
33
+ :return:
34
+ """
35
+ if stationary:
36
+ # 平稳噪声抑制 stationary=True
37
+ reduced_noise = nr.reduce_noise(y=wav, sr=sr, stationary=True,
38
+ prop_decrease=prop_decrease, # 降噪噪声的比例
39
+ )
40
+ else:
41
+ # 非平稳噪声抑制 stationary=False
42
+ reduced_noise = nr.reduce_noise(y=wav, sr=sr, stationary=False,
43
+ prop_decrease=prop_decrease,
44
+ )
45
+ return reduced_noise
46
+
47
+
48
+ def NS_test():
49
+ import soundfile as sf
50
+ sr = 16000
51
+ wav_path = "../../data/vad_example.wav"
52
+ wav, wav_sr = sf.read(wav_path, always_2d=False, dtype="float32")
53
+ wav_NS = NS(wav, sr=sr, stationary=True, prop_decrease=0.6)
54
+ sf.write("../../wav_data/000_short_NS.wav", wav_NS, samplerate=sr)
55
+
56
+ # 绘制降噪后的频谱图
57
+ import matplotlib.pyplot as plt
58
+ plt.subplot(211)
59
+ plt.specgram(wav, Fs=sr, scale_by_freq=True, sides='default', cmap="jet")
60
+ plt.subplot(212)
61
+ plt.specgram(wav_NS, Fs=sr, scale_by_freq=True, sides='default', cmap="jet")
62
+ plt.show()
63
+
64
+
65
+ if __name__ == "__main__":
66
+ NS_test()
neverlib/vad/__init__.py CHANGED
@@ -1,25 +1,71 @@
1
- # -*- coding:utf-8 -*-
2
- # Author:凌逆战 | Never
3
- # Date: 2024/5/17
4
- """
5
- 节省路径
6
- from neverlib.vad import EnergyVad_C
7
- 如果没有用户必须完整路径
8
- from neverlib.vad.VAD_Energy import EnergyVad_C
9
- """
10
- from lazy_loader import attach
11
-
12
- __getattr__, __dir__, __all__ = attach(
13
- __name__,
14
- submodules=["PreProcess", "VAD_Energy", "VAD_funasr", "VAD_Silero", "VAD_statistics", "VAD_vadlib", "VAD_WebRTC", "VAD_whisper", "utils"],
15
- submod_attrs={
16
- "VAD_Energy": ["EnergyVad_C"],
17
- "VAD_funasr": ["FunASR_VAD_C"],
18
- "VAD_Silero": ["Silero_VAD_C"],
19
- "VAD_statistics": ["Statistics_VAD"],
20
- "VAD_vadlib": ["Vadlib_C"],
21
- "VAD_WebRTC": ["WebRTC_VAD_C"],
22
- "VAD_whisper": ["Whisper_VAD_C"],
23
- "utils": ["from_vadArray_to_vadEndpoint", "vad2nad"],
24
- },
25
- )
1
+ # This file is auto-generated. Do NOT edit manually.
2
+ # Generated by neverlib.QA.gen_init
3
+
4
+ from typing import TYPE_CHECKING, Any
5
+
6
+ if TYPE_CHECKING:
7
+ # 仅在类型检查时导入,提供IDE补全支持
8
+ from .PreProcess import NS, NS_test, pre_emphasis
9
+ from .VAD_Energy import EnergyVad_C
10
+ from .VAD_Silero import Silero_VAD_C
11
+ from .VAD_WebRTC import WebRTC_VAD_C
12
+ from .VAD_funasr import FunASR_VAD_C
13
+ from .VAD_statistics import Statistics_VAD
14
+ from .VAD_vadlib import Vadlib_C
15
+ from .VAD_whisper import Whisper_VAD_C
16
+ from .class_get_speech import getSpeech
17
+ from .class_vad import VADClass
18
+ from .utils import from_vadArray_to_vadEndpoint, vad2nad, vad_smooth
19
+
20
+ # 运行时使用懒加载
21
+ from lazy_loader import attach
22
+
23
+ __getattr__, __dir__, __all__ = attach(
24
+ __name__,
25
+ submodules=[
26
+ "PreProcess",
27
+ "VAD_Energy",
28
+ "VAD_Silero",
29
+ "VAD_WebRTC",
30
+ "VAD_funasr",
31
+ "VAD_statistics",
32
+ "VAD_vadlib",
33
+ "VAD_whisper",
34
+ "class_get_speech",
35
+ "class_vad",
36
+ "utils",
37
+ ],
38
+ submod_attrs={
39
+ "PreProcess": ['NS', 'NS_test', 'pre_emphasis'],
40
+ "VAD_Energy": ['EnergyVad_C'],
41
+ "VAD_Silero": ['Silero_VAD_C'],
42
+ "VAD_WebRTC": ['WebRTC_VAD_C'],
43
+ "VAD_funasr": ['FunASR_VAD_C'],
44
+ "VAD_statistics": ['Statistics_VAD'],
45
+ "VAD_vadlib": ['Vadlib_C'],
46
+ "VAD_whisper": ['Whisper_VAD_C'],
47
+ "class_get_speech": ['getSpeech'],
48
+ "class_vad": ['VADClass'],
49
+ "utils": ['from_vadArray_to_vadEndpoint', 'vad2nad', 'vad_smooth'],
50
+ }
51
+ )
52
+
53
+ # 显式声明 __all__ 以便 IDE 识别
54
+ if TYPE_CHECKING:
55
+ __all__ = [
56
+ 'NS',
57
+ 'NS_test',
58
+ 'pre_emphasis',
59
+ 'EnergyVad_C',
60
+ 'Silero_VAD_C',
61
+ 'WebRTC_VAD_C',
62
+ 'FunASR_VAD_C',
63
+ 'Statistics_VAD',
64
+ 'Vadlib_C',
65
+ 'Whisper_VAD_C',
66
+ 'getSpeech',
67
+ 'VADClass',
68
+ 'from_vadArray_to_vadEndpoint',
69
+ 'vad2nad',
70
+ 'vad_smooth',
71
+ ]
@@ -7,9 +7,9 @@
7
7
  import os
8
8
  import numpy as np
9
9
  import soundfile as sf
10
- from pydub.silence import split_on_silence
11
10
  from vad import EnergyVAD
12
11
  from pydub import AudioSegment
12
+ from pydub.silence import split_on_silence
13
13
 
14
14
 
15
15
  class getSpeech():
neverlib/vad/class_vad.py CHANGED
@@ -5,9 +5,8 @@
5
5
  一个包含众多VAD方法的类
6
6
  来源参考README
7
7
  """
8
- import numpy as np
9
- import soundfile as sf
10
8
  import torch
9
+ import soundfile as sf
11
10
 
12
11
 
13
12
  class VADClass():
@@ -94,7 +93,8 @@ class VADClass():
94
93
  timestamps = []
95
94
  for chunk in result['chunks']:
96
95
  word_start, word_end = chunk['timestamp'][0], chunk['timestamp'][1]
97
- if word_end == None: word_end = len(wav) / self.sr
96
+ if word_end == None:
97
+ word_end = len(wav) / self.sr
98
98
  timestamps.append({"start": int(word_start * self.sr), "end": int(word_end * self.sr)})
99
99
  return timestamps
100
100
 
neverlib/vad/img.png ADDED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neverlib
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Summary: A successful sign for python setup
5
5
  Author-email: "Never.Ling" <1786088386@qq.com>
6
6
  License: MIT
@@ -1,4 +1,5 @@
1
- neverlib/__init__.py,sha256=zz5VnrI59Wl6wBRV5lbkViWeQHlR76cOJcPnzU9m1hc,945
1
+ neverlib/__init__.py,sha256=Kq_ZWgw8gFiqQIN2gPzXkgti_zXUi2DYx0CD-88ExZU,2048
2
+ neverlib/.claude/settings.local.json,sha256=nBol-eXbiZ3FMr1a7e6ls6CO9nwz5f3quPjEQzMkTyQ,126
2
3
  neverlib/.history/__init___20250805234212.py,sha256=RuVTeJiZfStZ12eMlEfTZ8ZjiC5RBaIQFht-bzMWdTs,1158
3
4
  neverlib/.history/__init___20250904102635.py,sha256=7G8jWnR8puUua7yvH63_AKM6rWGq0IvwgrincgrEs58,1081
4
5
  neverlib/.history/__init___20250904102836.py,sha256=R97n26izUmzFvB1K1e3Z4RA3-g0e6SBt_mI3YfsopO8,1002
@@ -399,55 +400,96 @@ neverlib/.specstory/history/2025-08-26_11-54Z-oserror-missing-shared-object-file
399
400
  neverlib/.specstory/history/2025-08-27_08-07Z-完善测试文档的讨论.md,sha256=1QlRvAsGRy11OvTjRbXj1Pd5ndaYku4gZL-yscFghZQ,9812
400
401
  neverlib/.specstory/history/2025-08-27_08-29Z-delete-python-file-command.md,sha256=rP1_LF0NhulirxWVgovUTOw7nu57LOg9ze4zMW-m21E,22061
401
402
  neverlib/.specstory/history/2025-08-27_09-05Z-在jupyter中播放音频的代码修改.md,sha256=87oxKHccYOlALgF9L7WW860Cjb_xjToCxDzAG4CXuQg,11587
403
+ neverlib/Docs/audio_aug/test_volume.ipynb,sha256=K2qXRe8Md8rfiKsOhsGqAuEzxj2EPvAdRGaXDl0YrYY,18375
402
404
  neverlib/Docs/audio_aug_test/test_snr.py,sha256=1BRUzTYL37pblvhHNB0ORtrbNyxTFWytAxlJ8CDSwfM,1317
405
+ neverlib/Docs/audio_aug_test/test_volume.ipynb,sha256=ZKDPm7Dr8ooZvO6nItshiVIY7jkh2a5AcmUw4wqsB0k,1843460
403
406
  neverlib/Docs/audio_aug_test/test_volume.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
407
+ neverlib/Docs/filter/biquad.ipynb,sha256=CRKHXUozpTaZXpdZSBRas3776SONAOUrWbkjYlMbvgY,3091
408
+ neverlib/Docs/filter/filter_family.ipynb,sha256=EgXqDgP52KpdXkU_gPROb6ks5vZPzUVNf9Swrry0RRk,1135214
409
+ neverlib/Docs/filter/highpass.ipynb,sha256=-sT6-xH9zV7mR6wWZ9Jnqt9lbUEajGafbhGvUVY98IY,40181
410
+ neverlib/Docs/filter/scipy_filter_family.ipynb,sha256=dLhf4BG3KF6jlfiPKeq6Rl5DrUnx0jDx74an4J7ktGk,79092
411
+ neverlib/Docs/vad/VAD_Energy.ipynb,sha256=qqw6_YwRGAbMcU2_F-1XXomU-y42HDY9WYCMxQVvD58,317091
412
+ neverlib/Docs/vad/VAD_Silero.ipynb,sha256=LREAdVkgdKW_XB5N6SFkHHCRqTkkQxigWOFH9Vhxops,303837
413
+ neverlib/Docs/vad/VAD_WebRTC.ipynb,sha256=n5lmmFEnrr5ESigMq_yAwTdVz6jaD84fHwEIf5JnOUg,324763
414
+ neverlib/Docs/vad/VAD_funasr.ipynb,sha256=-4KVReX7IqKfufBHk0oTEYNfzaqlJE5mDuYC8TGhv7U,251035
415
+ neverlib/Docs/vad/VAD_rvADfast.ipynb,sha256=YszYIEG_qVUU2hzvbraY4y5fdMToT--50Za1A3IBozc,252432
416
+ neverlib/Docs/vad/VAD_statistics.ipynb,sha256=wT0k_91YUpLLIt6LZMKrjvJLk4kz8g-fZdBvVH07O2k,346246
417
+ neverlib/Docs/vad/VAD_tenVAD.ipynb,sha256=w8oOBVeabW44Fw7TF6CSxIqa3u1gGydoMuWSxE7slaA,351893
418
+ neverlib/Docs/vad/VAD_vadlib.ipynb,sha256=m55oKqOGeMOSgmQlbMkOR6zVh5_Hn6SIocHi6mOtg1k,300998
419
+ neverlib/Docs/vad/VAD_whisper.ipynb,sha256=P78NqxCfwbbEJYQsqA1NV8vpxQxWNxy2lDX85zO_yD4,364207
420
+ neverlib/QA/gen_init.py,sha256=9QysSB2vk1OR9FmuuKcFtShtiJeCTnvvg6RBlxOUcQU,8127
421
+ neverlib/QA/get_fun.py,sha256=-UP2FOm3jB_138ntpbsW0eG1S0tJ0d90NqI6f95ryYg,541
404
422
  neverlib/QA/html2markdown.py,sha256=ZiXvpwcJ_QBhIR6aetaMOmktWHtd_F7Ed07Deo3qM4c,669
405
- neverlib/audio_aug/HarmonicDistortion.py,sha256=iA6dY42pqA_4I1K4CX1GSqe1Y0urtprtQ9RuB_V4hXA,2382
423
+ neverlib/audio_aug/HarmonicDistortion.py,sha256=MqbfcdWJLtl_WGloQYDa6fIB6QCgukYdjoxsj8X03kk,2706
406
424
  neverlib/audio_aug/TFDrop.py,sha256=HDLf5qfqMT73-dxKder0v0AT7b0FYsSlexbbh3sL2iM,987
407
425
  neverlib/audio_aug/TFMask.py,sha256=Fakx5YTj88bZEdj_w3aH9Z9AhEGzGq01TZcnjF4v4BU,1769
408
- neverlib/audio_aug/__init__.py,sha256=BCQf6gQbw8i2nXRc8Cf_4-zU4LvZaCS_bUR6BHohC4M,223
409
- neverlib/audio_aug/audio_aug.py,sha256=OxxZ2R5ClilAod0tX3nGD2PoakuonNcaMIqfAw_Aafc,16506
410
- neverlib/audio_aug/clip_aug.py,sha256=fm24KrilyvuIV3oD5mFaUsmNDOEq9VKBMFJ9NtYARkI,1071
411
- neverlib/audio_aug/coder_aug.py,sha256=lRUx8jwKev8lio2op2X41qv6mMO9uxskcVrR1xFE1MM,7628
412
- neverlib/audio_aug/coder_aug2.py,sha256=QlSieScNqqZ80mAzk22OlLCdiC81H3dVdt4z3cOVnW0,4305
413
- neverlib/audio_aug/loss_packet_aug.py,sha256=Ch5GLyF_NqCGzC6Qt3JEu6qp9A6HvYc4zGCUkz9QEUc,4825
414
- neverlib/audio_aug/quant_aug.py,sha256=GHSpUXnMEjmcituQfUEBESPuhDl3Ql2vQkCOr1wTk7U,2381
426
+ neverlib/audio_aug/__init__.py,sha256=5mBg5p8aDHvOPlRSmR-ojGhtxaJTFCmCZUltaj2RPAs,3313
427
+ neverlib/audio_aug/audio_aug.py,sha256=5Eqtx_v2RLtNEwh1gTyfqSHBirwz1JCgDrjgt4WYBlY,16674
428
+ neverlib/audio_aug/clip_aug.py,sha256=xZi89AtdOgUpX7W4x4_UiZFeK-oCWktueoWSEAY19hU,1041
429
+ neverlib/audio_aug/coder_aug.py,sha256=1JtNadfUVbOw8Xg3vpp0cTl87HHuDedHZ3zbUZ2fWW0,8347
430
+ neverlib/audio_aug/coder_aug2.py,sha256=wniOuOWb3vLqgi8N-oDEfTHuEtQtWZ5O4HhmUfflIlM,4733
431
+ neverlib/audio_aug/loss_packet_aug.py,sha256=z0H6u4ug6FAd2beVYeUQR24GiDg-dfdeEhOTPpGiMms,4862
432
+ neverlib/audio_aug/quant_aug.py,sha256=yUH28tED-oYJxrD3z4rjitDKM6S1ZDtkHtjM2-NSSZY,2608
433
+ neverlib/data/000_short_enhance.wav,sha256=TUZSjHareIY3BFlgZiDuffzirpxnEKagnQDVwDYLdgk,216356
434
+ neverlib/data/3956_speech.wav,sha256=wehCr85ITMOmkQWi1DnjRzb2ggC-XJUftZ3_9sARvS8,2977476
435
+ neverlib/data/3956_sweep.wav,sha256=DoLnlIkYGSuraIE7nWK4nAvmgGWWW4VuhI7xDoMrLys,813832
436
+ neverlib/data/vad_example.wav,sha256=xvcEvjmdjeZO-1fT7u0m0EuiJAqeXUWjBWewDWd8guY,216812
437
+ neverlib/data/white.wav,sha256=JJ3aaPx8v7WakYU7U--m0kO1qUkDSMOrOrPKi6RqAA0,325086
438
+ neverlib/data/white_EQ.wav,sha256=UN1W0hH_4JInnye9vIsQlagVXM-rnJPd1j7A_RIia8c,325086
439
+ neverlib/data/white_matched.wav,sha256=h9vD-2q1eKw9s8pVUoIeXXjeKEC-VRiNABCY-CYcUQ0,115514
415
440
  neverlib/data_analyze/README.md,sha256=jqPmD--kinoTqlcpu51teospu9p_ijjtjLdFGTMnBc8,6051
416
- neverlib/data_analyze/__init__.py,sha256=wTs_8Ppvkk3LbQB0WwHvd-XVYZ_0rhJVcUWmqWlG1PQ,487
417
- neverlib/data_analyze/dataset_analyzer.py,sha256=V4eK1rjR1gO3V_HC7wlSBotoCApmQdlK52CaSgAG-o8,22909
418
- neverlib/data_analyze/quality_metrics.py,sha256=Z57TipRlUBne7b0hoyLmd8erbruR2JMDJuh4pbQJeFs,12261
419
- neverlib/data_analyze/rms_distrubution.py,sha256=o2cpa-25e_2RFYlsPb4AXYgjSpk2sKSOOJkXt93kcy0,1836
420
- neverlib/data_analyze/spectral_analysis.py,sha256=ItsAf_KBuWwELOMHnX836_AgDUeeB0aIzmXKj0LwrXA,6206
421
- neverlib/data_analyze/statistics.py,sha256=H60D5JqMdkE3b9Qu8XgZjQUKUPCPl0rFiERJy2U1r3o,13314
422
- neverlib/data_analyze/temporal_features.py,sha256=TrKaJ-XgrqjtCDGvQ6zIelIBz2M1cVSYn8wLTPa95Og,2689
423
- neverlib/data_analyze/visualization.py,sha256=MAjkju2hyM-5zczG3Sn_PXonjuxjeieHuaEWFDSYnNY,15101
441
+ neverlib/data_analyze/__init__.py,sha256=3Gl_o2s9OYmy1r7UZLxKZGwwOXJYuQ__F1RM578lvAI,2781
442
+ neverlib/data_analyze/dataset_analyzer.py,sha256=JawpMrahP2YD9mX6kIGJrBRtC7sqYJJdY1R5pGBUDDY,21902
443
+ neverlib/data_analyze/quality_metrics.py,sha256=wOivyQ4JXdyiq1STLCSdBDtoW8Kju-Zc1RZMyPNmNjY,11726
444
+ neverlib/data_analyze/rms_distrubution.py,sha256=EpK9s7WJLtJHXd1xD8SvuiyPVTguouYVHyS7Lha2Qag,1526
445
+ neverlib/data_analyze/spectral_analysis.py,sha256=-QZGSvopovLaSh7OcJLYKFH9YLIp_THXUEV3uOreHz0,5894
446
+ neverlib/data_analyze/statistics.py,sha256=9b9S_7eBoklNfz9cRAs8oWlRnDSjuark4SwTrdFkAGw,12957
447
+ neverlib/data_analyze/temporal_features.py,sha256=qrxA0Uh-DxRPbuILQle66AAgv4SgwiLoPTIR9Q2_Jz4,3065
448
+ neverlib/data_analyze/visualization.py,sha256=kaJBfh1ixlGeVfr4yNRfZlzTvfhbdnIW4LOhbGqwYKM,16439
424
449
  neverlib/filter/README.md,sha256=X1VQRnSxzjkeR_16ylbAqRbYLAlf4c5stkHzmWlCzlo,3801
425
- neverlib/filter/__init__.py,sha256=wCkO_Z2wPw1SnPZ-O0fYQ1r5PDqhidmZqHTE32icSJ8,445
450
+ neverlib/filter/__init__.py,sha256=oQJLBqxGpC1T-DmHbcSceY9Ir31VXqknzoRNQRAGChI,1019
426
451
  neverlib/filter/biquad.py,sha256=EEGAqGwTQGG5O49Q855hb475WVX0oOu3zq-Gn_ppIto,1438
427
- neverlib/filter/common.py,sha256=peGja9A_Lcdvv6gzuOQAhuH9UwpQ3ZVwDSvVMJf_LWo,1408
452
+ neverlib/filter/common.py,sha256=9FD3VKwRpe_IdQujt2AJjlMJ_WR-YNEY8OmhOQUDDO8,1953
428
453
  neverlib/filter/core.py,sha256=qr-0IGEEpiSUFgo_uVOXJLLZeaSDFlALzg_b8mEivrY,13091
429
454
  neverlib/filter/auto_eq/README.md,sha256=-qcqLxIQPo31YfzABHK-_tcqksLdOTHz8ZG3izz46Ug,4968
430
- neverlib/filter/auto_eq/__init__.py,sha256=G8hPMz8bzjCYamqcytiGtpe7bSd4YTHVGXUbuK5_zmg,872
431
- neverlib/filter/auto_eq/de_eq.py,sha256=DqXPyvwO_Kzkcrg5DInGCCKgl2Q8NxeV88LsNvvZAqQ,16444
455
+ neverlib/filter/auto_eq/__init__.py,sha256=RWgAXvBWBDboBxzlPBQJWwQLPctniIAZBXZRQAC_QFw,2190
456
+ neverlib/filter/auto_eq/de_eq.py,sha256=XlbFWDPOdGHI97fbU9wXd4h3Aiosv1T5k_e-VEUcDMQ,16411
432
457
  neverlib/filter/auto_eq/freq_eq.py,sha256=1b5hnoqUy1zxVd2WSNqhpokAgJo0xTRwR5AyVPaMr3E,3494
433
458
  neverlib/filter/auto_eq/ga_eq_advanced.py,sha256=qu9J5ugWeEAcXboV9Fv1g60bMOkIebw9ZwYT_zQq5pI,23458
434
459
  neverlib/filter/auto_eq/ga_eq_basic.py,sha256=gbPqJcimrThzhCjgWkg4DuWpeswRRqxNKMC4I07rp6g,15431
435
- neverlib/metrics/dnsmos.py,sha256=tXDxd0ToEjbO8cYMyAF50mV6FxyK6oJ1i4_5Yi6srjI,4753
460
+ neverlib/metrics/__init__.py,sha256=NCE7SOoA2UXu4aVmiF0oWvvdS9RaqR9tSY7PZjzDNew,1628
461
+ neverlib/metrics/dnsmos.py,sha256=xfrKxYR9mMDkr2HQ7AT_7V-TtdRpy2MybjsJ2AuLXus,4590
436
462
  neverlib/metrics/lpc_lsp.py,sha256=OXKfillGKo55M2aa7LzyvDGcjtOxdOJquWgqC1yV4Ho,3710
437
- neverlib/metrics/snr.py,sha256=cr776eQgg4Z0uYihFMQq9PtBtprsjvs95nGH_GsmTko,6212
438
- neverlib/metrics/spec.py,sha256=4jrmf5dynkLkXV6PxERQQK7HbKE6euw0T85aJSZtro4,5131
439
- neverlib/metrics/test_pesq.py,sha256=J3b0do3wPaj6Fv4WalYAEebtX_nhquhItCf7041I2tI,1252
463
+ neverlib/metrics/snr.py,sha256=l8cYOUuEYeKc5LzQ3q5n4-wql3PcuJfEYcsjBAEQt5w,6360
464
+ neverlib/metrics/spec.py,sha256=OtiHaoHzRuxHtLSS5HVmaisJsD2SPi13T3MphGyeUHc,5442
465
+ neverlib/metrics/test_pesq.py,sha256=nrvd5p3JnMO5jgAuFwmm4rNoZ7riczsB8iFu1Jx8Gxs,1211
440
466
  neverlib/metrics/time.py,sha256=MSUdaT3WvFRnL_wvjZEGjwcVrsy7KwArz3hLkYcXF7s,1292
441
- neverlib/tests/__init__.py,sha256=PITL4btOVji1rexFP35A20v2gcLqc6vmGWiF-_5ywnI,27
467
+ neverlib/metrics/DNSMOS/bak_ovr.onnx,sha256=XzNckJlGGBUBkqZWpHS8-KnLztvEeWVJS6jaeWBdEwg,742375
468
+ neverlib/metrics/DNSMOS/model_v8.onnx,sha256=kkZIDFhWe8av_UIAk4537vSUaMi8ftN3bRCcB0VvbpE,224860
469
+ neverlib/metrics/DNSMOS/sig.onnx,sha256=0vvbKTvCNm37rit0d8SQ-YHSSotEBe_TwReHVpxlSdc,742203
470
+ neverlib/metrics/DNSMOS/sig_bak_ovr.onnx,sha256=Jp--vbUTqiPN37tZNULsxUAoSpGEmsUFFocOGsePbt0,1157965
471
+ neverlib/metrics/pDNSMOS/sig_bak_ovr.onnx,sha256=njoZdEnKIXfwmXr-w71riQEXzi8XuJ1u6n-g1HJyyBw,1157962
472
+ neverlib/metrics/pesq_c/PESQ,sha256=f8qbES1y_94XvHgddOpVqOu0aJBym0z2FXvwq1egBGQ,89400
473
+ neverlib/metrics/pesq_c/dsp.c,sha256=N81r8Hdt-xCUW69ALvECknZHThEhah4okjnxIi1T8Ug,15233
474
+ neverlib/metrics/pesq_c/dsp.h,sha256=I1mOP3JsTNqyEdhI3W3FRBAOltDJnJpXG0ShXbVXM2E,5457
475
+ neverlib/metrics/pesq_c/pesq.h,sha256=wkqE2Vf6EB4QnP16c8jXM-cTBO2SVvmc9JiRNvbHLNs,9430
476
+ neverlib/metrics/pesq_c/pesqdsp.c,sha256=YlGSRes0qJgCyPwe1Zb5bShjGQnDzRE08Ecpv5y0A1E,33879
477
+ neverlib/metrics/pesq_c/pesqio.c,sha256=S8PLwBfx0oHHVLfZ1jUsGbwwMniFhHNNV8X6bcUxFYU,12930
478
+ neverlib/metrics/pesq_c/pesqmain.c,sha256=NaANjEDJrCFwJBbXErX51ZKtE86SHKdrXLhS0P3TbT0,27322
479
+ neverlib/metrics/pesq_c/pesqmod.c,sha256=9stYhCLUShFAd6Zc85nQn57RUKDbS2Q8MrhQFB_-ySA,52999
480
+ neverlib/metrics/pesq_c/pesqpar.h,sha256=XZkwXcwycL8ekK6LQy_PT9Ih2K0zirSPHCMhGKyJExs,20986
481
+ neverlib/tests/__init__.py,sha256=kCV9FZWa7j9g_i6bqb-hEq7pvmWmDz2EMnGX15n7YmE,811
482
+ neverlib/tests/test_imports.py,sha256=3LGZaHZLAz2oJq2ewfRbnWNeAKikHih6d9CIdyqhb0E,547
442
483
  neverlib/tests/test_preprocess.py,sha256=GHj2PvlG8chJlV-zpRfy8IYlTXzGkn5heO9ipy6Xe20,1003
443
484
  neverlib/tests/test_vad.py,sha256=TjBuB_qPooflrjkkvoy19HySdBo-MiVeb5yTmLGBJvM,415
444
- neverlib/utils/__init__.py,sha256=Vct3J6mpfmpJwOZWdFyDp0lcf3mbUgSxnwTBiS60qds,259
445
- neverlib/utils/audio_split.py,sha256=LP08L4VMTKWmus86K0PrFqXWcsGkmAj4gVl2Uqls_c0,12152
446
- neverlib/utils/checkGPU.py,sha256=Wye2UovtVK6Fk8W4wZ3dqaYrdZc30WyW5iGa-6Ouxf0,4075
485
+ neverlib/utils/__init__.py,sha256=A969zG3BBrSVtoZFsm60PolCaH0BI0PflUUubqfVT8M,2727
486
+ neverlib/utils/audio_split.py,sha256=tDWw36FXMIVOZ08PC9KQTYB3Zz_doFcP1ugYdpLkQjQ,12368
487
+ neverlib/utils/checkGPU.py,sha256=OkztJZJxncqSSIttxISpLSgfqa9xjXOaHIuMlRNwX-4,4393
488
+ neverlib/utils/lazy_expose.py,sha256=3h1LidRoab_ylv574-dOBjnJpOKWgLFgXpTWrvqce9E,1027
447
489
  neverlib/utils/lazy_module.py,sha256=JdEdAYnbHmolB-hktrcuOlzR4Ee5jgu6V0XjDNqioVM,3995
448
490
  neverlib/utils/message.py,sha256=XV7m0yUsR7Zq-olS-vL1oUEatSgh-Am8pyB_QPLzQok,4121
449
- neverlib/utils/utils.py,sha256=N28PETG0hbkCYvY_SAWa-FbTdXpApFDXZr4wSH6O26k,14073
450
- neverlib/vad/PreProcess.py,sha256=syd-s4TiQeqvLeQqQRzTzSqeNuMdWnZEIywX24H4Vro,2108
491
+ neverlib/utils/utils.py,sha256=rsKSOuo__ISdmTe1AQhNqFD8ENHl8A60aDEoGUTiBlE,15179
492
+ neverlib/vad/PreProcess.py,sha256=oib4iRfsUXp5U67pKzJF8k53rqjo8NopK_9LW4O8Mqk,2045
451
493
  neverlib/vad/README.md,sha256=3aFnGmz3uhg-kQVOGei40Ei3Lx5P71r2rk0Xl8-JZXI,1490
452
494
  neverlib/vad/VAD_Energy.py,sha256=ErsiDxn4mH_EOiFBRcoBBRqTUsFfEsvEvRELrdZflkw,2135
453
495
  neverlib/vad/VAD_Silero.py,sha256=L9_eO94VQcO3TBdOWypJxnjMl5ZZBYTkL5DR_6APfs4,2324
@@ -456,12 +498,13 @@ neverlib/vad/VAD_funasr.py,sha256=oJqU3VOFT-KXmFV2g8kvT64nHIo5-PxcB4tdb-Ap3Bw,15
456
498
  neverlib/vad/VAD_statistics.py,sha256=o310LKoMECBHO6LcqU3vb-uirF6PM2fHbaRautT2w-w,16663
457
499
  neverlib/vad/VAD_vadlib.py,sha256=5reZ7blu0BsqqO9WJn8YPIvPQVn8VcFPcJnH1scgEzQ,2228
458
500
  neverlib/vad/VAD_whisper.py,sha256=GhBFV-EIS865c-rj2RvM4IUKKG8ZsoD9LCTwrx1Fx2c,1792
459
- neverlib/vad/__init__.py,sha256=agJBf6Bl7WXbnFLBo9Iu8nj0QRZewvtFagpoXQKdf84,838
460
- neverlib/vad/class_get_speech.py,sha256=jbeGNhEYSkvAdf3wdA8J504Uy-plln8-Hu2hNUFEyh8,2074
461
- neverlib/vad/class_vad.py,sha256=XSOOg_TnNXPjaqD3yr9m6_t7jUYQ5NuZJho9lX2JosA,5215
501
+ neverlib/vad/__init__.py,sha256=UflLGnBIUyqIoIuGLThF4vHeKD6pPRMy3mRyXMiUCAk,2035
502
+ neverlib/vad/class_get_speech.py,sha256=s1n24I4P4aTFaQSiyXrh_xAmOChuFZ-wWgrYEE6eCHs,2074
503
+ neverlib/vad/class_vad.py,sha256=ao_20-vyzcI8CxEcvcA_-HoRPTiPEtfuKor2_YWEbz0,5212
504
+ neverlib/vad/img.png,sha256=eLlaUgDnJNyleWZwW8sNv3eXaeaGoXwhFUZCCDJh9u8,179778
462
505
  neverlib/vad/utils.py,sha256=rEWEzGv2E_iTHIdQxY361iEW4Hq9MRDwkMBQMTA9mGw,3049
463
- neverlib-0.2.6.dist-info/licenses/LICENSE,sha256=h-U7vhFdQhieyaNCiA_utrRNMk1rjfrBAUJVodgkfsw,1096
464
- neverlib-0.2.6.dist-info/METADATA,sha256=how_JqPsfEeg9xfAqbPvQYcAXTcHr4vvrjiPQE6yjBA,2811
465
- neverlib-0.2.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
466
- neverlib-0.2.6.dist-info/top_level.txt,sha256=QqwYFuDiY_iFTz0Kx8av6zKCP_s4M5NiMTNsIXOy8Po,9
467
- neverlib-0.2.6.dist-info/RECORD,,
506
+ neverlib-0.2.8.dist-info/licenses/LICENSE,sha256=h-U7vhFdQhieyaNCiA_utrRNMk1rjfrBAUJVodgkfsw,1096
507
+ neverlib-0.2.8.dist-info/METADATA,sha256=8PeHX6no4CgyTvP8c44NjGA4mclVM_22uKbafKoJO9w,2811
508
+ neverlib-0.2.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
509
+ neverlib-0.2.8.dist-info/top_level.txt,sha256=QqwYFuDiY_iFTz0Kx8av6zKCP_s4M5NiMTNsIXOy8Po,9
510
+ neverlib-0.2.8.dist-info/RECORD,,