文章目录
- Python音频信号处理库函数librosa介绍(部分内容将陆续添加)
- 介绍
- 安装
- 综述(库函数结构)
- Core IO and DSP(核心输入输出功能和数字信号处理)
- Audio processing
- Spectral representations
- Magnitude scaling
- Time and frequency conversion
- Pitch and tuning
- Deprecated(moved)
- Display
- Feature extraction
- Spectral features
- Rhythm features
- Feature manipulation
- Spectrogram decomposition
- Output
- Utilities
- Array operations
- Matching
- Miscellaneous
- Input Validation
- File operations
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() | 获取目录或目录子树中已排序的(音频)文件列表。 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)