AudioFlux 是一个专为音频和音乐分析、特征提取设计的开源 Python 库。它支持广泛的音频处理功能,包括特征提取、音高检测、时频分析、谱图处理等。这些功能被广泛应用于机器学习、深度学习、信号处理等领域,特别是对于音乐信息检索(MIR)、音频分类、语音增强等任务极为有效。
⭕️宇宙起点
- 💯 AudioFlux 核心功能
- 1. 时频分析与谱图提取
- 2. 特征提取
- 3. 音乐信息检索(MIR)
- 4. 多维度的变换与算法支持
- 💯 频谱提取方法
- 💯 适用场景
- 📥 下载地址
- 💬 结语
- 📒 参考文献
💯 AudioFlux 核心功能
1. 时频分析与谱图提取
AudioFlux 提供了多种时频分析工具,如短时傅里叶变换(STFT)、连续小波变换(CWT)、梅尔谱图(Mel Spectrogram)等。通过这些工具,开发者可以轻松实现音频信号的时频分析,并将音频数据可视化为不同类型的频谱图。
以下是如何使用 AudioFlux 提取梅尔谱图的示例:
import audioflux as af
from audioflux.type import SpectralFilterBankScaleType
import numpy as np# 读取音频文件
sample_path = af.utils.sample_path('220') # 获取示例音频文件
audio_arr, sr = af.read(sample_path)# 创建BFT对象并提取梅尔谱图
bft_obj = af.BFT(num=128, radix2_exp=12, samplate=sr, scale_type=SpectralFilterBankScaleType.MEL)
mel_spec = bft_obj.bft(audio_arr)# 转换为幅值谱图
mel_spec = np.abs(mel_spec)# 显示梅尔谱图
import matplotlib.pyplot as plt
from audioflux.display import fill_specfig, ax = plt.subplots()
img = fill_spec(mel_spec, axes=ax, title='Mel Spectrogram')
plt.colorbar(img, ax=ax)
plt.show()
2. 特征提取
AudioFlux 提供了多种音频特征提取方法,如 MFCC(梅尔频率倒谱系数)、GTCC、BFCC 等,这些特征在机器学习和模式识别中广泛用于音频分类和识别任务。以下代码展示了如何使用 AudioFlux 提取 MFCC 特征:
import audioflux as af
import numpy as np
import matplotlib.pyplot as plt# 读取音频文件
sample_path = af.utils.sample_path('220')
audio_arr, sr = af.read(sample_path)# 提取MFCC特征
mfcc_arr, _ = af.mfcc(audio_arr, samplate=sr)# 可视化MFCC
fig, ax = plt.subplots()
img = ax.imshow(mfcc_arr, aspect='auto', origin='lower')
ax.set_title("MFCC")
fig.colorbar(img, ax=ax)
plt.show()
3. 音乐信息检索(MIR)
MIR 是音乐信息处理中的一个重要领域,AudioFlux 提供了丰富的 MIR 工具来实现音高检测、起始点检测、谐波分析等任务。例如,可以使用 AudioFlux 的 YIN 算法来进行音高估计,或者使用 STFT 进行频率分析。
以下是使用 CWT(连续小波变换)提取谱图的示例:
import audioflux as af
from audioflux.type import WaveletContinueType, SpectralFilterBankScaleType
import numpy as np
import matplotlib.pyplot as plt# 读取音频文件
sample_path = af.utils.sample_path('880')
audio_arr, sr = af.read(sample_path)# 创建CWT对象并提取谱图
cwt_obj = af.CWT(num=84, radix2_exp=12, samplate=sr, wavelet_type=WaveletContinueType.MORSE, scale_type=SpectralFilterBankScaleType.OCTAVE)
cwt_arr = cwt_obj.cwt(audio_arr[..., :4096])# 可视化CWT谱图
cwt_arr = np.abs(cwt_arr)
fig, ax = plt.subplots()
img = ax.imshow(cwt_arr, aspect='auto', origin='lower')
ax.set_title("CWT Spectrogram")
fig.colorbar(img, ax=ax)
plt.show()
4. 多维度的变换与算法支持
AudioFlux 支持多种频谱变换方法,如 BFT(批傅里叶变换)、NSGT(非均匀傅里叶变换)、DWT(离散小波变换)等。通过灵活的 API,用户可以轻松调整不同的频率分辨率、时域窗口以及频谱范围,来适应不同的音频处理需求。
💯 频谱提取方法
以下是 AudioFlux 提供的主要频谱提取方法与其特性对比:
方法 | 频率分辨率 | 支持的转换类型 | 特点 |
---|---|---|---|
STFT | 固定 | 线性频谱 | 适用于通用音频时频分析 |
CWT | 可变 | 小波变换 | 能捕捉细微时频变化 |
BFT | 固定 | 线性、对数 | 用于大批量频谱提取 |
MelSpec | 固定 | 梅尔频谱 | 适合人耳感知的频谱分辨率 |
NSGT | 可变 | 非均匀频谱 | 适合音乐和其他非均匀频率的音频分析 |
💯 适用场景
AudioFlux 的强大功能可以广泛应用于以下领域:
- 音频分类与识别:通过特征提取和谱图分析,AudioFlux 能有效应用于音频分类、语音识别等任务。
- 音乐信息检索(MIR):包括音高检测、节奏分析、和弦识别等,为音乐数据的检索和分析提供有力支持。
- 机器学习与深度学习:在音频数据集上进行特征提取和预处理,帮助开发者更快构建音频相关的机器学习模型。
- 语音增强和音频分离:支持多种信号处理方法,AudioFlux 可以用于语音增强和背景噪音消除等音频优化任务。
📥 下载地址
AudioFlux 最新版 下载地址
💬 结语
AudioFlux 是一个强大且灵活的音频分析库,能够帮助开发者快速实现从音频特征提取、时频分析到音乐信息检索的多种任务。无论是在音乐分类、音频处理还是信号处理领域,AudioFlux 都为开发者提供了丰富的工具和简单的 API,极大提升了开发效率。
如果你对音频信号处理或音乐分析感兴趣,AudioFlux 是一个值得深入学习和使用的优秀库。
📒 参考文献
- AudioFlux 官网
- AudioFlux GitHub仓库