【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 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy19908 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
只睡四小时9 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
东鹏特饮12 小时前
系统运维(传统/通用运维)面试题
开发语言·php
今天要早睡_12 小时前
C++01_入门基础复习
开发语言·c++
黑马程序员毕设13 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
1-1=014 小时前
C# 委托与事件
开发语言·c#
Fuyo_111915 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
武天旭15 小时前
AI安全--AI大模型的毒性偏见与安全对齐实践
人工智能·python·深度学习