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

2023-05-16

文章目录

  • 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(使用前将#替换为@)

Python音频信号处理库函数librosa介绍 的相关文章

  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Java实现快速排序

    一 原理 快速排序算法通过多次比较和交换来实现排序 xff0c 其排序流程如下 xff1a 1 首先设定一个分界值 xff0c 通过该分界值将数组分成左右两部分 2 将大于或等于分界值的数据集中到数组右边 xff0c 小于分界值的数据集中到
  • C#,生信软件实践(03)——DNA数据库GenBank格式详解及转为FASTA序列格式的源代码

    1 GenBank 1 1 NCBI 美国国家生物技术信息中心 xff08 美国国立生物技术信息中心 xff09 NCBI xff08 美国国立生物技术信息中心 xff09 是在NIH的国立医学图书馆 xff08 NLM xff09 的一个
  • 【坑】zsh和oh-my-zsh卸载后导致无法登陆

    apt get remove zsh 然后断开终端 xff0c 就再也连不上了 xff0c 崩溃啊 xff01 以下登陆为www用户登陆 各种找 xff0c 到这里 https www cnblogs com EasonJim p 7863
  • 获取最近使用应用列表

    获取最近使用的应用列表需要使用到UsageStatsManager类 xff0c 还需要申请允许防御应用使用情况的权限 private void getPackagesInfo UsageStatsManager manager 61 Us
  • 使用MediaProjectionManager进行截屏

    最近项目中有用到远程截屏并上传截屏文件的需求 一开始使用的是以下方法进行截屏 xff1a private void screenshot 获取屏幕 View dView 61 getWindow getDecorView dView set
  • 安卓TV开发遇到的那些坑

    最近公司需要开发一个TV的luancher xff0c 就是那种纯物理按键的遥控 xff0c 没有触摸屏 xff0c 现在说说我踩得那些坑 xff08 其实布局和代码逻辑和正常的安卓应用差不多 xff09 1 焦点 焦点 焦点 xff0c
  • 安卓TV列表刷新时焦点自动变成第一个

    最近在开发安卓TV项目 xff0c 列表调用notifyDataSetChanged xff08 xff09 方法刷新数据时 xff0c 焦点自动就变成第一个子item去了 xff0c 查了半天发现用notifyItemRangeChang
  • 安卓蓝牙BLE设备通讯发送和接受超过20个字节的问题

    最近做的项目是手机端和BLE设备通讯 xff0c 而BLE设备又做了限制一次包只能传递20个字节的数据 xff0c 多了就得分包发送 xff0c 在这里记录一下如何解决这个问题 xff08 PS xff1a 之前链接什么的回调什么的 就不过
  • 获取最近运行应用方法和杀进程的方法

    最近公司的项目有个需求就是获取最近手机正在运行的进程 xff0c 以及杀掉进程 就是类似于安卓手机中的长按home键的效果 先说说获取最近手机正在运行的进程方法 xff1a 直接上代码 xff0c 代码中有注释 xff1a appbeans
  • 把自己的应用程序push至system/app下,把自己的app改成系统级别的app

    想把一个应用程序放入到系统文件夹下的话 xff0c 手机必须的root的情况下才能push进去 下面我就说说步骤吧 xff1a 1 先把手机用USB和电脑连接 2 如果电脑配置了adb的环境的话直接cmd xff0c 未配置环境的话找到sd
  • ConcurrentModificationException异常出现原因以及解决方法

    今天在开发过程中遇到一个异常叫ConcurrentModificationException xff0c 这个异常用我的白话翻译是叫同时修改异常 这个异常是怎么出现的呢 xff0c 先看看已下的代码 xff1a span class hlj
  • retrofit中使用body标签传RequestBody

    现在的Android开发者基本上都用过retrofit这个第三方网络请求库吧 xff01 xff01 xff01 网络请求中有get post delete和put等等请求方式 现在我们需要用到post请求 xff1a span class
  • SpringBoot配置拦截器拦截器使用

    拦截器介绍 Java中的拦截器是动态拦截 action 调用的对象 xff0c 然后提供了可以在 action 执行前后增加一些操作 xff0c 也可以在 action执行前停止操作 xff0c 功能与过滤器类似 xff0c 但是标准和实现
  • 百度地图上根据经纬度集合绘制行车轨迹

    以下是素材 最近项目中用到了根据一段线路的经纬度集合来在地图上播放该车辆的行驶轨迹的需求 下面我就讲一下我实现步骤 效果图如下 因为制作gif图为了控制大小去掉了很多帧 不必在意这些细节 嘿嘿 1 首先在界面上展示百度地图 这不是废话么 如
  • skip-GANomaly复现总结

    文章目录 skip GANomaly复现总结附MvTec数据集介绍实验结果总结谈谈我对于skip GANomaly的看法最后的感想 代码 skip GANomaly复现总结 附MvTec数据集 链接 xff1a https pan baid
  • YOLOv3 从入门到部署:(五)YOLOv3模型的部署(基于C++ opencv)

    文章目录 YOLOv3 从入门到部署 xff1a xff08 五 xff09 YOLOv3模型的部署 xff08 基于C 43 43 opencv xff09 目录关于opencv的DNN介绍代码讲解效果展示 YOLOv3 从入门到部署 x
  • 基于YOLO-fastest-xl的OCR

    文章目录 基于YOLO fastest xl的OCR项目介绍对于yolo fastest xl的结构的更改运行方法效果总结 基于YOLO fastest xl的OCR github链接https github com qqsuhao yol
  • Pytorch多GPU训练时使用hook提取模型中间层输出时与模型输入张量不在同一个GPU上的解决办法

    Pytorch多GPU训练时使用hook提取模型中间层输出时与模型输入张量不在同一个GPU上的解决办法 通常对于单卡训练的模型 xff0c 使用hook可以较为方便地提取出模型中间层输出 例如我们想要获取自定义模型DBL中的conv2d的输
  • 发布自己的Python包

    文章目录 发布自己的Python包第一步 xff1a 注册Pypi账号第二步 xff1a 准备本地文件第三部 xff1a 构建包并上传 发布自己的Python包 参考https packaging python org en latest
  • Python音频信号处理库函数librosa介绍

    文章目录 Python音频信号处理库函数librosa介绍 部分内容将陆续添加 介绍安装综述 xff08 库函数结构 xff09 Core IO and DSP xff08 核心输入输出功能和数字信号处理 xff09 Audio proce