Python怎样实现音频特征提取?librosa处理教程

来源:建站技术作者:缅甸程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Python怎样实现音频特征提取?librosa处理教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python怎样实现音频特征提取?librosa处理教程》有用,将其分享出去将是对创作者最好的鼓励。

音频特征提取是从原始音频信号中提取具有代表性数值特征的过程,这些特征能够反映音频的声学属性,为后续的音频分析、分类、识别等任务提供数据支撑。Python生态中的librosa库是音频处理领域的常用工具,内置了大量成熟的音频特征计算算法,使用起来简单高效。

Python怎样实现音频特征提取?librosa处理教程

环境准备

首先需要安装librosa库以及其依赖的音频处理相关库,使用pip命令即可完成安装:

# 安装librosa库
pip install librosa
# 安装音频读取依赖库
pip install soundfile

安装完成后,就可以在Python脚本中导入相关模块开始使用。

librosa基础音频读取

提取特征前需要先读取音频文件,librosa提供了load函数来完成音频加载,该函数会自动将音频重采样为默认22050Hz的采样率,同时返回音频时间序列和采样率。

import librosa
import librosa.display
import numpy as np

# 读取音频文件,替换为你的音频路径
audio_path = "test_audio.wav"
# y是音频时间序列,sr是采样率
y, sr = librosa.load(audio_path)
print(f"音频采样率: {sr}")
print(f"音频时长: {len(y)/sr:.2f}秒")

常用音频特征提取方法

1. 梅尔频率倒谱系数(MFCC)

MFCC是最常用的音频特征之一,模拟了人耳的听觉特性,在语音识别、音乐流派分类等场景中应用广泛。librosa的mfcc函数可以直接计算MFCC特征。

# 计算13维MFCC特征
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
print(f"MFCC特征形状: {mfccs.shape}")
# 对MFCC特征做均值统计,得到固定长度的特征向量
mfcc_mean = np.mean(mfccs, axis=1)
print(f"MFCC均值特征: {mfcc_mean}")

2. 频谱质心

频谱质心反映了音频信号的频谱能量集中位置,和声音的明亮度相关,计算方式如下:

# 计算频谱质心
spectral_centroid = librosa.feature.spectral_centroid(y=y, sr=sr)
print(f"频谱质心形状: {spectral_centroid.shape}")
# 取均值作为最终特征
centroid_mean = np.mean(spectral_centroid)
print(f"频谱质心均值: {centroid_mean:.2f}")

3. 过零率

过零率是指音频信号穿越零值的次数,常用于区分清音和浊音,计算代码如下:

# 计算过零率
zero_crossing_rate = librosa.feature.zero_crossing_rate(y)
print(f"过零率形状: {zero_crossing_rate.shape}")
zcr_mean = np.mean(zero_crossing_rate)
print(f"过零率均值: {zcr_mean:.4f}")

4. 色度特征

色度特征反映了音频的谐波内容,和音乐的音高相关,适合用于音乐分析场景。

# 计算色度特征
chroma = librosa.feature.chroma_stft(y=y, sr=sr)
print(f"色度特征形状: {chroma.shape}")
chroma_mean = np.mean(chroma, axis=1)
print(f"色度均值特征: {chroma_mean}")

特征整合与保存

实际项目中通常会将多个特征整合为一个固定长度的特征向量,方便后续输入到机器学习模型中。以下是整合多个特征的示例:

def extract_audio_features(audio_path):
    # 读取音频
    y, sr = librosa.load(audio_path)
    features = []
    # 提取MFCC均值
    mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
    features.extend(np.mean(mfccs, axis=1))
    # 提取频谱质心均值
    centroid = librosa.feature.spectral_centroid(y=y, sr=sr)
    features.append(np.mean(centroid))
    # 提取过零率均值
    zcr = librosa.feature.zero_crossing_rate(y)
    features.append(np.mean(zcr))
    # 提取色度均值
    chroma = librosa.feature.chroma_stft(y=y, sr=sr)
    features.extend(np.mean(chroma, axis=1))
    return np.array(features)

# 测试特征提取
feature_vector = extract_audio_features("test_audio.wav")
print(f"最终特征向量长度: {len(feature_vector)}")
print(f"特征向量内容: {feature_vector}")

注意事项

  • 不同音频的时长可能不同,提取特征时建议对时域特征做统计量统计,保证输出特征长度一致。
  • librosa默认会对音频做单声道转换,如果是多通道音频需要提前处理。
  • 如果音频采样率和默认采样率差异较大,可以在load函数中指定sr参数调整采样率。

Pythonlibrosa音频特征提取MFCC修改时间:2026-07-09 14:36:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。