文章目录
- 一、Librosa简介与安装
- 1.1 Librosa是什么
- 1.2 Librosa官网
- 二、Librosa安装
-
- 三、安装ffmpeg
- 3.1 ffmpeg官网下载
- 3.2 ffmpeg安装
- 3.2.1 解压
- 3.2.2 添加环境变量
- 3.2.3 测试ffmpeg是否安装成功
- 四、Librosa 库模块一览
- 4.1 库函数结构
- 4.2 Audio processing(音频处理)
- 4.3 Spectral representations(谱表示)
- 4.4 Magnitude scaling(幅度标度)
- 4.5 Time and frequency conversion(时间和频率转换)
- 4.6 Pitch and tuning(音调和调谐)
- 4.7 Deprecated (moved)(不推荐(移动))
- 4.8 Display(显示)
- 4.9 Feature extraction(特征提取)
- 4.10 Rhythm features(节奏特征)
- 4.11 Feature manipulation(特征操作)
- 4.12 Spectrogram decomposition(谱图分解)
- 4.13 Output(输出)
- 4.14 Utilities(实用功能)
- 4.15 Matching(匹配)
- 4.16 Miscellaneous
- 4.17 Input Validation(输入验证)
- 4.18 File operations(文件操作)
一、Librosa简介与安装
1.1 Librosa是什么
librosa是一个非常强大的python语音信号处理的第三方库,它提供了创建音乐信息检索系统所必需的构造块。
1.2 Librosa官网
https://librosa.org/doc/latest/index.html
二、Librosa安装
2.1 安装Librosa
pip install librosa -i https://pypi.douban.com/simple
会自动安装一些依赖库
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输入
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 轴的格式化程序。 |
4.9 Feature extraction(特征提取)
通过 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() | 使用灵活的启发式算法选择信号中的峰值。 |
4.17 Input Validation(输入验证)
函数 | 功能 |
---|
valid_audio() | 验证变量是否包含有效的单声道音频数据。 |
valid_int() | 确保输入值是整型的。 |
valid_intervals() | 确保数组是时间间隔的有效表示。 |
4.18 File operations(文件操作)
函数 | 功能 |
---|
example_audio_file() | 获取包含音频示例文件的路径。 |
find_files() | 获取目录或目录子树中已排序的 (音频) 文件列表。 |