Python 音频信号处理库 librosa
librosa 库官网
LibROSA 是一个用于音乐和音频分析的python包。它提供了创建音乐信息检索系统所需的构建块。
这篇博客就不展开说明了,为了方便日后随用随查,这里只是记录下 librosa 库的情况,细节还是看官方文档。
$ pip install librosa
库函数结构
源文件 | 功能介绍 |
---|---|
librosa.beat | 用于估计节拍和检测节拍事件 |
librosa.core | 核心功能包括从磁盘加载音频、计算各种谱图表示以及各种常用的音乐分析工具。为了方便起见,这个子模块中的所有功能都可以直接从顶层 librosa.* 名称空间访问。 |
librosa.decompose | 利用 scikit-learn 中实现的矩阵分解方法实现谐波冲击源分离(HPSS) 和通用谱图分解功能。 |
librosa.display | 使用 matplotlib 的可视化。 |
librosa.effects | 时域音频处理,如音高移动和时间拉伸。这个子模块还为分解子模块提供时域包装器。 |
librosa.feature | 特征提取和操作。这包括低层次特征提取,如彩色公音、伪常量q(对数频率)变换、Mel 光谱图、MFCC 和调优估计。此外,还提供了特性操作方法,如 delta 特性、内存嵌入和事件同步特性对齐。 |
librosa.filters | 过滤库生成(chroma、伪CQT、CQT等)。这些主要是librosa的其他部分使用的内部函数。 |
librosa.onset | 起跳检测和起跳强度计算。 |
librosa.output | 文本和波形文件输出。 |
librosa.segment | 用于结构分割的函数,如递归矩阵构造、时滞表示和顺序约束聚类。 |
librosa.sequence | 用于顺序建模的函数。各种形式的维特比解码,以及用于构造转换矩阵的辅助函数。 |
librosa.util | 辅助实用程序(规范化、填充、居中等)。 |
Audio processing(音频处理)
函数 | 功能 |
---|---|
load() | 从文件加载音频数据,貌似没有格式限制,而且可以通过参数设置是否保留双声道,采样率,重采样类型。 |
to_mono() | 把音频数据降至单声道。 |
resample() | 重采样,也可以称之为降采样。 |
get_duration() | 计算音频时间序列、特征矩阵或文件名的持续时间(以秒为单位)。从文件路径读取时间长度更快一些。 |
autocorrelate() | 计算自相关。 |
zero_crossings() | 找到过零点的位置。 |
clicks() | 在信号指定的位置放置click信号。可以通过参数设置click信号的频率等属性。 |
tone() | 生成一个 tone 信号,即一个简单的正弦波。 |
chirp() | 生成一个 chirp 信号。 |
Spectral representations(谱表示)
函数 | 功能 |
---|---|
stft() | 短时傅里叶变换。默认参数:sr=22050, n_fft=2048, hob_length=512 |
istft() | 短时傅里叶逆变换。 |
ifgram() | 计算得到的瞬时频率(作为采样率的比例)作为复谱相位的时间导数。 |
cqt() | 常数Q变换。 |
icqt() | 常数Q逆变换。 |
hybrid_cqt() | 计算音频信号的混合常量- q变换。 |
pseudo_cqt() | 计算音频信号的伪常量- q变换。 |
iirt() | 使用IIR滤波器的时频表示。 |
fmt() | 快速梅林变换(FMT) |
interp_harmonics() | 计算谐波处的能量。 |
salience() | 谐波突出功能。 |
phase_vocoder() | 阶段声码器。给定一个 STFT 矩阵 D,将速度提高一个因子。 |
magphase() | 计算复数图谱的幅度值和相位值。 |
Magnitude scaling(幅度标度)
函数 | 功能 |
---|---|
amplitude_to_db() | 将振幅谱图转换为 db _scale 谱图。| |
db_to_amplitude() | 将 db 谱图转为普通振幅谱图。| |
power_to_db() | 功率谱转换。| |
db_to_power() | 功率谱转换。| |
perceptual_weighting() | 功率谱图的感知加权。| |
A_weighting() | 计算一组频率的 a 加权。| |
pcen() | 该函数通过自动增益控制对时频表示 S 进行归一化,然后进行非线性压缩。| |
Time and frequency conversion(时间和频率转换)
函数 | 功能 |
---|---|
frames_to_sample() | 将帧索引转换为音频样本索引。 |
frames_to_time() | 将帧数转换为时间(秒)。 |
samples_to_frames() | 将样本索引转换为 STFT 帧。 |
samples_to_time() | 将 STFT 帧转换为样本索引。 |
time_to_frames() | 将时间戳转换为 STFT 帧。 |
time_to_samples() | 将时间戳(以秒为单位)转换为样本索引。 |
hz_to_note() | 将一个或多个频率(以Hz为单位)转换为最近的音符名称。 |
hz_to_midi() | 获取给定频率的 MIDI 音符编号。 |
midi_to_hz() | 获取 将一个或多个 MIDI 数转换为音符串。MIDI 音符的频率(Hz) |
midi_to_note() | 将一个或多个 MIDI 数转换为音符串。 |
note_to_hz() | 将一个或多个音符名称转换为频率(Hz) |
note_to_midi() | 将一个或多个拼写音符转换为 MIDI 数字。 |
hz_to_mel() | 将Hz转换为 Mels。 |
hz_to_octs() | 将频率(Hz)转换为(分数)倍频程数。 |
mel_to_hz() | 将 mel 频率转换为频率 |
octs_to_hz() | 将八度数转换为频率。 |
fft_frequencies() | np.fft.fftfreq 的替代实现。 |
cqt_frequencies() | 计算 Constant-Q 箱的中心频率。 |
mel_frequencies() | 计算调整到梅尔音阶的声学频率阵列。 |
tempo_frequencies() | 计算对应于起始自相关或临时图矩阵的频率(以每分钟节拍数为单位)。 |
samples_like() | 返回一组样本索引以匹配特征矩阵中的时间轴。 |
times_like() | 返回一组时间值以匹配特征矩阵中的时间轴。 |
Pitch and tuning(音调和调谐)
函数 | 功能 |
---|---|
estimate_tuning() | 估计音频序列的音调或者频谱输入。 |
pitch_tuning() | 给定一个集合,估计其调谐偏移(一个 bin 的分数)相对于A440 = 440.0Hz。 |
piptrack() | 阈值抛物线插值 STFT 上的节距跟踪。 |
Deprecated(moved)(不推荐(移动))
函数 | 功能 |
---|---|
dtw() | 动态时间扭曲。 |
fill_off_diagonal() | 将一个矩阵的所有细胞设置为给定的值,如果它们位于约束区域之外。 |
Display(显示)
通过 librosa.display.*
访问函数。
函数 | 功能 |
---|---|
specshow() | Display a spectrogram/chromagram/cqt/etc. |
waveplot() | 绘制波形的振幅包络。 |
camp() | 从给定的数据中获取默认的颜色映射。 |
TimeFormatter() | 时间轴的刻度格式化程序。 |
NoteFormatter() | Notes 的刻度格式。 |
LogHzFormatter() | 用于对数频率的制表程序。 |
ChromaFormatter() | 色度轴的格式化程序。 |
TonnetzFormatter() | tonnetz 轴的格式化程序。 |
Feature extraction(特征提取)
通过 librosa.feature.*
访问函数。
Spectral features(光谱特征)
函数 | 功能 |
---|---|
chroma_stft() | 从 stft 的结果计算色谱图。 |
chroma_cqt | 常数 Q 色谱图。 |
chroma_cens() | 色谱能量归一化。 |
melspectrogram() | 计算梅尔频谱。 |
mfcc() | 梅尔倒频谱系数。 |
rms() | 谱的均方根。 |
spectral_centroid() | 谱中心 |
spectral_bandwidth() | 谱带宽。 |
spectral_contrast() | 谱对比度。 |
spectral_flatness() | 频谱平坦度。 |
spectral_rolloff() | 滚降频率。 |
poly_feature() | 求一个 n 阶多项式与谱图列的拟合系数。 |
tonnetz() | 计算色调质心特征(tonnetz)。 |
zero_crossing_rate() | 过零率。 |
Rhythm features(节奏特征)
函数 | 功能 |
---|---|
tempogram() | 计算模板图:起始强度包络线的局部自相关。 |
Feature manipulation(特征操作)
函数 | 功能 |
---|---|
delta() | 计算增量特性:对输入数据沿选定轴的导数进行局部估计。计算了三角函数的萨维茨基-戈莱滤波。 |
stack_memory() | 短期历史嵌入:将数据向量或矩阵与自身的延迟副本垂直连接。 |
Spectrogram decomposition(谱图分解)
通过 librosa.decompose.*
访问。
函数 | 功能 |
---|---|
decompose() | 分解一个特征矩阵。 |
hpss() | Median-filtering harmonic percussive source separation (HPSS). |
nn_filter() | Filtering by nearest-neighbors. |
Output(输出)
通过 librosa.ouput.*
来访问。
函数 | 功能 |
---|---|
annotation() | 保存 3 列格式的注释。 |
time_csv() | 按 CSV 格式保存时间步骤。这可以用来存储打击跟踪器或分割算法的输出。 |
write_wav() | 保存为 wav 文件格式。 |
Utilities(实用功能)
通过 librosa.util.*
来访问。
Array operations(数组操作)
函数 | 功能 |
---|---|
frame() | 将时间序列分割成重叠的帧。 |
pad_center() | 将数组居中。 |
fix_length() | 将数组数据的长度固定为精确的大小。 |
fix_frames | 固定一个帧的最大值和最小值。 |
index_to_slice() | 从索引数组生成切片数组。 |
softmask() | 鲁棒地计算软掩码操作。 |
sync() | 边界之间多维数组的同步聚合。 |
axis_sort() | 对数组的行或列进行排序。 |
normalize() | 沿着选定的轴对数组进行标准化。 |
roll_sparse() | 系数矩阵滚动。 |
sparsify_rows() | 返回一个近似于输入 x 的行稀疏矩阵。 |
buf_to_float() | 将整数缓冲区转换为浮点值。 |
tiny() | 计算与输入数据类型对应的极小值。就是比如输入数据是int8类型,则返回 int8 类型可以表示的最小的数。 |
Matching(匹配)
函数 | 功能 |
---|---|
match_intervals() | 将一组时间间隔与另一组时间间隔匹配。 |
match_events() | 将一组事件与另一组事件匹配。 |
Miscellaneous
函数 | 功能 |
---|---|
localmax() | 在数组 x 中找到局部最大值。 |
peak_pick() | 使用灵活的启发式算法选择信号中的峰值。 |
Input Validation(输入验证)
函数 | 功能 |
---|---|
valid_audio() | 验证变量是否包含有效的单声道音频数据。 |
valid_int() | 确保输入值是整型的。 |
valid_intervals() | 确保数组是时间间隔的有效表示。 |
File operations(文件操作)
函数 | 功能 |
---|---|
example_audio_file() | 获取包含音频示例文件的路径。 |
find_files() | 获取目录或目录子树中已排序的(音频)文件列表。 |
本作品采用《CC 协议》,转载必须注明作者和本文链接