neverlib 0.2.2__py3-none-any.whl → 0.2.3__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 (60) hide show
  1. neverlib/__init__.py +2 -2
  2. neverlib/audio_aug/__init__.py +1 -1
  3. neverlib/audio_aug/audio_aug.py +4 -5
  4. neverlib/dataAnalyze/README.md +234 -0
  5. neverlib/dataAnalyze/__init__.py +87 -0
  6. neverlib/dataAnalyze/dataset_analyzer.py +590 -0
  7. neverlib/dataAnalyze/quality_metrics.py +364 -0
  8. neverlib/dataAnalyze/rms_distrubution.py +62 -0
  9. neverlib/dataAnalyze/spectral_analysis.py +218 -0
  10. neverlib/dataAnalyze/statistics.py +406 -0
  11. neverlib/dataAnalyze/temporal_features.py +126 -0
  12. neverlib/dataAnalyze/visualization.py +468 -0
  13. neverlib/filter/AudoEQ/README.md +165 -0
  14. neverlib/filter/AudoEQ/auto_eq_de.py +361 -0
  15. neverlib/filter/AudoEQ/auto_eq_ga_advanced.py +577 -0
  16. neverlib/filter/AudoEQ/auto_eq_ga_basic.py +380 -0
  17. neverlib/filter/AudoEQ/auto_eq_spectral_direct.py +75 -0
  18. neverlib/filter/README.md +101 -0
  19. neverlib/filter/__init__.py +7 -0
  20. neverlib/filter/biquad.py +45 -0
  21. neverlib/filter/common.py +5 -6
  22. neverlib/filter/core.py +339 -0
  23. neverlib/metrics/dnsmos.py +160 -0
  24. neverlib/metrics/snr.py +177 -0
  25. neverlib/metrics/spec.py +45 -0
  26. neverlib/metrics/test_pesq.py +35 -0
  27. neverlib/metrics/time.py +68 -0
  28. neverlib/tests/test_vad.py +21 -0
  29. neverlib/utils/audio_split.py +2 -1
  30. neverlib/utils/message.py +4 -4
  31. neverlib/utils/utils.py +32 -15
  32. neverlib/vad/PreProcess.py +1 -1
  33. neverlib/vad/README.md +10 -10
  34. neverlib/vad/VAD_Energy.py +1 -1
  35. neverlib/vad/VAD_Silero.py +1 -1
  36. neverlib/vad/VAD_WebRTC.py +1 -1
  37. neverlib/vad/VAD_funasr.py +1 -1
  38. neverlib/vad/VAD_statistics.py +3 -3
  39. neverlib/vad/VAD_vadlib.py +2 -2
  40. neverlib/vad/VAD_whisper.py +1 -1
  41. neverlib/vad/__init__.py +1 -1
  42. neverlib/vad/class_get_speech.py +4 -4
  43. neverlib/vad/class_vad.py +1 -1
  44. neverlib/vad/utils.py +47 -5
  45. {neverlib-0.2.2.dist-info → neverlib-0.2.3.dist-info}/METADATA +120 -120
  46. neverlib-0.2.3.dist-info/RECORD +53 -0
  47. {neverlib-0.2.2.dist-info → neverlib-0.2.3.dist-info}/WHEEL +1 -1
  48. neverlib/Documents/vad/VAD_Energy.ipynb +0 -159
  49. neverlib/Documents/vad/VAD_Silero.ipynb +0 -305
  50. neverlib/Documents/vad/VAD_WebRTC.ipynb +0 -183
  51. neverlib/Documents/vad/VAD_funasr.ipynb +0 -179
  52. neverlib/Documents/vad/VAD_ppasr.ipynb +0 -175
  53. neverlib/Documents/vad/VAD_statistics.ipynb +0 -522
  54. neverlib/Documents/vad/VAD_vadlib.ipynb +0 -184
  55. neverlib/Documents/vad/VAD_whisper.ipynb +0 -430
  56. neverlib/utils/waveform_analyzer.py +0 -51
  57. neverlib/wav_data/000_short.wav +0 -0
  58. neverlib-0.2.2.dist-info/RECORD +0 -40
  59. {neverlib-0.2.2.dist-info → neverlib-0.2.3.dist-info}/licenses/LICENSE +0 -0
  60. {neverlib-0.2.2.dist-info → neverlib-0.2.3.dist-info}/top_level.txt +0 -0
neverlib/__init__.py CHANGED
@@ -30,10 +30,10 @@ try:
30
30
  if version_match:
31
31
  __version__ = version_match.group(1)
32
32
  except Exception:
33
- pass # 如果出错,使用默认版本号
33
+ pass # 如果出错, 使用默认版本号
34
34
 
35
35
 
