Python音频信号处理库函数librosa介绍

Python音频信号处理库函数librosa介绍(部分内容将陆续添加)

本篇博客只是对librosa中库函数功能的大致介绍,只要是为了了解这个库函数都能实现那些功能,以帮助日后使用。函数的详细参数输入和参数输出等需要读者阅读原网站。
详见http://librosa.github.io/librosa/index.html

介绍

LibROSA是一个用于音乐和音频分析的python包。它提供了创建音乐信息检索系统所需的构建块。

安装

pip安装
pip install librosa
conda安装
conda install -c conda-forge 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 辅助实用程序(规范化、填充、居中等)

Core IO and DSP(核心输入输出功能和数字信号处理)

可以直接通过librosa.*来访问函数,当然也可以通过librosa.core.*来访问。

Audio processing

函数名称 功能
load() 从文件加载音频数据,貌似没有格式限制,而且可以通过参数设置是否保留双声道,采样率,重采样类型
to_mono() 把音频数据降至单声道
resample() 重采样,也可以称之为降采样
get_duration() 计算音频时间序列、特征矩阵或文件名的持续时间(以秒为单位)。从文件路径读取时间长度更快一些。
autocorrelate() 计算自相关
zero_crossings() 找到过零点的位置
clicks() 在信号指定的位置放置click信号。可以通过参数设置click信号的频率等属性。
tone() 生成一个tone信号,即一个简单的正弦波
chirp() 生成一个chirp信号

Spectral representations

函数名称 功能
stft() 短时傅里叶变换
istft() 短时傅里叶逆变换
ifgram() 计算得到的瞬时频率(作为采样率的比例)作为复谱相位的时间导数。参考文献:Abe, Toshihiko, Takao Kobayashi, and Satoshi Imai. “Harmonics tracking and pitch extraction based on instantaneous frequency.” International Conference on Acoustics, Speech, and Signal Processing, ICASSP-95., Vol. 1. IEEE, 1995.
cqt() 常数Q变换,参考文献:Schoerkhuber, Christian, and Anssi Klapuri. “Constant-Q transform toolbox for music processing.” 7th Sound and Music Computing Conference, Barcelona, Spain. 2010.
icqt() 常数Q逆变换
hybrid_cqt() 计算音频信号的混合常量- q变换。
pseudo_cqt() 计算音频信号的伪常量- q变换。
iirt() 使用IIR滤波器的时频表示。参考文献:Müller, Meinard. “Information Retrieval for Music and Motion.” Springer Verlag. 2007.
fmt() 快速梅林变换(FMT)。参考文献:【1】De Sena, Antonio, and Davide Rocchesso. “A fast Mellin and scale transform.” EURASIP Journal on Applied Signal Processing 2007.1 (2007): 75-75.【2】Cohen, L. “The scale representation.” IEEE Transactions on Signal Processing 41, no. 12 (1993): 3275-3292.
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进行归一化,然后进行非线性压缩。这个函数参考一篇2017年的文章,貌似很厉害,暂不清楚具体功能。

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音符的频率(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的结果计算色谱图。关于色谱图得出详细参考文献:http://labrosa.ee.columbia.edu/matlab/chroma-ansyn/
chroma_cqt 常数Q色谱图
chroma_cens() 色谱能量归一化。具体内容需参考文献:Meinard Müller and Sebastian Ewert “Chroma Toolbox: MATLAB implementations for extracting variants of chroma-based audio features” In Proceedings of the International Conference on Music Information Retrieval (ISMIR), 2011.
melspectrogram() 计算梅尔频谱
mfcc() 梅尔倒频谱系数
rms() 谱的均方根
spectral_centroid() 谱中心
spectral_bandwidth() 谱带宽。
spectral_contrast() 谱对比度,参考文献:Jiang, Dan-Ning, Lie Lu, Hong-Jiang Zhang, Jian-Hua Tao, and Lian-Hong Cai. “Music type classification by spectral contrast feature.” In Multimedia and Expo, 2002. ICME‘02. Proceedings. 2002 IEEE International Conference on, vol. 1, pp. 113-116. IEEE, 2002.
spectral_flatness() 频谱平坦度
spectral_rolloff() 滚降频率
poly_feature() 求一个n阶多项式与谱图列的拟合系数
tonnetz() 计算色调质心特征(tonnetz),详见参考文献:Harte, C., Sandler, M., & Gasser, M. (2006). “Detecting Harmonic Change in Musical Audio.” In Proceedings of the 1st ACM Workshop on Audio and Music Computing Multimedia (pp. 21-26). Santa Barbara, CA, USA: ACM Press. doi:10.1145/1178723.1178727.
zero_crossing_rate() 过零率

Rhythm features

函数名称 功能
tempogram() 计算模板图:起始强度包络线的局部自相关。参考文献:Grosche, Peter, Meinard Müller, and Frank Kurth. “Cyclic tempogram - A mid-level tempo representation for music signals.” ICASSP, 2010.

Feature manipulation

函数名称 功能
delta() 计算增量特性:对输入数据沿选定轴的导数进行局部估计。计算了三角函数的萨维茨基-戈莱滤波。
stack_memory() 短期历史嵌入:将数据向量或矩阵与自身的延迟副本垂直连接。

Spectrogram decomposition

通过librosa.decompose.*访问

函数名称 功能
decompose() 分解一个特征矩阵
hpss() Median-filtering harmonic percussive source separation (HPSS).
nn_filter() Filtering by nearest-neighbors.参考文献【1】Buades, A., Coll, B., & Morel, J. M. (2005, June). A non-local algorithm for image denoising. In Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on (Vol. 2, pp. 60-65). IEEE.【2】Rafii, Z., & Pardo, B. (2012, October). “Music/Voice Separation Using the Similarity Matrix.” International Society for Music Information Retrieval Conference, 2012.

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() 从索引数组生成切片数组。关于这个函数的作用,需要学习一下numpy中切片数组的相关知识。
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() 获取目录或目录子树中已排序的(音频)文件列表。

猜你喜欢

转载自blog.csdn.net/qq7835144/article/details/88812119