文章目录
- 一、Librosa简介与安装
-
- [1.1 Librosa是什么](#1.1 Librosa是什么)
- [1.2 Librosa官网](#1.2 Librosa官网)
- 二、Librosa安装
-
- [2.1 安装Librosa](#2.1 安装Librosa)
- 三、安装ffmpeg
-
- [3.1 ffmpeg官网下载](#3.1 ffmpeg官网下载)
- [3.2 ffmpeg安装](#3.2 ffmpeg安装)
-
- [3.2.1 解压](#3.2.1 解压)
- [3.2.2 添加环境变量](#3.2.2 添加环境变量)
- [3.2.3 测试ffmpeg是否安装成功](#3.2.3 测试ffmpeg是否安装成功)
- [四、Librosa 库模块一览](#四、Librosa 库模块一览)
-
- [4.1 库函数结构](#4.1 库函数结构)
- [4.2 Audio processing(音频处理)](#4.2 Audio processing(音频处理))
- [4.3 Spectral representations(谱表示)](#4.3 Spectral representations(谱表示))
- [4.4 Magnitude scaling(幅度标度)](#4.4 Magnitude scaling(幅度标度))
- [4.5 Time and frequency conversion(时间和频率转换)](#4.5 Time and frequency conversion(时间和频率转换))
- [4.6 Pitch and tuning(音调和调谐)](#4.6 Pitch and tuning(音调和调谐))
- [4.7 Deprecated (moved)(不推荐(移动))](#4.7 Deprecated (moved)(不推荐(移动)))
- [4.8 Display(显示)](#4.8 Display(显示))
- [4.9 Feature extraction(特征提取)](#4.9 Feature extraction(特征提取))
- [4.10 Rhythm features(节奏特征)](#4.10 Rhythm features(节奏特征))
- [4.11 Feature manipulation(特征操作)](#4.11 Feature manipulation(特征操作))
- [4.12 Spectrogram decomposition(谱图分解)](#4.12 Spectrogram decomposition(谱图分解))
- [4.13 Output(输出)](#4.13 Output(输出))
- [4.14 Utilities(实用功能)](#4.14 Utilities(实用功能))
- [4.15 Matching(匹配)](#4.15 Matching(匹配))
- [4.16 Miscellaneous](#4.16 Miscellaneous)
- [4.17 Input Validation(输入验证)](#4.17 Input Validation(输入验证))
- [4.18 File operations(文件操作)](#4.18 File operations(文件操作))
一、Librosa简介与安装
1.1 Librosa是什么
librosa是一个非常强大的python语音信号处理的第三方库,它提供了创建音乐信息检索系统所必需的构造块。
1.2 Librosa官网
https://librosa.org/doc/latest/index.html
二、Librosa安装
2.1 安装Librosa
shell
复制代码
pip install librosa -i https://pypi.douban.com/simple
会自动安装一些依赖库
shell
复制代码
Successfully built audioread resampy
Installing collected packages: urllib3, pyparsing, pycparser, llvmlite, idna, charset-normalizer, threadpoolctl, s
cipy, requests, packaging, numba, joblib, cffi, appdirs, soundfile, scikit-learn, resampy, pooch, decorator, audioread, librosa
Successfully installed appdirs-1.4.4 audioread-2.1.9 cffi-1.15.0 charset-normalizer-2.0.12 decorator-5.1.1 idna-3.
3 joblib-1.1.0 librosa-0.9.1 llvmlite-0.38.0 numba-0.55.1 packaging-21.3 pooch-1.6.0 pycparser-2.21 pyparsing-3.0.
8 requests-2.27.1 resampy-0.2.2 scikit-learn-1.0.2 scipy-1.7.3 soundfile-0.10.3.post1 threadpoolctl-3.1.0 urllib3-1.26.9
三、安装ffmpeg
为了audioread增强音频解码能力,您可以安装许多音频解码器附带的ffmpeg 。请注意,Linux 和 OSX 上的 conda 用户将默认安装它;Windows 用户必须单独安装 ffmpeg。
3.1 ffmpeg官网下载
https://www.ffmpeg.org/
https://www.ffmpeg.org/download.html
https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-2022-04-28-git-ec07b15477-full_build.7z
3.2 ffmpeg安装
3.2.1 解压
下载的压缩包解压到C:\Program Files
找到ffmpeg.exe的完整路径:C:\Program Files\ffmpeg-2022-04-28\bin
3.2.2 添加环境变量
系统 - 关于 - 高级系统设置 - 环境变量 - 系统变量 - path - 编辑 - 新建:C:\Program Files\ffmpeg-2022-04-28\bin
3.2.3 测试ffmpeg是否安装成功
打开cmd / winodws powershell / windows termianl输入
shell
复制代码
ffmpeg -version
显示版本信息即为安装成功
四、Librosa 库模块一览
4.1 库函数结构
源文件 |
功能介绍 |
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 |
辅助实用程序 (规范化、填充、居中等)。 |
4.2 Audio processing(音频处理)
函数 |
功能 |
load() |
从文件加载音频数据,貌似没有格式限制,而且可以通过参数设置是否保留双声道,采样率,重采样类型。 |
to_mono() |
把音频数据降至单声道。 |
resample() |
重采样,也可以称之为降采样。 |
get_duration() |
计算音频时间序列、特征矩阵或文件名的持续时间 (以秒为单位)。从文件路径读取时间长度更快一些。 |
autocorrelate() |
计算自相关。 |
zero_crossings() |
找到过零点的位置。 |
clicks() |
在信号指定的位置放置 click 信号。可以通过参数设置 click 信号的频率等属性。 |
tone() |
生成一个 tone 信号,即一个简单的正弦波。 |
chirp() |
生成一个 chirp 信号。 |
4.3 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() |
计算复数图谱的幅度值和相位值。 |
4.4 Magnitude scaling(幅度标度)
函数 |
功能 |
amplitude_to_db() |
将振幅谱图转换为 db _scale 谱图。| |
db_to_amplitude() |
将 db 谱图转为普通振幅谱图。| |
power_to_db() |
功率谱转换。| |
db_to_power() |
功率谱转换。| |
perceptual_weighting() |
功率谱图的感知加权。| |
A_weighting() |
计算一组频率的 a 加权。| |
pcen() |
该函数通过自动增益控制对时频表示 S 进行归一化,然后进行非线性压缩。| |
4.5 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() |
返回一组时间值以匹配特征矩阵中的时间轴。 |
4.6 Pitch and tuning(音调和调谐)
函数 |
功能 |
estimate_tuning() |
估计音频序列的音调或者频谱输入。 |
pitch_tuning() |
给定一个集合,估计其调谐偏移 (一个 bin 的分数) 相对于 A440 = 440.0Hz。 |
piptrack() |
阈值抛物线插值 STFT 上的节距跟踪。 |
4.7 Deprecated (moved)(不推荐(移动))
函数 |
功能 |
dtw() |
动态时间扭曲。 |
fill_off_diagonal() |
将一个矩阵的所有细胞设置为给定的值,如果它们位于约束区域之外。 |
4.8 Display(显示)
通过 librosa.display.* 访问函数。
函数 |
功能 |
specshow() |
Display a spectrogram/chromagram/cqt/etc. |
waveplot() |
绘制波形的振幅包络。 |
camp() |
从给定的数据中获取默认的颜色映射。 |
TimeFormatter() |
时间轴的刻度格式化程序。 |
NoteFormatter() |
Notes 的刻度格式。 |
LogHzFormatter() |
用于对数频率的制表程序。 |
ChromaFormatter() |
色度轴的格式化程序。 |
TonnetzFormatter() |
tonnetz 轴的格式化程序。 |
通过 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() |
过零率。 |
4.10 Rhythm features(节奏特征)
函数 |
功能 |
tempogram() |
计算模板图:起始强度包络线的局部自相关。 |
4.11 Feature manipulation(特征操作)
函数 |
功能 |
delta() |
计算增量特性:对输入数据沿选定轴的导数进行局部估计。计算了三角函数的萨维茨基 - 戈莱滤波。 |
stack_memory() |
短期历史嵌入:将数据向量或矩阵与自身的延迟副本垂直连接。 |
4.12 Spectrogram decomposition(谱图分解)
通过 librosa.decompose.* 访问。
函数 |
功能 |
decompose() |
分解一个特征矩阵。 |
hpss() |
Median-filtering harmonic percussive source separation (HPSS). |
nn_filter() |
Filtering by nearest-neighbors. |
4.13 Output(输出)
通过 librosa.ouput.* 来访问。
函数 |
功能 |
annotation() |
保存 3 列格式的注释。 |
time_csv() |
按 CSV 格式保存时间步骤。这可以用来存储打击跟踪器或分割算法的输出。 |
write_wav() |
保存为 wav 文件格式。 |
4.14 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 类型可以表示的最小的数。 |
4.15 Matching(匹配)
函数 |
功能 |
match_intervals() |
将一组时间间隔与另一组时间间隔匹配。 |
match_events() |
将一组事件与另一组事件匹配。 |
4.16 Miscellaneous
函数 |
功能 |
localmax() |
在数组 x 中找到局部最大值。 |
peak_pick() |
使用灵活的启发式算法选择信号中的峰值。 |
函数 |
功能 |
valid_audio() |
验证变量是否包含有效的单声道音频数据。 |
valid_int() |
确保输入值是整型的。 |
valid_intervals() |
确保数组是时间间隔的有效表示。 |
4.18 File operations(文件操作)
函数 |
功能 |
example_audio_file() |
获取包含音频示例文件的路径。 |
find_files() |
获取目录或目录子树中已排序的 (音频) 文件列表。 |