36
- # from neverlib import vad # 只导入vad子包,减少内存
36
+ # from neverlib import vad # 只导入vad子包, 减少内存
37
37
  # 如果没有neverlib.utils会报错
38
38
  from . import utils
39
39
  from . import vad
@@ -4,4 +4,4 @@
4
4
  """
5
5
  音频增强模块
6
6
  """
7
- from .audio_aug import * # 导出common模块中的所有函数,包括volume_norm
7
+ from .audio_aug import * # 导出common模块中的所有函数, 包括volume_norm
@@ -8,8 +8,7 @@ import random
8
8
  import numpy as np
9
9
  import soundfile as sf
10
10
  from scipy import signal
11
-
12
- EPS = np.finfo(float).eps
11
+ from utils.utils import EPS
13
12
 
14
13
 
15
14
  def volume_norm(wav):
@@ -32,14 +31,14 @@ def add_reverb(wav, rir, ratio=1, mode="same"):
32
31
  """
33
32
  if random.random() < ratio:
34
33
  wav = signal.fftconvolve(wav, rir, mode=mode) # (28671, 3)
35
- # note: 建议过完添加混响后再进行归一化,否则可能会出现溢出
34
+ # note: 建议过完添加混响后再进行归一化, 否则可能会出现溢出
36
35
  # wav = volume_norm(wav)
37
36
  return wav
38
37
 
39
38
 
40
39
  def snr_aug_changeNoise(clean, noise, snr):
41
40
  """
42
- 保持语音不变,改变噪声的幅度
41
+ 保持语音不变, 改变噪声的幅度
43
42
  snr = 10 * log10(signal_power / k*noise_power)
44
43
  """
45
44
  assert clean.shape == noise.shape, "clean and noise must have the same shape"
@@ -52,7 +51,7 @@ def snr_aug_changeNoise(clean, noise, snr):
52
51
 
53
52
  def snr_aug_changeClean(clean, noise, snr):
54
53
  """
55
- 保持噪声不变,改变语音的幅度
54
+ 保持噪声不变, 改变语音的幅度
56
55
  snr = 10 * log10(k*signal_power/ noise_power)
