DSP

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

2019-07-13 16:51发布

文章目录

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 特征提取和操作。这包括低层次特征提取,如彩 {MOD}公音、伪常量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() 从给定的数据中获取默认的颜 {MOD}映射。 TimeFormatter() 时间轴的刻度格式化程序。 NoteFormatter() Notes的刻度格式。 LogHzFormatter() 用于对数频率的制表程序 ChromaFormatter() {MOD}度轴的格式化程序 TonnetzFormatter() tonnetz轴的格式化程序

Feature extraction

通过librosa.feature.*访问函数

Spectral features

函数名称 功能 chroma_stft() 从stft的结果计算 {MOD}谱图。关于 {MOD}谱图得出详细参考文献:http://labrosa.ee.columbia.edu/matlab/chroma-ansyn/ chroma_cqt 常数Q {MOD}谱图 chroma_cens() {MOD}谱能量归一化。具体内容需参考文献: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() 计算 {MOD}调质心特征(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() 获取目录或目录子树中已排序的(音频)文件列表。