当前位置: 首页 > news >正文

Python-librosa库提取音频数据的MFCC特征

文章目录

    • MFCC特征
    • 代码分享

MFCC特征

MFCC(Mel-Frequency Cepstral Coefficients)是通过人耳对声音频率的感知方式对音频信号进行处理得到的特征,广泛用于语音识别和音频处理。

代码分享

import os
import librosa
import pywt
import matplotlib.pyplot as plt
import numpy as np
import cv2
from pathlib import Path
from tqdm import tqdm  # 需要安装 tqdm 库
from skimage.transform import resize#数据处理 绘制图形
def process_audio_files(main_folder):main_path = Path(main_folder)output_base = main_path / "MFCC"output_base.mkdir(parents=True, exist_ok=True)# 收集所有音频文件(递归遍历所有子目录)all_audio_files = list(main_path.rglob("*.wav"))total_files = len(all_audio_files)if total_files == 0:print("未找到任何音频文件!")return# 显示总进度条with tqdm(total=total_files, desc="处理进度") as pbar:for file_path in all_audio_files:try:# 获取文件的相对路径relative_path = file_path.relative_to(main_path)# 创建对应的输出目录结构output_subfolder = output_base / relative_path.parentoutput_subfolder.mkdir(parents=True, exist_ok=True)# 读取音频文件audio_files, sr = librosa.load(file_path, sr=None)# 处理音频文件,确保每个音频文件的长度都是固定的target_duration = 20  # 每个音频文件被设置为20秒长y = librosa.util.fix_length(audio_files,size=target_duration * sr)# 计算MFCC# mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=24)spectrograms_base = librosa.feature.melspectrogram(y=y,sr=sr, n_mels=24)spectrograms_dB= librosa.power_to_db(spectrograms_base, ref=np.max)spectrograms_dB_base = librosa.feature.mfcc(S=spectrograms_dB, n_mfcc=24)# print(spectrograms_dB_base.shape)librosa.display.specshow(spectrograms_dB_base)plt.axis('off')  # Turn off axesplt.xticks([])  # Remove x-axis ticksplt.yticks([])  # Remove y-axis ticks# 保存图像并关闭绘图output_path = output_subfolder / f"{file_path.stem}.png"plt.savefig(output_path, dpi=100, pad_inches=0, bbox_inches='tight')plt.close()pbar.update(1)  # 更新进度条# print(f"已处理: {file_path} → {output_path}")except Exception as e:pbar.update(1)  # 即使出错也更新进度条print(f"错误处理 {file_path}: {str(e)}")if __name__ == "__main__":# 安装依赖库(如果未安装)# pip install librosa matplotlib numpy tqdmmain_folder = "你的文件路径"process_audio_files(main_folder)

相关文章:

  • 推荐私有化部署的企业内部通讯软件BeeWorks
  • 短视频矩阵系统贴牌批量剪辑功能开发,支持OEM
  • 反射与注解实现动态功能扩展案例-插件系统
  • 基于RSSI原理的Wi-Fi定位程序,N个锚点(数量可自适应)、三维空间,轨迹使用CKF进行滤波,附完整的代码,可复制粘贴
  • 探索 Redis 缓存对系统性能的提升——项目启动与操作指南
  • 论文导读 - 基于边缘计算、集成学习与传感器集群的便携式电子鼻系统
  • 解构编程语言的基因密码:论数据类型如何被语言系统定义与重塑
  • Kubernetes(k8s)学习笔记(三)--部署 Kubernetes Master
  • uni-app(vue3)动态获取swiper的区域高度以及通过scroll-view实现区域滚动和scroll-view的置顶功能
  • 纷析云开源财务软件:基于Spring Boot的轻量化财务中台实践
  • 2025系统架构师---论企业集成平台的技术与应用
  • 阿里qiankun微服务搭建
  • ShaderToy学习笔记 04.绘制多个3D对象
  • 第一章:User Interface Abstraction
  • C++复习补充 类型转换和RTTI
  • Vue 中局部指令(directives)的用法详解
  • 深入了解指针(6)
  • 微信小程序中基于 SSE 实现轻量级实时通讯 —— 原理、实践与对比分析
  • MySQL5.7.21查询入门
  • Java生成微信小程序码及小程序短链接
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 湖南华容县通报“大垱湖水质受污染”,爆料者:现场已在灌清水
  • 俄罗斯延长非法滞留外国人限期离境时间至9月
  • 找化学的答案,解人类的命题:巴斯夫的“变革者”成长之道
  • 瞄准“美丽健康”赛道,上海奉贤如何打造宜居宜业之城?
  • 人社部:我国劳动力市场潜力足,韧性强