文章目录
一、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() 获取目录或目录子树中已排序的 (音频) 文件列表。