【python】基于librosa库提取音频特征

一、源码

python 复制代码
import librosa
audio_path = './audio.mp3'
audio, sr = librosa.load(audio_path)
# 提取音频信号的时域特征
amplitude = librosa.amplitude_to_db(librosa.stft(audio), ref=np.max)
# 提取音频信号的频域特征
mfccs = librosa.feature.mfcc(audio, sr=sr)
# 提取音频信号的节奏特征
tempo, beat_frames = librosa.beat.beat_track(audio, sr=sr)

二、介绍

1、librosa.amplitude_to_db

librosa.amplitude_to_db是一个音频处理库librosa中的一个函数,用于将音频信号的幅度转换为分贝(dB)单位的值。在音频处理中,分贝是一种常用的单位,用于表示信号的相对强度。

该函数的输入参数是音频信号的幅度值,可以是单个值或者一个数组。它会将输入的幅度值转换为分贝单位,并返回相应的结果。

该函数的转换公式如下:

dB = 20 * log10(amplitude / ref)

其中,amplitude是输入的幅度值,ref是参考值,默认为1。通过这个公式,函数将输入的幅度值转换为相对于参考值的分贝值。

使用librosa.amplitude_to_db函数可以帮助我们在音频处理中更好地理解和分析音频信号的强度。例如,可以将音频信号转换为分贝单位后,可以更直观地比较不同音频片段的相对强度,或者进行音频特征提取等操作。

2、librosa.feature.mfcc

librosa.feature.mfcc是一个音频特征提取函数,用于计算音频信号的梅尔频率倒谱系数(MFCC)。MFCC是一种常用的音频特征表示方法,广泛应用于语音识别、音乐信息检索等领域。

MFCC的计算过程主要包括以下几个步骤:

  1. 预加重 :对音频信号进行预处理,通过高通滤波器强调高频部分,减小低频部分的能量损失。

  2. 分帧 :将音频信号分成短时帧,通常每帧持续时间为20-40毫秒。

  3. 加窗 :对每一帧的信号应用窗函数,常用的窗函数有汉明窗、哈宁窗等。

  4. 傅里叶变换 :对每一帧的信号进行快速傅里叶变换(FFT),将时域信号转换为频域信号。

  5. 梅尔滤波器组 :将频域信号通过一组梅尔滤波器进行滤波,得到每个滤波器通道的能量。

  6. 对数压缩 :对每个滤波器通道的能量取对数,得到对数能量谱。

  7. 离散余弦变换:对对数能量谱进行离散余弦变换(DCT),得到MFCC系数。

librosa.feature.mfcc函数的输入参数包括音频信号和采样率,可以选择是否进行对数压缩、是否加入能量项等。输出结果是一个矩阵,每一行表示一帧音频的MFCC系数。

3、librosa.beat.beat_track

librosa.beat.beat_track是一个音频处理库librosa中的函数,用于从音频信号中提取节奏信息。它可以自动检测音频中的节拍,并返回每个节拍的时间位置。

三、总结

librosa库还是有点好玩的东西。

相关推荐
大尚来也1 分钟前
PHP 反序列化漏洞深度解析:从原理利用到 allowed_classes 防御实战
android·开发语言·php
雕刻刀4 分钟前
ERROR: Failed to build ‘natten‘ when getting requirements to build wheel
开发语言·python
qq_416018724 分钟前
高性能密码学库
开发语言·c++·算法
何双新5 分钟前
Odoo 技术演进全解析:从 Widget 到 Owl,从 Old API 到声明式 ORM
python
小碗羊肉13 分钟前
【从零开始学Java | 第十八篇】BigInteger
java·开发语言·新手入门
宵时待雨16 分钟前
C++笔记归纳14:AVL树
开发语言·数据结构·c++·笔记·算法
执笔画流年呀30 分钟前
PriorityQueue(堆)续集
java·开发语言
山川行33 分钟前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code
呜喵王阿尔萨斯35 分钟前
C and C++ code
c语言·开发语言·c++
星辰徐哥37 分钟前
C语言游戏开发:Pygame、SDL、OpenGL深度解析
c语言·python·pygame