neverlib 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {neverlib-0.2.2/neverlib.egg-info → neverlib-0.2.3}/PKG-INFO +120 -120
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/__init__.py +2 -2
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/audio_aug/__init__.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/audio_aug/audio_aug.py +4 -5
- neverlib-0.2.3/neverlib/dataAnalyze/README.md +234 -0
- neverlib-0.2.3/neverlib/dataAnalyze/__init__.py +87 -0
- neverlib-0.2.3/neverlib/dataAnalyze/dataset_analyzer.py +590 -0
- neverlib-0.2.3/neverlib/dataAnalyze/quality_metrics.py +364 -0
- neverlib-0.2.3/neverlib/dataAnalyze/rms_distrubution.py +62 -0
- neverlib-0.2.3/neverlib/dataAnalyze/spectral_analysis.py +218 -0
- neverlib-0.2.3/neverlib/dataAnalyze/statistics.py +406 -0
- neverlib-0.2.3/neverlib/dataAnalyze/temporal_features.py +126 -0
- neverlib-0.2.3/neverlib/dataAnalyze/visualization.py +468 -0
- neverlib-0.2.3/neverlib/filter/AudoEQ/README.md +165 -0
- neverlib-0.2.3/neverlib/filter/AudoEQ/auto_eq_de.py +361 -0
- neverlib-0.2.3/neverlib/filter/AudoEQ/auto_eq_ga_advanced.py +577 -0
- neverlib-0.2.3/neverlib/filter/AudoEQ/auto_eq_ga_basic.py +380 -0
- neverlib-0.2.3/neverlib/filter/AudoEQ/auto_eq_spectral_direct.py +75 -0
- neverlib-0.2.3/neverlib/filter/README.md +101 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/filter/__init__.py +7 -0
- neverlib-0.2.3/neverlib/filter/biquad.py +45 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/filter/common.py +5 -6
- neverlib-0.2.3/neverlib/filter/core.py +339 -0
- neverlib-0.2.3/neverlib/metrics/dnsmos.py +160 -0
- neverlib-0.2.3/neverlib/metrics/snr.py +177 -0
- neverlib-0.2.3/neverlib/metrics/spec.py +45 -0
- neverlib-0.2.3/neverlib/metrics/test_pesq.py +35 -0
- neverlib-0.2.3/neverlib/metrics/time.py +68 -0
- neverlib-0.2.3/neverlib/tests/test_vad.py +21 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/utils/audio_split.py +2 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/utils/message.py +4 -4
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/utils/utils.py +32 -15
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/PreProcess.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/README.md +10 -10
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_Energy.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_Silero.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_WebRTC.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_funasr.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_statistics.py +3 -3
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_vadlib.py +2 -2
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/VAD_whisper.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/__init__.py +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/class_get_speech.py +4 -4
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/vad/class_vad.py +1 -1
- neverlib-0.2.3/neverlib/vad/utils.py +67 -0
- {neverlib-0.2.2 → neverlib-0.2.3/neverlib.egg-info}/PKG-INFO +120 -120
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib.egg-info/SOURCES.txt +24 -11
- {neverlib-0.2.2 → neverlib-0.2.3}/pyproject.toml +1 -1
- {neverlib-0.2.2 → neverlib-0.2.3}/setup.cfg +4 -4
- neverlib-0.2.2/neverlib/Documents/vad/VAD_Energy.ipynb +0 -159
- neverlib-0.2.2/neverlib/Documents/vad/VAD_Silero.ipynb +0 -305
- neverlib-0.2.2/neverlib/Documents/vad/VAD_WebRTC.ipynb +0 -183
- neverlib-0.2.2/neverlib/Documents/vad/VAD_funasr.ipynb +0 -179
- neverlib-0.2.2/neverlib/Documents/vad/VAD_ppasr.ipynb +0 -175
- neverlib-0.2.2/neverlib/Documents/vad/VAD_statistics.ipynb +0 -522
- neverlib-0.2.2/neverlib/Documents/vad/VAD_vadlib.ipynb +0 -184
- neverlib-0.2.2/neverlib/Documents/vad/VAD_whisper.ipynb +0 -430
- neverlib-0.2.2/neverlib/utils/waveform_analyzer.py +0 -51
- neverlib-0.2.2/neverlib/vad/utils.py +0 -25
- neverlib-0.2.2/neverlib/wav_data/000_short.wav +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/LICENSE +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/MANIFEST.in +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/README.md +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/tests/__init__.py +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/tests/test_preprocess.py +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/utils/__init__.py +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib/utils/checkGPU.py +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib.egg-info/dependency_links.txt +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib.egg-info/requires.txt +0 -0
- {neverlib-0.2.2 → neverlib-0.2.3}/neverlib.egg-info/top_level.txt +0 -0
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: neverlib
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
Summary: A successful sign for python setup
|
|
5
|
-
Author-email: "Never.Ling" <1786088386@qq.com>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://www.cnblogs.com/LXP-Never
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/yourusername/neverlib/issues
|
|
9
|
-
Project-URL: Documentation, https://github.com/yourusername/neverlib
|
|
10
|
-
Project-URL: Source Code, https://github.com/yourusername/neverlib
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Operating System :: OS Independent
|
|
14
|
-
Requires-Python: >=3.6
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: numpy
|
|
18
|
-
Requires-Dist: noisereduce
|
|
19
|
-
Requires-Dist: soundfile
|
|
20
|
-
Requires-Dist: matplotlib
|
|
21
|
-
Requires-Dist: scipy
|
|
22
|
-
Requires-Dist: tqdm
|
|
23
|
-
Requires-Dist: joblib
|
|
24
|
-
Requires-Dist: pydub
|
|
25
|
-
Provides-Extra: vad
|
|
26
|
-
Requires-Dist: torch; extra == "vad"
|
|
27
|
-
Requires-Dist: torchaudio; extra == "vad"
|
|
28
|
-
Requires-Dist: librosa; extra == "vad"
|
|
29
|
-
Requires-Dist: webrtcvad; extra == "vad"
|
|
30
|
-
Requires-Dist: funasr; extra == "vad"
|
|
31
|
-
Requires-Dist: openai-whisper; extra == "vad"
|
|
32
|
-
Requires-Dist: transformers; extra == "vad"
|
|
33
|
-
Provides-Extra: gpu
|
|
34
|
-
Requires-Dist: GPUtil; extra == "gpu"
|
|
35
|
-
Provides-Extra: all
|
|
36
|
-
Requires-Dist: torch; extra == "all"
|
|
37
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
38
|
-
Requires-Dist: librosa; extra == "all"
|
|
39
|
-
Requires-Dist: webrtcvad; extra == "all"
|
|
40
|
-
Requires-Dist: funasr; extra == "all"
|
|
41
|
-
Requires-Dist: openai-whisper; extra == "all"
|
|
42
|
-
Requires-Dist: transformers; extra == "all"
|
|
43
|
-
Requires-Dist: GPUtil; extra == "all"
|
|
44
|
-
Dynamic: license-file
|
|
45
|
-
|
|
46
|
-
# NeverLib
|
|
47
|
-
|
|
48
|
-
一个用于音频处理和VAD(语音活动检测)的Python工具库。
|
|
49
|
-
|
|
50
|
-
## 安装
|
|
51
|
-
|
|
52
|
-
### 基本安装
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
pip install neverlib
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### 安装带有VAD功能的版本
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
pip install neverlib[vad]
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 安装带有GPU支持的版本
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
pip install neverlib[gpu]
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### 安装所有功能
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
pip install neverlib[all]
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## 依赖项
|
|
77
|
-
|
|
78
|
-
基本依赖项:
|
|
79
|
-
- numpy
|
|
80
|
-
- noisereduce
|
|
81
|
-
- soundfile
|
|
82
|
-
- matplotlib
|
|
83
|
-
- scipy
|
|
84
|
-
- tqdm
|
|
85
|
-
- joblib
|
|
86
|
-
- pydub
|
|
87
|
-
|
|
88
|
-
VAD功能依赖项:
|
|
89
|
-
- torch
|
|
90
|
-
- torchaudio
|
|
91
|
-
- librosa
|
|
92
|
-
- webrtcvad
|
|
93
|
-
- funasr
|
|
94
|
-
- openai-whisper
|
|
95
|
-
- transformers
|
|
96
|
-
|
|
97
|
-
## 使用示例
|
|
98
|
-
|
|
99
|
-
```python
|
|
100
|
-
import neverlib
|
|
101
|
-
|
|
102
|
-
# 使用VAD功能
|
|
103
|
-
from neverlib import vad
|
|
104
|
-
|
|
105
|
-
# 使用工具函数
|
|
106
|
-
from neverlib import utils
|
|
107
|
-
|
|
108
|
-
# 发送邮件
|
|
109
|
-
from neverlib.message import seed_QQEmail
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## 许可证
|
|
113
|
-
|
|
114
|
-
本项目采用MIT许可证。详情请参阅LICENSE文件。
|
|
115
|
-
|
|
116
|
-
## 作者
|
|
117
|
-
|
|
118
|
-
凌逆战 | Never
|
|
119
|
-
|
|
120
|
-
博客:https://www.cnblogs.com/LXP-Never
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: neverlib
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: A successful sign for python setup
|
|
5
|
+
Author-email: "Never.Ling" <1786088386@qq.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://www.cnblogs.com/LXP-Never
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/yourusername/neverlib/issues
|
|
9
|
+
Project-URL: Documentation, https://github.com/yourusername/neverlib
|
|
10
|
+
Project-URL: Source Code, https://github.com/yourusername/neverlib
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Requires-Python: >=3.6
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: numpy
|
|
18
|
+
Requires-Dist: noisereduce
|
|
19
|
+
Requires-Dist: soundfile
|
|
20
|
+
Requires-Dist: matplotlib
|
|
21
|
+
Requires-Dist: scipy
|
|
22
|
+
Requires-Dist: tqdm
|
|
23
|
+
Requires-Dist: joblib
|
|
24
|
+
Requires-Dist: pydub
|
|
25
|
+
Provides-Extra: vad
|
|
26
|
+
Requires-Dist: torch; extra == "vad"
|
|
27
|
+
Requires-Dist: torchaudio; extra == "vad"
|
|
28
|
+
Requires-Dist: librosa; extra == "vad"
|
|
29
|
+
Requires-Dist: webrtcvad; extra == "vad"
|
|
30
|
+
Requires-Dist: funasr; extra == "vad"
|
|
31
|
+
Requires-Dist: openai-whisper; extra == "vad"
|
|
32
|
+
Requires-Dist: transformers; extra == "vad"
|
|
33
|
+
Provides-Extra: gpu
|
|
34
|
+
Requires-Dist: GPUtil; extra == "gpu"
|
|
35
|
+
Provides-Extra: all
|
|
36
|
+
Requires-Dist: torch; extra == "all"
|
|
37
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
38
|
+
Requires-Dist: librosa; extra == "all"
|
|
39
|
+
Requires-Dist: webrtcvad; extra == "all"
|
|
40
|
+
Requires-Dist: funasr; extra == "all"
|
|
41
|
+
Requires-Dist: openai-whisper; extra == "all"
|
|
42
|
+
Requires-Dist: transformers; extra == "all"
|
|
43
|
+
Requires-Dist: GPUtil; extra == "all"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# NeverLib
|
|
47
|
+
|
|
48
|
+
一个用于音频处理和VAD(语音活动检测)的Python工具库。
|
|
49
|
+
|
|
50
|
+
## 安装
|
|
51
|
+
|
|
52
|
+
### 基本安装
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pip install neverlib
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 安装带有VAD功能的版本
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install neverlib[vad]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 安装带有GPU支持的版本
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pip install neverlib[gpu]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 安装所有功能
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pip install neverlib[all]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 依赖项
|
|
77
|
+
|
|
78
|
+
基本依赖项:
|
|
79
|
+
- numpy
|
|
80
|
+
- noisereduce
|
|
81
|
+
- soundfile
|
|
82
|
+
- matplotlib
|
|
83
|
+
- scipy
|
|
84
|
+
- tqdm
|
|
85
|
+
- joblib
|
|
86
|
+
- pydub
|
|
87
|
+
|
|
88
|
+
VAD功能依赖项:
|
|
89
|
+
- torch
|
|
90
|
+
- torchaudio
|
|
91
|
+
- librosa
|
|
92
|
+
- webrtcvad
|
|
93
|
+
- funasr
|
|
94
|
+
- openai-whisper
|
|
95
|
+
- transformers
|
|
96
|
+
|
|
97
|
+
## 使用示例
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
import neverlib
|
|
101
|
+
|
|
102
|
+
# 使用VAD功能
|
|
103
|
+
from neverlib import vad
|
|
104
|
+
|
|
105
|
+
# 使用工具函数
|
|
106
|
+
from neverlib import utils
|
|
107
|
+
|
|
108
|
+
# 发送邮件
|
|
109
|
+
from neverlib.message import seed_QQEmail
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 许可证
|
|
113
|
+
|
|
114
|
+
本项目采用MIT许可证。详情请参阅LICENSE文件。
|
|
115
|
+
|
|
116
|
+
## 作者
|
|
117
|
+
|
|
118
|
+
凌逆战 | Never
|
|
119
|
+
|
|
120
|
+
博客:https://www.cnblogs.com/LXP-Never
|
|
@@ -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
|
|
@@ -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'
|