57
56
  """
58
57
  assert clean.shape == noise.shape, "clean and noise must have the same shape"
@@ -0,0 +1,234 @@
1
+ # 音频数据分析模块 (Audio Data Analysis Module)
2
+
3
+ 这个模块提供了完整的音频数据分析功能, 包括特征提取、质量评估、统计分析和可视化等。
4
+
5
+ ## 模块结构
6
+
7
+ ```
8
+ dataAnalyze/
9
+ ├── __init__.py # 模块初始化
10
+ ├── utils.py # 基础工具函数
11
+ ├── rms_distrubution.py # RMS分布分析
12
+ ├── spectral_analysis.py # 频域分析
13
+ ├── temporal_features.py # 时域特征分析
14
+ ├── quality_metrics.py # 音频质量评估
15
+ ├── statistics.py # 统计分析工具
16
+ ├── visualization.py # 可视化模块
17
+ ├── dataset_analyzer.py # 数据集分析工具
18
+ └── README.md # 说明文档
19
+ ```
20
+
21
+ ## 核心功能
22
+
23
+ ### 1. 频域分析 (spectral_analysis.py)
24
+ - 短时傅里叶变换 (STFT)
25
+ - 频谱分析
26
+ - 谱重心、谱滚降、谱平坦度
27
+ - MFCC特征提取
28
+ - 梅尔频谱图
29
+ - 色度特征
30
+
31
+ ### 2. 时域特征分析 (temporal_features.py)
32
+ - 过零率分析
33
+ - 短时能量分析
34
+ - 自相关分析
35
+ - 音频包络提取
36
+ - 起始点检测
37
+ - 节拍估计
38
+ - 攻击时间和衰减时间
39
+
40
+ ### 3. 音频质量评估 (quality_metrics.py)
41
+ - 信噪比 (SNR) 计算
42
+ - 总谐波失真 (THD) 分析
43
+ - 动态范围分析
44
+ - 频率响应特性
45
+ - 响度范围分析
46
+ - 音频健康检查
47
+
48
+ ### 4. 统计分析工具 (statistics.py)
49
+ - 音频数据集统计信息
50
+ - 时长分布分析
51
+ - 幅度分布统计
52
+ - 频域特征统计
53
+ - 异常值检测
54
+ - 分布分析
55
+
56
+ ### 5. 可视化模块 (visualization.py)
57
+ - 波形图绘制
58
+ - 频谱图和梅尔频谱图
59
+ - 特征对比图
60
+ - 统计分布图
61
+ - 音频对比分析
62
+ - 分析仪表板
63
+
64
+ ### 6. 数据集分析工具 (dataset_analyzer.py)
65
+ - 批量音频文件分析
66
+ - 数据集质量报告
67
+ - 问题文件检测
68
+ - HTML报告生成
69
+ - 并行处理支持
70
+
71
+ ## 使用示例
72
+
73
+ ### 基础分析
74
+
75
+ ```python
76
+ import librosa
77
+ from neverlib.dataAnalyze import SpectralAnalyzer, TemporalAnalyzer, QualityAnalyzer
78
+
79
+ # 加载音频
80
+ audio, sr = librosa.load('audio.wav', sr=22050)
81
+
82
+ # 频域分析
83
+ spectral_analyzer = SpectralAnalyzer(sr=sr)
84
+ mfcc = spectral_analyzer.mfcc_features(audio)
85
+ spectral_centroid = spectral_analyzer.spectral_centroid(audio)
86
+
87
+ # 时域分析
88
+ temporal_analyzer = TemporalAnalyzer(sr=sr)
89
+ zcr = temporal_analyzer.zero_crossing_rate(audio)
90
+ energy = temporal_analyzer.short_time_energy(audio)
91
+
92
+ # 质量评估
93
+ quality_analyzer = QualityAnalyzer(sr=sr)
94
+ dynamic_range = quality_analyzer.dynamic_range(audio)
95
+ thd = quality_analyzer.total_harmonic_distortion(audio)
96
+ ```
97
+
98
+ ### 数据集分析
99
+
100
+ ```python
101
+ from neverlib.dataAnalyze import analyze_audio_dataset
102
+
103
+ # 分析整个数据集
104
+ results = analyze_audio_dataset(
105
+ directory='./audio_dataset',
106
+ output_dir='./analysis_results',
107
+ sr=22050,
108
+ n_jobs=4
109
+ )
110
+
111
+ print(f"分析了 {results['overview']['total_files']} 个文件")
112
+ print(f"平均健康分数: {results['quality_assessment']['average_health_score']:.1f}")
113
+ ```
114
+
115
+ ### 可视化分析
116
+
117
+ ```python
118
+ from neverlib.dataAnalyze import AudioVisualizer, create_analysis_dashboard
119
+
120
+ # 创建可视化器
121
+ visualizer = AudioVisualizer(sr=sr)
122
+
123
+ # 绘制波形图
124
+ fig1 = visualizer.plot_waveform(audio, title="音频波形")
125
+
126
+ # 绘制频谱图
127
+ fig2 = visualizer.plot_spectrogram(audio, title="频谱图")
128
+
129
+ # 创建完整的分析仪表板
130
+ dashboard = create_analysis_dashboard(audio, sr=sr)
131
+ ```
132
+
133
+ ### 统计分析
134
+
135
+ ```python
136
+ from neverlib.dataAnalyze import AudioStatistics, quick_audio_stats
137
+
138
+ # 批量统计分析
139
+ file_paths = ['audio1.wav', 'audio2.wav', 'audio3.wav']
140
+ stats = quick_audio_stats(file_paths, sr=22050)
141
+
142
+ # 详细统计
143
+ audio_stats = AudioStatistics(sr=22050)
144
+ audio_stats.add_audio_directory('./audio_files')
145
+ detailed_stats = audio_stats.compute_all_statistics()
146
+ ```
147
+
148
+ ## 高级功能
149
+
150
+ ### 1. 自定义分析流程
151
+
152
+ ```python
153
+ from neverlib.dataAnalyze import (
154
+ compute_spectral_features,
155
+ compute_temporal_features,
156
+ comprehensive_quality_assessment
157
+ )
158
+
159
+ # 提取所有特征
160
+ spectral_features = compute_spectral_features(audio, sr=sr)
161
+ temporal_features = compute_temporal_features(audio, sr=sr)
162
+ quality_assessment = comprehensive_quality_assessment(audio, sr=sr)
163
+ ```
164
+
165
+ ### 2. 数据集比较
166
+
167
+ ```python
168
+ from neverlib.dataAnalyze import compare_datasets
169
+
170
+ # 比较两个数据集
171
+ comparison = compare_datasets(
172
+ dataset1_paths=['dataset1/*.wav'],
173
+ dataset2_paths=['dataset2/*.wav'],
174
+ sr=22050
175
+ )
176
+ ```
177
+
178
+ ### 3. 问题文件检测
179
+
180
+ ```python
181
+ from neverlib.dataAnalyze import DatasetAnalyzer
182
+
183
+ analyzer = DatasetAnalyzer(sr=22050)
184
+ analyzer.analyze_dataset(file_paths)
185
+
186
+ # 获取有问题的文件
187
+ problematic_files = analyzer.get_problematic_files(min_health_score=80)
188
+ for file_info in problematic_files:
189
+ print(f"{file_info.file_path}: 健康分数 {file_info.health_score}")
190
+ print(f" 问题: {file_info.issues}")
191
+ print(f" 警告: {file_info.warnings}")
192
+ ```
193
+
194
+ ## 依赖项
195
+
196
+ 主要依赖库:
197
+ - `numpy` - 数值计算
198
+ - `librosa` - 音频处理
199
+ - `scipy` - 科学计算
200
+ - `matplotlib` - 绘图
201
+ - `seaborn` - 统计绘图
202
+ - `soundfile` - 音频文件读写
203
+ - `tqdm` - 进度条
204
+ - `joblib` - 并行处理
205
+
206
+ ## 输出格式
207
+
208
+ ### 分析报告
209
+ - JSON格式的详细统计信息
210
+ - HTML格式的可视化报告
211
+ - 问题文件清单
212
+ - 改进建议
213
+
214
+ ### 可视化图表
215
+ - 波形图
216
+ - 频谱图和梅尔频谱图
217
+ - 特征分布图
218
+ - 对比分析图
219
+ - 综合分析仪表板
220
+
221
+ ## 性能优化
222
+
223
+ - 支持多线程并行处理
224
+ - 内存友好的批量处理
225
+ - 可配置的分析参数
226
+ - 进度条显示
227
+
228
+ ## 扩展建议
229
+
230
+ 1. **深度学习特征**: 添加预训练模型的特征提取
231
+ 2. **实时分析**: 支持音频流的实时分析
232
+ 3. **数据库集成**: 支持分析结果的数据库存储
233
+ 4. **Web界面**: 开发基于Web的分析界面
234
+ 5. **更多格式**: 支持更多音频格式和元数据
@@ -0,0 +1,87 @@
1
+ """
2
+ 音频数据分析模块
3
+ Audio Data Analysis Module
4
+
5
+ 提供完整的音频数据分析功能, 包括特征提取、质量评估、统计分析和可视化等。
6
+ """
7
+
8
+ # 基础工具
9
+ from .utils import dB, peak_amplitude, rms_amplitude
10
+
11
+ # 频域分析
12
+ from .spectral_analysis import (
13
+ SpectralAnalyzer,
14
+ compute_spectral_features,
15
+ frequency_domain_stats
16
+ )
17
+
18
+ # 时域特征分析
19
+ from .temporal_features import (
20
+ TemporalAnalyzer,
21
+ compute_temporal_features,
22
+ temporal_domain_stats
23
+ )
24
+
25
+ # 音频质量评估
26
+ from .quality_metrics import (
27
+ QualityAnalyzer,
28
+ comprehensive_quality_assessment,
29
+ audio_health_check
30
+ )
31
+
32
+ # 统计分析
33
+ from .statistics import (
34
+ AudioStatistics,
35
+ quick_audio_stats,
36
+ compare_datasets
37
+ )
38
+
39
+ # 可视化
40
+ from .visualization import (
41
+ AudioVisualizer,
42
+ plot_dataset_overview,
43
+ create_analysis_dashboard
44
+ )
45
+
46
+ # 数据集分析
47
+ from .dataset_analyzer import (
48
+ DatasetAnalyzer,
49
+ AudioFileInfo,
50
+ analyze_audio_dataset
51
+ )
52
+
53
+ # RMS分布分析(保持向后兼容)
54
+ try:
55
+ from .rms_distrubution import get_rms_vad
56
+ except ImportError:
57
+ pass
58
+
59
+ __all__ = [
60
+ # 基础工具
61
+ 'dB', 'peak_amplitude', 'rms_amplitude',
62
+
63
+ # 频域分析
64
+ 'SpectralAnalyzer', 'compute_spectral_features', 'frequency_domain_stats',
65
+
66
+ # 时域分析
67
+ 'TemporalAnalyzer', 'compute_temporal_features', 'temporal_domain_stats',
68
+
69
+ # 质量评估
70
+ 'QualityAnalyzer', 'comprehensive_quality_assessment', 'audio_health_check',
71
+
72
+ # 统计分析
73
+ 'AudioStatistics', 'quick_audio_stats', 'compare_datasets',
74
+
75
+ # 可视化
76
+ 'AudioVisualizer', 'plot_dataset_overview', 'create_analysis_dashboard',
77
+
78
+ # 数据集分析
79
+ 'DatasetAnalyzer', 'AudioFileInfo', 'analyze_audio_dataset',
80
+
81
+ # RMS分布分析
82
+ 'get_rms_vad'
83
+ ]
84
+
85
+ __version__ = '1.0.0'
86
+ __author__ = 'NeverLib Team'
87
+ __description__ = 'Comprehensive audio data analysis toolkit'