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()获取目录或目录子树中已排序的(音频)文件列表。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值