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 协议》,转载必须注明作者和本文链接
不要试图用百米冲刺的方法完成马拉松比赛。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!