【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库还是有点好玩的东西。

相关推荐
寻星探路8 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly20240610 小时前
Bootstrap 警告框
开发语言
2601_9491465310 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧10 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX11 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb010311 小时前
C++课后习题训练记录Day98
开发语言·c++
ValhallaCoder11 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
猫头虎11 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE12 小时前
PHP纹路验证码
开发语言·php
仟濹12 小时前
【Java基础】多态 | 打卡day2
java·开发语言